770 Commits

Author SHA1 Message Date
Sameer Vijaykar
1f251dd67e Default enable WebRTC-IPv6NetworkResolutionFixes
Fully launched on mobile and approved for chrome launch.

Removed tests for feature enablement with field trial.

Bug: webrtc:14334
Change-Id: I7ca7183ff618835fef8c820cfd52863e1c7fa25e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/301163
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#39879}
2023-04-17 20:28:53 +00:00
Harald Alvestrand
4665d60e09 Initialize a test helper class member
This was found to be uninitialized by an internal MSAN bot.

Bug: b/276318905
Change-Id: I0f0742113b6a5eba10ec6f51072510c91bf5676b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/301401
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39871}
2023-04-17 10:40:38 +00:00
Diep Bui
46849fc73c Print discovered network interfaces for debugging ICE_NEVER_CONNECTED endcause.
Bug: webrtc:14334
Change-Id: Iad2f25e44cd3a154d6dceda755696480e2618a93
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/299421
Commit-Queue: Diep Bui <diepbp@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39716}
2023-03-29 11:58:22 +00:00
Sameer Vijaykar
8c3c5a6183 Replace use of test-only connections() with P2PTransportChannel member.
connections() just wraps over the member connections container after the ICE controller refactor cleanup. So remove the indirection.

Bug: webrtc:14367
Change-Id: Ie2dc13bce5fc440cf1e2f0d20499da9adeca8e35
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/294341
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39406}
2023-02-27 16:49:05 +00:00
Sameer Vijaykar
c8b2088b3e Remove unused parameterization from P2PTransportChannelTests.
Parameterization was used to inject field trial for using the active ICE controller. The field trial is not used any more after fully launching the refactor. This simplifies as well as reduces the number of tests.

Bug: webrtc:14367
Change-Id: I48dfb2fc5cc4f1278f203a0b2ebb2131cae64690
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/294320
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#39402}
2023-02-27 14:27:58 +00:00
Sameer Vijaykar
72b11a407a Remove adapter indirection for ICE controller interactions.
This removes (now unused) the legacy ICE controller code paths from P2PTransportChannel.

Bug: webrtc:14367
Change-Id: I53dc7ee46ec844d20331e2622fa99dbe8b740ad6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/294291
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#39398}
2023-02-27 11:58:03 +00:00
Sameer Vijaykar
ef173f02bb Default enable active ICE controller.
Refactor is fully launched on mobile and approved for full launch on chromium.

Bug: webrtc:14367, chromium:1368516
Change-Id: I536f2630887eb187e8f9397ba033dbb65f4acad8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/294281
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39388}
2023-02-24 15:21:15 +00:00
Sameer Vijaykar
c7a0620c98 Add an ICE switch reason for a switch requested by an application.
Also added an enum for unknown reason.

New value uses a macro-like name rather than a constant-like name for consistency.

Bug: chromium:1369096, webrtc:14131
Change-Id: Ib315584ec40d8c1cd9a6f0ff44587c0d92c735d5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/292341
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#39262}
2023-02-06 16:19:49 +00:00
Artem Titov
a617867a45 Reland "Migrate WebRTC documentation to new renderer"
This reverts commit 0f2ce5cc1c779f9bf33f51f29bfffbcbe105d1b1.

Reason for revert: Downstream infrastructure should be ready now

Original change's description:
> Revert "Migrate WebRTC documentation to new renderer"
>
> This reverts commit 3eceaf46695518f25bef43f155f82ed174827197.
>
> Reason for revert:
>
> Original change's description:
> > Migrate WebRTC documentation to new renderer
> >
> > Bug: b/258408932
> > Change-Id: Ib96f39fe0c3912f9746bcc09d079097a145d6115
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290987
> > Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> > Commit-Queue: Artem Titov <titovartem@webrtc.org>
> > Cr-Commit-Position: refs/heads/main@{#39205}
>
> Bug: b/258408932
> Change-Id: I16cb4088bee3fc15c2bb88bd692c592b3a7db9fe
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291560
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Owners-Override: Artem Titov <titovartem@webrtc.org>
> Commit-Queue: Artem Titov <titovartem@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#39209}

Bug: b/258408932
Change-Id: Ia172e4a6ad1cc7953b48eed08776e9d1e44eb074
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291660
Owners-Override: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39231}
2023-01-31 09:30:04 +00:00
Sameer Vijaykar
a2653bc236 Export some more symbols for use in chromium tests.
Bug: chromium:1408420
Change-Id: I4d427dfacf79c3dbbbcd9bf969f1af7fee4a2f67
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291522
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39211}
2023-01-27 10:33:19 +00:00
Artem Titov
0f2ce5cc1c Revert "Migrate WebRTC documentation to new renderer"
This reverts commit 3eceaf46695518f25bef43f155f82ed174827197.

Reason for revert: 

Original change's description:
> Migrate WebRTC documentation to new renderer
>
> Bug: b/258408932
> Change-Id: Ib96f39fe0c3912f9746bcc09d079097a145d6115
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290987
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Commit-Queue: Artem Titov <titovartem@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#39205}

Bug: b/258408932
Change-Id: I16cb4088bee3fc15c2bb88bd692c592b3a7db9fe
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291560
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39209}
2023-01-26 20:19:12 +00:00
Artem Titov
3eceaf4669 Migrate WebRTC documentation to new renderer
Bug: b/258408932
Change-Id: Ib96f39fe0c3912f9746bcc09d079097a145d6115
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290987
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39205}
2023-01-26 14:58:00 +00:00
Sameer Vijaykar
0793ee7552 Remove FakePortAllocator's dependency on ScopedKeyValueConfig.
Breaking this dependency is required for using FakePortAllocator in chromium tests to make the windows component build work.

Bug: chromium:1408420
Change-Id: I4215b92c1d1430156107605e5b054926b30f83f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291114
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#39180}
2023-01-24 08:24:55 +00:00
Mirko Bonadei
62ba379caa Add some RTC_EXPORT needed by Chromium.
These are needed by crrev.com/c/4165083.

Bug: chromium:1369096, webrtc:14131
Change-Id: Id0a46254b46cf866f2f3b7b07b97dc55066c047f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291117
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39165}
2023-01-20 18:29:08 +00:00
Yury Yarashevich
41010f95bb Log resolved & unresolved turn server address as sensitive string.
This should help to debug problems with DNS resolution of turn server
name. E.g. DNS server returns fake IP address to block turn server.

Similar change to stun_port.cc were done in
https://webrtc-review.googlesource.com/c/src/+/215926

Bug: None
Change-Id: If1cc410f4cd0f89620d3678aabf05a0f1b22a393
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290992
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Yury Yarashevich <yura.yaroshevich@gmail.com>
Cr-Commit-Position: refs/heads/main@{#39152}
2023-01-19 18:26:50 +00:00
Florent Castelli
a6b9924988 Remove all usage of //rtc_base target
Bug: webrtc:9838
Change-Id: If813dbb426b4dc848185b64c0349d03fa9c059f2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290986
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39116}
2023-01-16 14:36:06 +00:00
Florent Castelli
a138c6c8a5 Split rtc_base into multiple targets
Keeping the headers to allow compatibility with current users
that expect the headers to be in that target before they are
also updated.

Bug: webrtc:9838
Change-Id: I8b1e88850958e92c043686587a37791f01860220
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290569
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39031}
2023-01-09 12:21:25 +00:00
Jonas Oreland
614da1b1d8 Cleanup Connection message integrity handling
This cl/ clean up the handling of message integrity in Connection.
- Port validates message integrity of REQUESTs,
  using local candidate password.
- Connection validates message integrity of RESPONSEs,
  using remote candidate password.

Bug: webrtc:14578
Change-Id: I6fdb638b52f4fb7a997fd50393f9ed284543beac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290700
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39028}
2023-01-09 10:18:40 +00:00
Harald Alvestrand
70d9e4e02b Don't log PW mismatch messages in production
The STUN message about mismatched passwords is not interesting.
Only emit it in VERBOSE mode when DCHECK is on.

Bug: webrtc:14578
Change-Id: Ie83080d88be6da24e7f2f79d7eb279087f84c2a0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/288740
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38938}
2022-12-21 11:43:05 +00:00
Philipp Hancke
c61312a17b Improve logging of DTLS transport handshake
showing whether the DTLS transport is active and will send
a client hello or not.

BUG=None

Change-Id: If5c631c5e8701b0d1a4bb484467c93027b994ed7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/287863
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#38886}
2022-12-14 07:41:36 +00:00
Tommi
29464b06c5 [TurnPort] Check if a matching connection exists before replying.
Add an override to TurnPort for SendBindingErrorResponse to check
if a matching connection object exists before continuing. This is
needed to match with the check in `TurnPort::DispatchPacket` whereby
we forward calls to `Port` when no matching connections exist.

Bug: chromium:1395625
Change-Id: Idf1f898c2a93de6bc2832268db1cadd52cae23a9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/287223
Reviewed-by: Sameer Vijaykar <samvi@google.com>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38871}
2022-12-12 09:08:23 +00:00
Sameer Vijaykar
def85594ea Resolve TURN hostname specific to network family behind field trial.
Already implemented for STUN hostname resolution, but TURN port resolves hostnames separately. Reusing the field trial key reserved in bugs.webrtc.org/14334 but with a new parameter so as to not affect ongoing rollouts.

Bug: webrtc:14319, webrtc:14131
Change-Id: Idf771fb2f0de7849f8b701be8ee05a98b8d242f3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/285981
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#38811}
2022-12-05 13:34:57 +00:00
Kyutae Lee
7eea667228 Fix bugs in discarding stun address
If mdns obfuscation is enabled, the stun address "MUST NOT be
considered redundant" when it is equal to local socket address.
Reference:
https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-mdns-ice-candidates-03#section-3.1.2.2

This fixes

Bug: webrtc:13426
Change-Id: I28e981fd1b8818f6f8294bc3fedf23b8d9146819
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/285421
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38774}
2022-11-30 13:51:41 +00:00
Harald Alvestrand
e844aad41a Convert StreamInterfaceChannel to new API
Bug: webrtc:14632
Change-Id: I5c78fe6903680c65efde5d09a8988b97256a22ad
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283526
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38642}
2022-11-16 10:01:28 +00:00
Harald Alvestrand
dd4c4068d9 Convert MemoryStream to use new StreamInterface
Bug: webrtc:14632
Change-Id: Id6a7e011a6102e829a14de246d07a9aab1e6934f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283620
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38639}
2022-11-16 09:51:42 +00:00
Harald Alvestrand
11840ce684 Deprecate void* forms of StreamInterface::Read and ::Write
Updates the code to use the new interfaces

Bug: webrtc:14632
Change-Id: I33b2a25b5968de0251e3cbc84076afc013ecef6e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/282680
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38601}
2022-11-10 12:40:20 +00:00
Jonas Oreland
3e7e15d240 Reland "move relay server priority assignment to port_allocator"
This is a reland of commit b395f5bd5c5be7a3b54fc85ca482759a56a0cd6e
Downstream project has been fixed.

Original change's description:
> move relay server priority assignment to port_allocator
>
> which knows more about the internals of ICE.
> Remove the relay server config priority field which was used to
> specify the relative priority of TURN servers. This is now handled
> internally by CreateRelayPortArgs without being exposed.
>
> Also rename BasicPortAllocator::AddTurnServer to
> BasicPortAllocator::AddTurnServerForTesting since it is a test-only
> method.
>
> BUG=webrtc:13195,webrtc:14539
>
> Change-Id: Id36cbf0187b7a84d1a9b53860f31994f3c7589f0
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280224
> Commit-Queue: Philipp Hancke <phancke@microsoft.com>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#38520}

Bug: webrtc:13195,webrtc:14539
Change-Id: I617b611de97e4013c7286e3345073ca7589065c5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/281662
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Philipp Hancke <phancke@microsoft.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38543}
2022-11-03 12:16:08 +00:00
Philipp Hancke
0487c5797a stats: implement candidate-pair lastPacket(Sent|Received)Timestamp
https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatepairstats-lastpacketsenttimestamp
https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatepairstats-lastpacketreceivedtimestamp

which are useful together with the ice-restart-necessary logic mentioned
in
  https://w3c.github.io/webrtc-pc/#dictionary-rtcofferoptions-members

BUG=webrtc:14619

Change-Id: I4a8ab00a37fbd4af8b948720c83787cbdfc6b9a3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/281281
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#38534}
2022-11-02 12:16:21 +00:00
Artem Titov
936c1af16d Revert "move relay server priority assignment to port_allocator"
This reverts commit b395f5bd5c5be7a3b54fc85ca482759a56a0cd6e.

Reason for revert: Breaks downstream project. Jonas will help to reland this CL.

Original change's description:
> move relay server priority assignment to port_allocator
>
> which knows more about the internals of ICE.
> Remove the relay server config priority field which was used to
> specify the relative priority of TURN servers. This is now handled
> internally by CreateRelayPortArgs without being exposed.
>
> Also rename BasicPortAllocator::AddTurnServer to
> BasicPortAllocator::AddTurnServerForTesting since it is a test-only
> method.
>
> BUG=webrtc:13195,webrtc:14539
>
> Change-Id: Id36cbf0187b7a84d1a9b53860f31994f3c7589f0
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280224
> Commit-Queue: Philipp Hancke <phancke@microsoft.com>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#38520}

Bug: webrtc:13195,webrtc:14539
Change-Id: I7ca087a272793908f003cea6c32efe6214e54028
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/281340
Owners-Override: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#38524}
2022-11-01 13:29:28 +00:00
Philipp Hancke
b395f5bd5c move relay server priority assignment to port_allocator
which knows more about the internals of ICE.
Remove the relay server config priority field which was used to
specify the relative priority of TURN servers. This is now handled
internally by CreateRelayPortArgs without being exposed.

Also rename BasicPortAllocator::AddTurnServer to
BasicPortAllocator::AddTurnServerForTesting since it is a test-only
method.

BUG=webrtc:13195,webrtc:14539

Change-Id: Id36cbf0187b7a84d1a9b53860f31994f3c7589f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280224
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38520}
2022-11-01 09:59:37 +00:00
Philipp Hancke
fd91d02210 ice: include tiebreaker in computation of foundation attribute (tests)
split from the actual change for easier review and cherry-picking.

BUG=webrtc:14605

Change-Id: I7dbaf8e1f4a03f35a5d8c4da1a2784b00589bfc3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280680
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38519}
2022-11-01 07:47:23 +00:00
Philipp Hancke
08b882d762 ice: include tiebreaker in computation of foundation attribute
the foundation attribute is currently calculated as
  CRC32(baseaddress, protocol, relayprotocol)
which is a way to satisfy the requirements from
  https://www.rfc-editor.org/rfc/rfc5245#section-4.1.1.3

However, this leaks the base address which defeats the
MDNS obfuscation described in
  https://datatracker.ietf.org/doc/draft-ietf-mmusic-mdns-ice-candidates/
since the CRC32 can be reversed using a table lookup as shown in
  https://github.com/niespodd/webrtc-local-ip-leak/

To defeat that lookup, "seed" the CRC32 with the ICE tie-breaker which is a randomly picked unsigned 64 bit integer described in
  https://www.rfc-editor.org/rfc/rfc5245#section-5.2

The tie-breaker is not known to Javascript and adding it scopes the foundation within the peer connection as described in section 4.1.1.3

To manually test (preferably with a DCHECK for IceTiebreaker() in ComputeFoundation)
- gather candidates twice on https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ and observe that the foundations are not the same after this change
- create two RTCPeerConnections with {iceCandidatePoolSize: 1}, create a datachannel, call setLocalDescription, inspect the candidates and observe that the foundations are not the same after this change.

Unit test changes have been split into a separate CL for easier integration.

BUG=webrtc:14605

Change-Id: I6bbad1635b48997b00ae74d251ae357bf8afd12f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/280621
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38485}
2022-10-27 15:50:02 +00:00
Harald Alvestrand
666c333625 Stop revalidating STUN packets with the wrong password
Investigation showed that a function is revalidating STUN packets
against the wrong password.
This CL also allows absl/strings/escape.h as #include.

Bug: chromium:1177125
Change-Id: Ie068d4c076a5462f2922a012f5e1de23aa6c0b06
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279560
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38438}
2022-10-19 09:38:09 +00:00
Tommi
d806705623 [TurnPort] Bring back stricter assumptions after recent fixes.
This also swithces lifetime management of entries to using
std::unique_ptr.

Bug: chromium:1374310
Change-Id: I5a2c89e9b3bcf7bceec2a4e5347750540ee21e1f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279521
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38432}
2022-10-18 14:04:35 +00:00
Tommi
98a9efaa98 [TurnPort] Keep track of connections in TurnEntry.
Track which connection instances are associated with with TurnEntry
instances. This fixes a bug whereby removing an entry by address that
more than one Connection instances had in common, caused operations
such as SendTo and HandleConnectionDestroyed to fail because no
entry could be found.

Also, as requested: A ham sandwich walks into a bar and orders a beer, bartender says “sorry, we don’t serve food here.”

Bug: chromium:1374310
Change-Id: Ie45a99346f8015b10a212d80fbd32255d1544669
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279264
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38429}
2022-10-18 10:44:28 +00:00
Sameer Vijaykar
f0e65bab0e Accept ArrayView in ICE agent interface where feasible.
Ownership does not need to cross the interface boundary, so ArrayView can be safely accepted in ForgetStateForConnections and PruneConnections.

Bug: webrtc:14131
Change-Id: I18a739aea1dc47976d17925e9bca3461225bf803
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/278629
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38418}
2022-10-17 15:03:33 +00:00
Tommi
44874d1944 Remove TurnAddMultiMapping experiment.
Bug: webrtc:10350
Change-Id: I4991e6bd9f1d4b04863c684c6d01ca264b296aad
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279284
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38414}
2022-10-17 12:32:49 +00:00
Tommi
3c5a1bf8f3 [TurnPort] Update CreateOrRefreshEntry function, step 2.
This removes the deprecated method in favor of the new one
introduced in
https://webrtc-review.googlesource.com/c/src/+/279440

Bug: chromium:1374310
Change-Id: I662d5cad9a48d18d9425e4d2754a966df68f7056
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279441
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38411}
2022-10-17 09:46:10 +00:00
Tommi
a92ba28922 [TurnPort] Fix error return value in TurnPort::SendTo
While looking into chromium:1374310 I noticed that the function was
returning 0 in a particular case. 0 isn't a valid return value as per
this shortened snippet from connection.cc [1] specifically meant to
catch this:

  int sent = port_->SendTo(...);
  if (sent <= 0) {
    RTC_DCHECK(sent < 0);
    error_ = port_->GetError();
    ...

[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/p2p/base/connection.cc;l=1687

Also propagating the socket error value in case of failure.

Bug: chromium:1374310
Change-Id: Ie00f60388d53d4127c1d419ab0352e0574044485
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279282
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38408}
2022-10-17 07:18:28 +00:00
Tommi
9c606497d1 [TurnPort] Check if turn entry was found when deleting a connection.
This is a simple way to avoid crashing, but the underlying issue
of why the entry has been removed, is a bit more complex to fix
and will be fixed in a follow-up CL.

Bug: chromium:1374310
Change-Id: I9dc0cf9e1acdcc3b3a205104346cc835b3f79c1b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279283
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38405}
2022-10-16 21:59:13 +00:00
Tommi
ee0766fcc7 [TurnPort] Update CreateOrRefreshEntry function, step 1.
TurnEntry objects need to be more aware of which specific connection
instances are associated with an entry so that entries don't get
removed only based on the address while connection instances remain.

Bug: chromium:1374310
Change-Id: I8a5d9f70ef9e74497a01e2e2cba924d5e6f518a8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279440
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38404}
2022-10-16 20:58:04 +00:00
Harald Alvestrand
47627626dd STUN: Avoid ICE message revalidation wherever possible.
Also call out the places where it happens explicitly - these are places
that need to be redesigned.

Bug: chromium:1177125
Change-Id: I3237d028dbb22380e8fbf7cedb03e965d1fcf2aa
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279022
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38384}
2022-10-13 10:55:31 +00:00
Mirko Bonadei
5c9b7da038 Add missing dependencies.
Bug: b/251890128
Change-Id: Ia9312797a5552ad1ceb4a80968014b849121a1b9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/278580
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Christoffer Jansson <jansson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38333}
2022-10-10 10:18:37 +00:00
Sameer Vijaykar
7b3d61ccf0 Add test coverage for P2PTransportChannel refactor (#8/8)
This converts all P2PTransportChannel unit tests to parameterized tests, with a string parameter for the field_trials which is used to enable the refactor. This adds a variation of each existing test using the refactored code path.

Tests are initialized twice, once for legacy and refactored path each, to strike a balance between file name length and descriptiveness.

Bug: webrtc:14367, webrtc:14131
Change-Id: I0469550d571ed389804eb486fe5bd22504e59373
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275303
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38162}
2022-09-21 16:49:02 +00:00
Danil Chapovalov
cbad8add12 Delete rtc::Message and rtc::MessageHandler
Bug: webrtc:9702
Change-Id: I5b9a42264b2a84acce9096b21102233b4ed2f5ce
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276261
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38160}
2022-09-21 15:15:30 +00:00
Sameer Vijaykar
52dd1a566a Reland "Add an active ICE controller that wraps a legacy controller (#7/n)"
This is a reland of commit 6326c9c201c7331d68c9beb0a93f6f6e21063cd2

Original change's description:
> Add an active ICE controller that wraps a legacy controller (#7/n)
>
> The wrapping ICE controller will allow existing ICE controller implementations to migrate to the active interface, and eventually deprecate the legacy interface.
>
> Follow-up CL has unit tests for P2PTransportChannel using the new wrapping controller.
>
> Bug: webrtc:14367, webrtc:14131
> Change-Id: I6c517449ff1e503e8268a7ef91afda793723fdeb
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275302
> Reviewed-by: Per Kjellander <perkj@webrtc.org>
> Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
> Commit-Queue: Sameer Vijaykar <samvi@google.com>
> Cr-Commit-Position: refs/heads/main@{#38130}

Bug: webrtc:14367, webrtc:14131
Change-Id: I5662595db1df8c06b3acac9b39749f236906fa7e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276044
Auto-Submit: Sameer Vijaykar <samvi@google.com>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38149}
2022-09-21 11:02:26 +00:00
Sameer Vijaykar
50a2a73ed9 Revert "Add an active ICE controller that wraps a legacy controller (#7/n)"
This reverts commit 6326c9c201c7331d68c9beb0a93f6f6e21063cd2.

Reason for revert: breaks upstream project

Original change's description:
> Add an active ICE controller that wraps a legacy controller (#7/n)
>
> The wrapping ICE controller will allow existing ICE controller implementations to migrate to the active interface, and eventually deprecate the legacy interface.
>
> Follow-up CL has unit tests for P2PTransportChannel using the new wrapping controller.
>
> Bug: webrtc:14367, webrtc:14131
> Change-Id: I6c517449ff1e503e8268a7ef91afda793723fdeb
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275302
> Reviewed-by: Per Kjellander <perkj@webrtc.org>
> Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
> Commit-Queue: Sameer Vijaykar <samvi@google.com>
> Cr-Commit-Position: refs/heads/main@{#38130}

Bug: webrtc:14367, webrtc:14131
Change-Id: I61dd98de62657852068c7566b55f19f662df9ff4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276043
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Auto-Submit: Sameer Vijaykar <samvi@google.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#38131}
2022-09-20 14:37:49 +00:00
Sameer Vijaykar
6326c9c201 Add an active ICE controller that wraps a legacy controller (#7/n)
The wrapping ICE controller will allow existing ICE controller implementations to migrate to the active interface, and eventually deprecate the legacy interface.

Follow-up CL has unit tests for P2PTransportChannel using the new wrapping controller.

Bug: webrtc:14367, webrtc:14131
Change-Id: I6c517449ff1e503e8268a7ef91afda793723fdeb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275302
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#38130}
2022-09-20 13:52:24 +00:00
Sameer Vijaykar
1adcde9dfe Use active ICE controller in P2PTransportChannel with an adapter (#6/n)
Controlled by a field trial, P2PTransportChannel can now use an active ICE controller instead of a legacy ICE controller.

P2PTransportChannel unit tests need non-trivial changes to exercise the refactored code path, so the testing changes are added in a follow-up CL.

Bug: webrtc:14367, webrtc:14131
Change-Id: I00d4930a5692c7d6d331ea9d6c2a2199304e363c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/274701
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38114}
2022-09-19 09:41:30 +00:00
Sameer Vijaykar
282de03603 Fix P2PTransportChannel unit tests to not rely on connections ordering
Tests currently rely on the sorted order of connections held within the ICE controller, which sorts the connections by usability. The internal ordering is not part of the ICE controller contract.

Tests use the ordering as a proxy for certain expectations, so changed the tests to explicitly test the expectations.

Bug: webrtc:14367, webrtc:1413
Change-Id: Iaf33c61f6eb968c2c93a0265b6c48ad6218e23a8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/275304
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Sameer Vijaykar <samvi@google.com>
Cr-Commit-Position: refs/heads/main@{#38088}
2022-09-15 08:15:47 +00:00