387 Commits

Author SHA1 Message Date
Harald Alvestrand
2697ac1a1b Stop an SCTP connection when the DTLS transport closes.
This CL propagates a "closed" signal from DTLS up to the
SCTP section of the data channel controller, where it causes
closing of all open datachannels.

Bug: chromium:1030631, webrtc:10360
Change-Id: I88bb9e1aff5c25f330edfd092ef609d4fcc3a9f8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/162206
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30099}
2019-12-16 14:54:56 +00:00
Sungwoo
d77c829d37 Fix incorrect log message in FilterNetworks function.
This log should print removed elements in 'networks' which pointer to
vector<Network*> really. But it was printing just tailing elements of
the vector. For example, assume that there are 4 elements in 'networks',
and 1st and 3rd elements are removed. Then 'networks' will be changed
like this.

<Before>
[0] id = 1
[1] id = 2
[2] id = 3
[3] id = 4

<After>
[0] id = 2
[1] id = 4

Then this log should print the elements with id=1, id=3 which removed.
But currently it is printing the elements with id=3 and id=4 which
tailing 2 elements of the vector. It's related with how std::remove_if
works. So I replaced it with std::partition.

Bug: none
Change-Id: Idfdae04f2d321212310bddb4d8742ba2dccc4db9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159060
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30082}
2019-12-13 10:22:17 +00:00
Jonas Oreland
9a52bd733c STUN PING request
This patch introduces a new type of STUN ping,
GOOG_PING_REQUEST/RESPONSE which is similar
to a STUN_BINDING but does not transmit any values.

The Connection class automatically sends these if
no STUN attributes has changed since last call to Connection::Ping()
if the remote peer has signaled that it supports it.

BUG=webrtc:11100

Change-Id: Ib1b590f0b90ca6cb56f2eb07cd62f976e246bc8c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159961
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Taylor <deadbeef@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30062}
2019-12-11 14:23:30 +00:00
Ying Wang
ef3998ffd1 Add directive to make webrtc metrics optional.
Bug: webrtc:11144
Change-Id: I4e75e6aec033784685de3670e880bb9f2b6ee8d2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161043
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30040}
2019-12-09 13:55:50 +00:00
Eldar Rello
0095d37137 Replace hostCandidate with address and port in RTCPeerConnectionIceErrorEvent
Bug: chromium:1013564
Change-Id: Ie1bb86ed6a2a7d73fe6ee666f973d809ed05a7ed
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161084
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Eldar Rello <elrello@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#30004}
2019-12-04 13:18:22 +00:00
Jonas Oreland
b5aa0a85f3 Add IceControllerEvent::ICE_CONTROLLER_RECHECK
This patch adds a new enum value in IceControllerEvent::Type,
that allows an IceController to request a recheck without
any of the predefined event occuring.

This patch is a NOP for BasicIceController.

BUG=webrtc:10647

Change-Id: Idf1d0946480437109ff272946679fef559ca7beb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161047
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29976}
2019-12-03 10:17:09 +00:00
Jonas Oreland
d003662b15 Move SendBindingResponse to Connection
This patch moves the SendBindingResponse from Port
to Connection. This is a behavioural NOP, and I don't
understand why it was in Port in the firs place!

Found when working on GOOG_PING.

BUG=webrtc:11100

Change-Id: I0466c5381f08ec4926ca3380e6914f0bc0dfcf63
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161081
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29963}
2019-11-29 16:32:14 +00:00
Jonas Oreland
bfcb6c3f13 Add rtt estimate EventBasedExponentialMovingAverage to Connection
This patch estimates the connection RTT using
EventBasedExponentialMovingAverage. The half time is
set to 500 but can be modified using field trials.

This new metric is currently unused, but will
be used for exploration of of whether it can be used
instead of the existing metric.

Bug: webrtc:11140
Change-Id: I9db93e9b9eb932e3cd18935cd4ce0d90fc1cb293
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161000
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29944}
2019-11-28 09:24:44 +00:00
Jonas Oreland
98e745b302 make Connection::port() protected
This patch makes Connection::port() protected
and add explicit methods for the use cases instead
- network()     - port()->Network()
- generation()  - port()->generation()

This is done to easier mock a Connection.

BUG=webrtc:10647

Change-Id: I5b35477ed9f81d57cd871072874262d0a8af2d4c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160784
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29929}
2019-11-27 11:13:48 +00:00
Bjorn A Mellem
7a9a092708 Delete media transport integration.
MediaTransport is deprecated and the code is unused.

No-Try: True
Bug: webrtc:9719
Change-Id: I5b864c1e74bf04df16c15f51b8fac3d407331dcd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160620
Commit-Queue: Bjorn Mellem <mellem@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29923}
2019-11-26 19:19:36 +00:00
Jonas Oreland
2f74d5f793 Make IceController injectable
This patch is a follow up on
- https://webrtc-review.googlesource.com/c/src/+/158820
- https://webrtc-review.googlesource.com/c/src/+/158205

And makes the IceController injectable into P2PTransportChannel.
This is useful so that one can only modify the behaviour of the
the controller and still use the rest of the functionality of
P2PTransportChannel.

Bug: chromium:1024965
Change-Id: I36a1bc5cb4a60da46935ce8e4ce43e3bbbfeaf6d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160188
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29882}
2019-11-22 19:45:32 +00:00
Jonas Oreland
6031716473 Move IceFieldTrials into own .h-file
Several patches for webrtc:10647 has split the
P2PTransportChannel class/file. This has had the
side effect of it being hard to share the IceFieldTrials-struct.

This patch moves that struct into own file so that can be included
from other components. This patch is a behavioral NOP.

BUG=webrtc:10647

Change-Id: If49cd4d919684a48dde3188a26baf20e4ff2cd8e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160301
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29876}
2019-11-22 15:01:15 +00:00
Patrik Höglund
e43b531266 Nuke p2p/base/stun.h
All downstream users have been moved to the new one.

Bug: webrtc:11091
Change-Id: Ia18d0df94a7b95b1a58b4a53cfb195c61ef59ffd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160201
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29873}
2019-11-22 14:02:10 +00:00
Jonas Oreland
09c452e7ba Split P2PTransportChannel
This patch moves the logic for
- selection of connection to ping
- selection of connection to use
- selection of connection to prune

into own file and puts it behind a new interface called 'IceControllerInterface'.

BUG=webrtc:10647

Change-Id: I10228b3edd361d3200fa4a734d74a319560966c9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158205
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29850}
2019-11-20 19:35:45 +00:00
Patrik Höglund
56d945233d Move stun.h to api/.
We now have two downstream users of stun.h, so it appears to be
generally usable. I put this in a new dir networking/, but I'm open to
suggestions here (maybe some things in api/ should move in there).

I checked what our downstream users are actually using, and it's

cricket::ComputeStunCredentialHash
cricket::<constants>
cricket::TurnMessage
cricket::GetStunErrorResponseType
cricket::StunAttribute::CreateAddress
cricket::StunErrorCodeAttribute
cricket::StunByteStringAttribute
StunAttribute::CreateUnknownAttributes
cricket::TurnErrorType
cricket::StunMessage

I reckoned that was pretty much everything in stun.h, so I didn't
bother splitting it up. They don't use every function and constant
in there, but all _types_ of functions and constants, so for the
sake of coherence I don't think it makes sense to split it.

There's some old stuff in there like GTURN which could arguably
be split out, but it should likely go away soon anyway, so I don't
think it's worth the effort.

Steps:
1) land this
2) update downstream to point to the new header and target
3) remove p2p/base:stun_types.

Bug: webrtc:11091
Change-Id: I1f05bf06055475d25601197ec6fefb8d3b55e8e3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159923
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29822}
2019-11-18 16:11:27 +00:00
Jonas Oreland
313a10ecef p2p_transport_channel_unittest : put frequently used checks into functions.
this patch is puts frequently used check into a set of Check-functions.

the behavior of p2p_transport_channel_unittest is almost unchanged,
the minor change is that when waiting for connection between specific
addresses it waits and does not assume that a particular set of
local/remote addresses will be selected first.

the patch also changes a few EXPECT_ to ASSERT_ since the
tests are not useful where the first EXPECT fails.

BUG=webrtc:10647

Change-Id: Iddcc3c88114db80576e9ebc500572a00dbafdd84
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159882
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29812}
2019-11-18 07:31:24 +00:00
Harald Alvestrand
408cb4bf30 Make SCTPtransport enter "closed" state when DTLStransport does.
Bug: webrtc:11090
Change-Id: I30e0b70387746d6c544ed1818f276569d4258cf4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159888
Reviewed-by: Emad Omara <emadomara@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29810}
2019-11-16 14:56:01 +00:00
Qingsi Wang
25ec8882f7 Make ICE transports injectable.
Bug: chromium:1024965
Change-Id: I4961f50aee34c82701299f59a95cb90d231db6f5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158820
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29807}
2019-11-15 21:31:19 +00:00
Danil Chapovalov
7b46e17c31 In rtc::ByteBuffer drop support for ORDER_HOST as unused
Bug: None
Change-Id: Ideab428b13d981cddf9784cfd07fb7dfb2e914fe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159698
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29803}
2019-11-15 11:48:42 +00:00
Mirko Bonadei
8fa616f3b0 Add 2 more RTC_EXPORT.
The component build test failed close to the end of compilation because
of these two missing symbols, see [1].

[1] - https://ci.chromium.org/p/chromium/builders/try/win_chromium_compile_dbg_ng/435732

Bug: webrtc:9419
Change-Id: Ic46acf1acbf3bc04e7410f8d9858785739ca98d6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159683
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29766}
2019-11-12 09:44:29 +00:00
Niels Möller
191e38fb47 Delete gturn support
Delete enum RelayType and classes RelayPort and RelayServer.

See also PSA: https://groups.google.com/forum/?#!msg/discuss-webrtc/0ROpUXpw3Gs/eikIN-eEBwAJROpUXpw3Gs/eikIN-eEBwAJ

Bug: webrtc:10998
Change-Id: I1eab760dc73df9156cd1224cf99ad4a4c12ed882
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154522
Reviewed-by: Justin Uberti <juberti@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29677}
2019-11-04 08:31:07 +00:00
Honghai Zhang
6981fb5fbd Add support to not use turn server as stun server.
If a stun server is already there, the benefit of adding turn servers as stun servers is small,
and it may create unnecessary stun candidates.

Bug: webrtc:11059
Change-Id: Ia37b43b787180af4d91c1c07c866ccbf1db80262
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158680
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29644}
2019-10-29 19:50:35 +00:00
Harald Alvestrand
5cb7807a36 Implement crypto stats on DTLS transport
Bug: chromium:1018077
Change-Id: I585d4064f39e5f9d268b408ebf6ae13a056c778a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158403
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29628}
2019-10-28 11:30:23 +00:00
Jonas Oreland
1230fb787f ICE : add field trial for initial select dampening
The existing ICE stack will choose *the first* connection
that becomes writable.

It is possible that waiting a fixed time will choose a
better connection, avoiding a switch, and making the experience better
in total.

This patch is add two field trials to *explore*
that dimension. I.e the code will be rolled back once
experiments has been performed.

- initial_select_dampening, delays selection by X ms.
- initial_select_dampening_ping_received, delays selection for
  candidate that has received ping by X ms.

BUG=webrtc:11054

Change-Id: Ifcdde5183f318815e0f5db5802fbf6b542a95f5b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158410
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29623}
2019-10-28 07:57:16 +00:00
Qingsi Wang
fdf54f2256 Stop pairing local relay candidates with remote mDNS candidates.
To avoid IP leak from the CreatePermission request, local relay
candidates must not be paired with remote mDNS candidates, per Section
3.3.2 in draft-ietf-rtcweb-mdns-ice-candidates-04.

Bug: webrtc:11038
Change-Id: I13aada79c812712b850293c7e17094dc8f77105a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157340
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Reviewed-by: Alex Drake <alexdrake@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29546}
2019-10-18 23:36:17 +00:00
Mirko Bonadei
86d053c2db Use source_sets in component builds and static_library in release builds.
Static libraries don't guarantee that an exported symbol gets linked
into a shared library (and in order to support Chromium's component
build mode, WebRTC needs to be linked as a shared library).

Source sets always pass all the object files to the linker.

On the flip side, source_sets link more object files in release builds
and to avoid this, this CL introduces a the GN template "rtc_library" that
expands to static_library during release builds and to source_set during
component builds.

See: https://gn.googlesource.com/gn/+/master/docs/reference.md#func_source_set

Bug: webrtc:9419
Change-Id: I4667e820c2b3fcec417becbd2034acc13e4f04fe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157168
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#29525}
2019-10-17 21:17:18 +00:00
Honghai Zhang
f8998cf8c4 Add a turn port prune policy to keep the first ready turn port.
Bug: webrtc:11026
Change-Id: I6222e9613ee4ce2dcfbb717e2430ea833c0dc373
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155542
Commit-Queue: Honghai Zhang <honghaiz@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29470}
2019-10-14 19:08:23 +00:00
Jonas Oreland
c6404a1f1d Add field trial to reduce STUN pings.
This patch adds field trials for limiting no of STUN pings
- max_outstanding_pings
send this count of outstanding pings (pings w/o any response),
after that never send any before a reply is received.

NOTE:
1) This patch redoes https://webrtc.googlesource.com/src.git/+/0d28972d8f0659ab90cef7fd59ca54fb122b71bc
which was put into the StunRequestManager.
But that mechanism is not used for STUN pings.

2) This patch build on field-trial-parser added in https://webrtc-review.googlesource.com/c/src/+/156083

Bug: webrtc:10282
Change-Id: If2f22d2b61a28598a3aa93781c9857145576b7a1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156162
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29467}
2019-10-14 14:57:17 +00:00
Jonas Oreland
4af78823fa Add feature to skip RELAY to non-RELAY connections
This patch adds a feature enabled using webrtc field trial
that remove connections between RELAY and non-RELAY candidates.

Bug: webrtc:11021
Change-Id: I924076277a843bffc1d25f6de14d2165f7012c4c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156083
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29464}
2019-10-14 13:37:50 +00:00
Henrik Boström
ed8eadcb56 Update RTC_LOGs in DtlsTransport to be able to distinguish errors.
There were two different codepaths that could trigger identical LOGs.

b/136184428

Bug: None
Change-Id: I3297c4e957177c3ffdd4c120cfa1b17d250f0a47
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155582
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29381}
2019-10-04 12:13:52 +00:00
Niels Möller
a8e6f34323 Delete the BasicPortAllocator constructor that enables gturn
Mainly an update of the BasicPortAllocator tests. Other code related
to gturn may be deleted in a followup cl.

Bug: None
Change-Id: I72146c8faf30c1a9d03d320d75af91984f797a7e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153485
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29275}
2019-09-24 07:46:28 +00:00
Mirko Bonadei
317a1f09ed Use std::make_unique instead of absl::make_unique.
WebRTC is now using C++14 so there is no need to use the Abseil version
of std::make_unique.

This CL has been created with the following steps:

git grep -l absl::make_unique | sort | uniq > /tmp/make_unique.txt
git grep -l absl::WrapUnique | sort | uniq > /tmp/wrap_unique.txt
git grep -l "#include <memory>" | sort | uniq > /tmp/memory.txt

diff --new-line-format="" --unchanged-line-format="" \
  /tmp/make_unique.txt /tmp/wrap_unique.txt | sort | \
  uniq > /tmp/only_make_unique.txt
diff --new-line-format="" --unchanged-line-format="" \
  /tmp/only_make_unique.txt /tmp/memory.txt | \
  xargs grep -l "absl/memory" > /tmp/add-memory.txt

git grep -l "\babsl::make_unique\b" | \
  xargs sed -i "s/\babsl::make_unique\b/std::make_unique/g"

git checkout PRESUBMIT.py abseil-in-webrtc.md

cat /tmp/add-memory.txt | \
  xargs sed -i \
  's/#include "absl\/memory\/memory.h"/#include <memory>/g'
git cl format
# Manual fix order of the new inserted #include <memory>

cat /tmp/only_make_unique | xargs grep -l "#include <memory>" | \
  xargs sed -i '/#include "absl\/memory\/memory.h"/d'

git ls-files | grep BUILD.gn | \
  xargs sed -i '/\/\/third_party\/abseil-cpp\/absl\/memory/d'

python tools_webrtc/gn_check_autofix.py \
  -m tryserver.webrtc -b linux_rel

# Repead the gn_check_autofix step for other platforms

git ls-files | grep BUILD.gn | \
  xargs sed -i 's/absl\/memory:memory/absl\/memory/g'
git cl format

Bug: webrtc:10945
Change-Id: I3fe28ea80f4dd3ba3cf28effd151d5e1f19aff89
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153221
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29209}
2019-09-17 15:47:29 +00:00
Patrik Höglund
7d00342f66 Remove old packet socket factory header.
Bug: webrtc:7447
Change-Id: I367e624070561349a2e98c00d1ce97ad8d12edeb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153347
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29207}
2019-09-17 11:21:45 +00:00
Mirko Bonadei
eaaaf41298 Introduce api/crypto/BUILD.gn.
No-Try: True
Bug: webrtc:8733
Change-Id: I8679735be1e5069e371a9f1115a54e897e09964b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152622
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29186}
2019-09-13 17:21:47 +00:00
Mirko Bonadei
fcfeefe033 Move rtc_error.{h,cc} to its own build target.
Bug: webrtc:8733
Change-Id: Idd34d9a88ae62a01b9ea50719872f8188069211e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152320
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29148}
2019-09-11 07:12:22 +00:00
Qingsi Wang
20232a914f Use obfuscated IPs in logging in p2p/ and pc/.
Bug: None
Change-Id: I0e7e76ec2d61a1e2719975701a32c1cfc04f97d5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151960
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Alex Drake <alexdrake@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29103}
2019-09-06 21:51:56 +00:00
Niels Möller
a3baf2a3b1 Add one more BasicPortAllocator constructor
The new constructor takes a NetworkManager and a list of turn servers.
Intended to aid migration away from using the constructor with
additional relay addresses.

Bug: webrtc:10947
Change-Id: If8dcdc24090cc35b929646bc78aa646e8135e4cd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151641
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29095}
2019-09-06 10:52:17 +00:00
Niels Möller
0bd2effb63 Reland "New build target p2p:stun_types"
This is a reland of 5b4fcb5bf69218c2f42ca2b0cada6c15f2f638e9

Original change's description:
> New build target p2p:stun_types
>
> The media:rtc_media_base target needs definitions of various
> stun-related types and constant. With this new smaller target, it no
> longer needs to depend on all of p2p.
>
> Bug: webrtc:8733
> Change-Id: I05910b6915f6d2c96e8f52a017adbc7eb693dca8
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150945
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29036}

Tbr: steveanton@webrtc.org
Bug: webrtc:8733
Change-Id: I1847007ecf29e0e6a27f559b92df632a1cd69280
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151880
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29092}
2019-09-06 10:14:38 +00:00
Patrik Höglund
662e31ffec Prepare to move packet_socket_factory to api/.
I gave up on removing proxy_info, user_agent and tcp_options. I don't
think it's feasible to remove them without removing all the proxy code.
The assumption that you can set the proxy and user agent long after
you have created the factory is entrenched in unit tests and the code
itself. So is the ability to set tcp opts depending on protocol or
endpoint properties.

It may be easier to untangle proxy stuff from the factory later,
when it becomes a more first-class citizen and isn't passed via
the allocator.

Requires https://chromium-review.googlesource.com/c/chromium/src/+/1778870
to land first.

Bug: webrtc:7447
Change-Id: Ib496e2bb689ea415e9f8ec1dfedff13a83fa4a8a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150799
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29091}
2019-09-06 09:09:02 +00:00
Hannes Landeholm
91c824f849 Revert "New build target p2p:stun_types"
This reverts commit 5b4fcb5bf69218c2f42ca2b0cada6c15f2f638e9.

Reason for revert: Breaks build

Original change's description:
> New build target p2p:stun_types
> 
> The media:rtc_media_base target needs definitions of various
> stun-related types and constant. With this new smaller target, it no
> longer needs to depend on all of p2p.
> 
> Bug: webrtc:8733
> Change-Id: I05910b6915f6d2c96e8f52a017adbc7eb693dca8
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150945
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29036}

TBR=steveanton@webrtc.org,mbonadei@webrtc.org,nisse@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:8733
Change-Id: I6e00657a6137ff773325f37ec02ee1014b6fe96b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151740
Reviewed-by: Hannes Landeholm <hnsl@webrtc.org>
Commit-Queue: Hannes Landeholm <hnsl@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29085}
2019-09-06 00:07:06 +00:00
Qingsi Wang
7cdcda9dd5 Use the sanitized pair when surfacing the candidate pair change event.
TBR=andersc@webrtc.org

Bug: None
Change-Id: Ie2c389fe966dada2768e3222e1f8da74e1715568
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150762
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Alex Drake <alexdrake@webrtc.org>
Reviewed-by: Alex Glaznev <glaznev@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29052}
2019-09-03 17:17:49 +00:00
Niels Möller
5b4fcb5bf6 New build target p2p:stun_types
The media:rtc_media_base target needs definitions of various
stun-related types and constant. With this new smaller target, it no
longer needs to depend on all of p2p.

Bug: webrtc:8733
Change-Id: I05910b6915f6d2c96e8f52a017adbc7eb693dca8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150945
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29036}
2019-09-02 13:37:01 +00:00
Niels Möller
8b7c5e41f1 Add empty build target p2p:stun_types
Preparation for cl
https://webrtc-review.googlesource.com/c/src/+/150945.

Bug: webrtc:8733
Change-Id: I98ed03a9117792f372d9c0fb5bc073879b4a18dc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151122
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29033}
2019-09-02 08:42:59 +00:00
Patrik Höglund
a42b63267c Adding CreateTcpClientSocket without user_agent and proxy_info.
This is part of a larger refactoring:

1) Add new method and provide default implementations for the other
   Create* methods (this CL) so they can be removed downstream.
2) Implement new method in Chromium and remove the overrides of the
   other Create* methods from subclasses of PacketSocketFactory.
3) Remove other Create* methods from PacketSocketFactory and make
   the new Create method pure virtual. Make BasicPacketSocketFactory
   take user_agent and proxy_info in the constructor.
4) Move the slimmed-down packet_socket_factory into api/.

Bug: webrtc:7447
Change-Id: I961fcc4451c9fb2bc7a049b8f57d5894209fd262
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150941
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29026}
2019-08-30 14:21:52 +00:00
Jonas Oreland
149dc72dfa Add support for RTCTransportStats.selectedCandidatePairChanges
This patch adds accounting and reporting needed for
newly added RTCTransportStats.selectedCandidatePairChanges,
https://w3c.github.io/webrtc-stats/#dom-rtctransportstats-selectedcandidatepairchanges

a) P2PTransportChannel counts everytime selected_connection_
is modified and reports this counter in the GetStats()-call.
b) RTCStatsCollector puts the counter into the standardized
stats object.

Bug: webrtc:10900
Change-Id: Ibaeca18706b8edcbcb44b0c6f2754854bcb545ba
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149830
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28987}
2019-08-28 13:22:08 +00:00
Jonas Oreland
3c02842f2e Add TURN_LOGGING_ID
This patch adds a new (optional) attribute to TURN_ALLOCATE_REQUEST,
TURN_LOGGING_ID (0xFF05).

The attribute is put into the comprehension-optional range
so that a TURN server should ignore it if it doesn't know if.
https://tools.ietf.org/html/rfc5389#section-18.2

The intended usage of this attribute is to correlate client and
backend logs.

Bug: webrtc:10897
Change-Id: I51fdbe15f9025e817cd91ee8e2c3355133212daa
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149829
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28966}
2019-08-27 07:18:00 +00:00
Qingsi Wang
7627fdd68a Sanitize the address field of peer-reflexive remote candidates.
Per the latest WebRTC stats spec
(https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatestats)
the address field of a peer-reflexive remote candidate should be concealed
until the same address is learnt via addIceCandidate.

This CL also refactors the sanitization-related code paths.

Bug: chromium:968161
Change-Id: I74c5da78232b2f604689867bda2937b8af827c4f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149381
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28909}
2019-08-20 06:29:25 +00:00
Steve Anton
587991c7e1 Remove jeroendb@webrtc.org from OWNERS
Also makes shampson@webrtc.org the primary owner of SCTP.

Bug: None
Change-Id: Ib9ab9718d415f54602fb72f03941b2ca1bef0059
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149941
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Commit-Queue: Seth Hampson <shampson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28907}
2019-08-19 22:49:41 +00:00
Sebastian Jansson
0d1996f6c6 Removes empty p2p/base/transport.h
Bug: webrtc:9883
Change-Id: Ic87a7e2f6aba6b072f87408aa5bbb0d82e555d2d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149822
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28903}
2019-08-19 18:42:29 +00:00
Qingsi Wang
e5defb167a Sanitize the selected candidate pair in the public API.
The public API to obtain the selected candidate pair is changed to
GetSelectedCandidatePair in the ICE transport, and the returned pair
has address-sanitized candidates.

Bug: chromium:993878
Change-Id: I44f9d2385a84f9e22447108be2e57ef9e62671eb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/149080
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28869}
2019-08-15 18:36:35 +00:00