937 Commits

Author SHA1 Message Date
Joachim Bauch
6780c51b23 Use SRTP_AES128_CM_SHA1_80 by default instead of SRTP_AES128_CM_SHA1_32.
A field has been added to "CryptoOptions" to enable SRTP_AES128_CM_SHA1_32
from native apps if really necessary.

R=deadbeef@webrtc.org

Bug: webrtc:7670
Change-Id: I36b6ab3e302fbf3cda2611ff196757e43a56e704
Reviewed-on: https://webrtc-review.googlesource.com/41420
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Joachim Bauch <jbauch@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21952}
2018-02-07 21:56:01 +00:00
Daniel Lazarenko
2870b0a57e Expose a link-local network interfaces enumeration option
The bug 8432 is caused by trying to connect through a
"link-local" interface (IP address 169.254.0.x/16),
which is listed among the iPhone network interfaces.
The bug is not happening if the link-local network interfaces
are skipped in the ICE candidate gethering process.

To control this behaviour an option - disable_link_local_networks -
is added inside the RTCConfiguration.
It is used to set the new BasicPortAllocatorSession flag -
PORTALLOCATOR_DISABLE_LINK_LOCAL_NETWORKS.
The port allocator flag is added if the configuration option is set.

IPIsLinkLocal IPAddress function and its friends (IPIsLoopback, IPIsPrivate)
are refactored to work on both IPv4 and IPv6.
Unit test IPIsLinkLocal.

Bonus: fix a bug in IPIsLinkLocalV6:
take into account just 10 network mask bits instead of 16.

Bug: webrtc:8432
Change-Id: Ibe8f677a36098057b7fcad5c798380727b23359b
Reviewed-on: https://webrtc-review.googlesource.com/36380
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21922}
2018-02-06 19:12:04 +00:00
Jonas Oreland
19651c3ef2 Handle lifetime short than 2 minutes for TURN allocations
This patch modifies behaviour when TurnPort gets a lifetime
back from server that is shorter than 2 minutes.

Before the patch such lifetime resulted in TurnPort not scheduling any
refresh, leading to timeout on the turn allocation.

After then patch lifetime shorter then 2 minutes leads to refresh
after half stipulated lifetime.

BUG=webrtc:8826

Change-Id: I80561100f2307bd9a6a91af0924bb2814102ddd3
Reviewed-on: https://webrtc-review.googlesource.com/46741
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21891}
2018-02-05 13:11:36 +00:00
Qingsi Wang
93a843944a Bind the structured ICE logging with P2PTransportChannel.
This change list passes the instance of RtcEventLog from Peerconnection
down to P2PTransportChannel, and binds the structured ICE logging with
ICE layer objects. Logs of ICE connectivity checks are injected for
candidate pairs.

TBR=terelius@webrtc.org

Bug: None
Change-Id: Ia979dbbac6d31dcf0f8988da1065bdfc3e461821
Reviewed-on: https://webrtc-review.googlesource.com/34660
Commit-Queue: Qingsi Wang <qingsi@google.com>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21884}
2018-02-03 07:06:49 +00:00
Qingsi Wang
9a5c6f8f3f Add the network preference to RTCConfiguration.
The network preference is added to RTCConfiguration and passed to ICE.
ICE considers now the preference set by applications over network
interface types when making decisions in candidate pair switching.

Bug: webrtc:8816
Change-Id: I40d2612705b54c83dd45772ac855808e0a76b1e1
Reviewed-on: https://webrtc-review.googlesource.com/44020
Commit-Queue: Qingsi Wang <qingsi@google.com>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21855}
2018-02-01 19:32:21 +00:00
henrika
79d331b091 Removing henrika from p2p/OWNERS and rtc_base/OWNERS
BUG=NONE

Notry: true
Change-Id: Ieca6cfab5fe549070edf0eab706575b60c25348f
Reviewed-on: https://webrtc-review.googlesource.com/43380
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21803}
2018-01-30 10:16:19 +00:00
Zhi Huang
70b820fefe Implemented the GetRemoteAudioSSLCertificate method.
This method returns the DTLS SSL certificate chain associated with the
audio transport on the remote side. This will become populated once the
DTLS connection with the peer has been completed.

TBR=deadbeef@webrtc.org

Bug: webrtc:8800
Change-Id: Ib90ccb3463415e798c17c187c5bdbfc4da26f11f
Reviewed-on: https://webrtc-review.googlesource.com/44140
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21785}
2018-01-27 23:48:36 +00:00
Mirko Bonadei
65ce31158f Removing useless dependencies on //testing/gmock.
If a WebRTC build target requires gmock it has to include
test/gmock.h and just depend on //test:test_support.

Unfortunately //testtest_support was a leaky abstraction because it
wasn't propagating the correct -I compiler flag. To make everything
work, all the targets that use gmock started also to depend on
//testing/gmock (even if they were not including any gmock header
directly).

This CL makes //testtest_support propagate the include path up in the
dependency chain so it is possible to remove unused dependencies.

Note: all_dependent_configs should probably be used in the original
gmock target. There is an ongoing discussion about it. This CL solves
the problem on WebRTC side and it is forward compatible.

TBR=phoglund@webrtc.org

Bug: webrtc:8603
Change-Id: If08daf2ce9a6431a6e881a236743b4ec33b59ea7
Reviewed-on: https://webrtc-review.googlesource.com/44340
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21776}
2018-01-26 13:34:12 +00:00
Yuwei Huang
b181f71ee7 Don't use link-local networks to determine the lowest cost of networks
On Chrome Remote Desktop for iOS, if all of these are true:
* Enable the PORTALLOCATOR_DISABLE_COSTLY_NETWORKS flag.
* Connect an iPhone to a Mac.
* Turn off WiFi on the iPhone and keep mobile data on.
* Connect to a host on a different network from iPhone.

Then the connection can never succeed. The reason is that iOS uses a
special network interface with link-local IP to communicate with the Mac.
BasicPortAllocator sees that interface and thinks it costs less than the
cellular networks, then it removes all cellular networks. However, that
link-local network cannot connect to a peer on external network.

This CL changes the behavior of the PORTALLOCATOR_DISABLE_COSTLY_NETWORKS
so that it ignores the cost of link-local networks when determining the
lowest network cost.

Bug: webrtc:8780
Change-Id: I9bde50426b356fdbf89d4b826fc7b28c8c523c10
Reviewed-on: https://webrtc-review.googlesource.com/41460
Commit-Queue: Yuwei Huang <yuweih@google.com>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21738}
2018-01-24 00:38:01 +00:00
Qingsi Wang
dbd780992d Replace bind2nd with lambdas in turnport.cc for C++ 17 compatibility.
Bug: webrtc:8779
Change-Id: I0416cd6dff60b840734fb4e236a48ddcd84ef817
Reviewed-on: https://webrtc-review.googlesource.com/40981
Commit-Queue: Qingsi Wang <qingsi@google.com>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21702}
2018-01-19 20:34:22 +00:00
Niels Möller
e2a931886f Delete ConnectionMonitor.
Bug: webrtc:8760
Change-Id: I345659eebc04704bedd46e1b04959cd63785aa62
Reviewed-on: https://webrtc-review.googlesource.com/40201
Reviewed-by: Noah Richards <noahric@chromium.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21667}
2018-01-18 08:03:27 +00:00
Niels Möller
f075c5ff89 Delete obsolete header file transportchannelimpl.h.
Bug: webrtc:8385
Change-Id: I8214e0536b3ec2e54b17b1f38e819929156956fe
Reviewed-on: https://webrtc-review.googlesource.com/38640
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21566}
2018-01-11 08:10:50 +00:00
Per Kjellander
a7f2d84ad1 Revert "Revert "GN rtc_* templates: Set default visibility to webrtc_root + "/*"""
This reverts commit c73e1f437889d882cbf2987f7fb3a029a6150613.

Reason for revert: 
The problem with failed deps in chrome content/renderer had already been fixed in https://webrtc-review.googlesource.com/c/src/+/38660

Original change's description:
> Revert "GN rtc_* templates: Set default visibility to webrtc_root + "/*""
> 
> This reverts commit 588c548657b3ddf76e7b3f241263eef7f5799f16.
> 
> Reason for revert: 
> 
> Breaks Chrome FYI:
> 
> /b/c/b/Linux_Builder/src/buildtools/linux64/gn gen //out/Release --check
>   -> returned 1
> ERROR at //build/split_static_library.gni:12:5: Dependency not allowed.
>     static_library(target_name) {
>     ^----------------------------
> The item //content/renderer:renderer
> can not depend on //third_party/webrtc/media:rtc_internal_video_codecs
> because it is not in //third_party/webrtc/media:rtc_internal_video_codecs's visibility list: [
>   //third_party/webrtc/*
>   //third_party/webrtc_overrides/*
> ]
> 
>  https://logs.chromium.org/v/?s=chromium%2Fbb%2Fchromium.webrtc.fyi%2FLinux_Builder%2F23560%2F%2B%2Frecipes%2Fsteps%2Fgenerate_build_files%2F0%2Fstdout
> 
> Original change's description:
> > GN rtc_* templates: Set default visibility to webrtc_root + "/*"
> > 
> > This means that by default, targets are visible to everything under
> > the WebRTC root, but not visible to anything else.
> > 
> > API targets are manually tagged with visibility "*", so that targets
> > outside the WebRTC tree can see them.
> > 
> > BUG=webrtc:8254
> > 
> > Change-Id: Icdbee6e0d22d93240ff2fb530c8f9dc48e351509
> > Reviewed-on: https://webrtc-review.googlesource.com/24140
> > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> > Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#21548}
> 
> TBR=mbonadei@webrtc.org,kwiberg@webrtc.org
> 
> Change-Id: I06620ce3d6f67482935c22efa231dd6cab91625a
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:8254
> Reviewed-on: https://webrtc-review.googlesource.com/38760
> Reviewed-by: Per Kjellander <perkj@webrtc.org>
> Commit-Queue: Per Kjellander <perkj@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21555}

TBR=mbonadei@webrtc.org,kwiberg@webrtc.org,perkj@webrtc.org

Change-Id: I6f720078ce21bd172e0a6471bae8c4c011e4a657
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8254
Reviewed-on: https://webrtc-review.googlesource.com/38860
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21558}
2018-01-10 15:55:04 +00:00
Per Kjellander
c73e1f4378 Revert "GN rtc_* templates: Set default visibility to webrtc_root + "/*""
This reverts commit 588c548657b3ddf76e7b3f241263eef7f5799f16.

Reason for revert: 

Breaks Chrome FYI:

/b/c/b/Linux_Builder/src/buildtools/linux64/gn gen //out/Release --check
  -> returned 1
ERROR at //build/split_static_library.gni:12:5: Dependency not allowed.
    static_library(target_name) {
    ^----------------------------
The item //content/renderer:renderer
can not depend on //third_party/webrtc/media:rtc_internal_video_codecs
because it is not in //third_party/webrtc/media:rtc_internal_video_codecs's visibility list: [
  //third_party/webrtc/*
  //third_party/webrtc_overrides/*
]

 https://logs.chromium.org/v/?s=chromium%2Fbb%2Fchromium.webrtc.fyi%2FLinux_Builder%2F23560%2F%2B%2Frecipes%2Fsteps%2Fgenerate_build_files%2F0%2Fstdout

Original change's description:
> GN rtc_* templates: Set default visibility to webrtc_root + "/*"
> 
> This means that by default, targets are visible to everything under
> the WebRTC root, but not visible to anything else.
> 
> API targets are manually tagged with visibility "*", so that targets
> outside the WebRTC tree can see them.
> 
> BUG=webrtc:8254
> 
> Change-Id: Icdbee6e0d22d93240ff2fb530c8f9dc48e351509
> Reviewed-on: https://webrtc-review.googlesource.com/24140
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21548}

TBR=mbonadei@webrtc.org,kwiberg@webrtc.org

Change-Id: I06620ce3d6f67482935c22efa231dd6cab91625a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8254
Reviewed-on: https://webrtc-review.googlesource.com/38760
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21555}
2018-01-10 15:14:54 +00:00
Karl Wiberg
588c548657 GN rtc_* templates: Set default visibility to webrtc_root + "/*"
This means that by default, targets are visible to everything under
the WebRTC root, but not visible to anything else.

API targets are manually tagged with visibility "*", so that targets
outside the WebRTC tree can see them.

BUG=webrtc:8254

Change-Id: Icdbee6e0d22d93240ff2fb530c8f9dc48e351509
Reviewed-on: https://webrtc-review.googlesource.com/24140
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21548}
2018-01-10 13:08:11 +00:00
Patrik Höglund
625c3b6c20 Add missing file to p2p.
Bug: None
Change-Id: Ic0c183fb63ba2fdcd07044b7063e96928150884b
Reviewed-on: https://webrtc-review.googlesource.com/37681
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21511}
2018-01-08 08:30:31 +00:00
Oleh Prypin
fd7df98826 Fix sign-compare warnings on win_clang
that appear after clang roll at https://webrtc-review.googlesource.com/35741

Bug: None
Change-Id: I31193491f167e21277b9266b4331ea9212fddcbe
Reviewed-on: https://webrtc-review.googlesource.com/35783
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21421}
2017-12-22 08:59:23 +00:00
Steve Anton
c0ed4db0ba Remove p2p/base/sessiondescription.h forwarding header
Now that downstream projects have been updated to point to
pc/sessiondescription.h, the forwarding header can be removed.

Bug: webrtc:8620
Change-Id: Ia4b4aa05f41a2b6ef948dc140460b71d8db8eb64
Reviewed-on: https://webrtc-review.googlesource.com/35961
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21418}
2017-12-22 00:05:48 +00:00
Oleh Prypin
a40f82438a Explicitly specify is_clang=false for Win MSVC bots
Otherwise they're doing exactly the same as Clang bots.

Also fix 64-bit-specific warnings that have sneaked in because we have been testing MSVC build only on 32-bit for a while.

TBR=ehmaldonado@webrtc.org

Bug: webrtc:8664
Change-Id: I875e568d75aa550726f54650c283b288d3f52012
Reviewed-on: https://webrtc-review.googlesource.com/35160
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21414}
2017-12-21 13:22:40 +00:00
Steve Anton
5adfafdbf6 Make ContentInfo/ContentDescription slightly more ergonomic
This makes the following changes:
- Replaces ContentDescription with its only subclass,
    MediaContentDescription
- Adds helpers to cast a MediaContentDescription to its
    audio, video, and data subclasses.
- Changes ContentInfo.type to a new enum, MediaProtocolType.

Bug: webrtc:8620
Change-Id: I5eb0811cb16a51b0b9d73ecc4fe8edc7037f1aed
Reviewed-on: https://webrtc-review.googlesource.com/35100
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21401}
2017-12-21 01:35:57 +00:00
Taylor Brandstetter
e7f769c440 Remove p2p/base/jseptransport.h.
Was just being kept around until downstream dependents were updated
to include other files.

BUG=None

Change-Id: I26f0bea83c026be8a50a259c229ef8e7445825ad
Reviewed-on: https://webrtc-review.googlesource.com/35009
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21395}
2017-12-20 18:28:36 +00:00
Steve Anton
4ab68eec96 Move sessiondescription.h/cc from p2p/base to pc/
SDP is a detail of PeerConnection and is not used by anything in p2p, so
it belongs in the pc/ directory. This also allows
MediaContentDescription to be inlined in the future.

Bug: webrtc:8620
Change-Id: I38b65ede9942e29eb15035ab29f2be988da1e5ce
Reviewed-on: https://webrtc-review.googlesource.com/33781
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21376}
2017-12-20 00:21:52 +00:00
Taylor Brandstetter
6e2e7ce419 Reland "Move JsepTransport from p2p/base to pc/."
This is a reland of 4770fd935ac92400487bddd3b755753572e6d692
Original change's description:
> Move JsepTransport from p2p/base to pc/.
> 
> The JsepTransport class is moved to pc/ and the utility methods and
> enums are moved to where they are used.
> 
> With JsepTransport moved to pc/, JsepTransport can depend on objects in
> pc/ including RtpTranport, SrtpTransport etc.
> 
> Forked from https://webrtc-review.googlesource.com/c/src/+/31762/7
> 
> Bug: webrtc:8636
> Change-Id: I4e8569fe3012946e87deb280f6139f0fd98de34d
> Reviewed-on: https://webrtc-review.googlesource.com/33701
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
> Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21333}

Bug: webrtc:8636
Change-Id: Ibce42be898b96dd8e0266b595611d2ffc86581a8
Reviewed-on: https://webrtc-review.googlesource.com/34586
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21371}
2017-12-19 20:50:41 +00:00
Jonas Oreland
202994ca64 This is a recommit of
https://webrtc.googlesource.com/src.git/+/26246cac660a95f439b7d1c593edec2929806d3f
that was reverted due to compile error on windows.

Changes since last is an addition of a cast to uint16_t in stun.cc:1018.

---

Add RelayPortFactoryInterface that allows for custom relay (e.g turn) ports

This patch adds a RelayPortFactoryInterface that allows
for custom relay ports. The factor is added as optional argument
to BasicPortAlloctor. If none is provided a default implementation
that mimics existing behavior is created.

The patch also adds 2 stun functions, namely to copy a
StunAttribute and to remove StunAttribute's from a StunMessage.

Bug: webrtc:8640
Change-Id: If23638317130060286f576c94401de55c60a1821
Reviewed-on: https://webrtc-review.googlesource.com/34181
Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21345}
2017-12-19 07:09:19 +00:00
Oleh Prypin
8424acdde3 Revert "Move JsepTransport from p2p/base to pc/."
This reverts commit 4770fd935ac92400487bddd3b755753572e6d692.

Reason for revert: breaks downstream projects

Original change's description:
> Move JsepTransport from p2p/base to pc/.
> 
> The JsepTransport class is moved to pc/ and the utility methods and
> enums are moved to where they are used.
> 
> With JsepTransport moved to pc/, JsepTransport can depend on objects in
> pc/ including RtpTranport, SrtpTransport etc.
> 
> Forked from https://webrtc-review.googlesource.com/c/src/+/31762/7
> 
> Bug: webrtc:8636
> Change-Id: I4e8569fe3012946e87deb280f6139f0fd98de34d
> Reviewed-on: https://webrtc-review.googlesource.com/33701
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
> Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21333}

TBR=steveanton@webrtc.org,deadbeef@webrtc.org,pthatcher@webrtc.org

Change-Id: Ia72c6d7f185a95b21fd0aec90e7fdc00cb1fb423
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8636
Reviewed-on: https://webrtc-review.googlesource.com/34600
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21335}
2017-12-18 21:00:05 +00:00
Taylor Brandstetter
4770fd935a Move JsepTransport from p2p/base to pc/.
The JsepTransport class is moved to pc/ and the utility methods and
enums are moved to where they are used.

With JsepTransport moved to pc/, JsepTransport can depend on objects in
pc/ including RtpTranport, SrtpTransport etc.

Forked from https://webrtc-review.googlesource.com/c/src/+/31762/7

Bug: webrtc:8636
Change-Id: I4e8569fe3012946e87deb280f6139f0fd98de34d
Reviewed-on: https://webrtc-review.googlesource.com/33701
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21333}
2017-12-18 18:59:43 +00:00
Taylor Brandstetter
74cefe195e Removing dependency on JsepTransport from DtlsTransport tests.
The DtlsTransport tests worked by relying on JsepTransport (a helper
class used by higher layers to set everything up in response to SDP).
dtlstransport_unittest has been switched to just calling SetSslRole and
SetRemoteFingerprint directly instead, which were really the only parts
that were necessary.

Some refactoring was also done, and some test coverage was moved to
jseptransport_unittest. jseptransport_unittests has more coverage to
ensure that negotiated parameters are propagated to the DtlsTransport
underneath, which were previously covered by the tests in
dtlstransport_unittest. It also has a test that covers RTP/RTCP not
being multiplexed, which dtlstransport_unittests really doesn't need
to be concerned about.

BUG=NONE

Change-Id: I1d67e9a06486ade39a255555af4052d76191d238
Reviewed-on: https://webrtc-review.googlesource.com/32941
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21309}
2017-12-15 21:06:17 +00:00
Guido Urdaneta
f1a7a8c602 Revert "Add RelayPortFactoryInterface that allows for custom relay (e.g turn) ports"
This reverts commit 26246cac660a95f439b7d1c593edec2929806d3f.

Reason for revert: Introduces compile failure on MSVC, which is preventing rolls into Chromium.

Sample errors:
[12263/40346] CXX obj/third_party/webrtc/p2p/rtc_p2p/stun.obj
FAILED: obj/third_party/webrtc/p2p/rtc_p2p/stun.obj 
ninja -t msvc -e environment.x64 -- E:\b\c\goma_client/gomacc.exe "e:\b\c\win_toolchain\vs_files\a9e1098bba66d2acccc377d5ee81265910f29272\vc\tools\msvc\14.11.25503\bin\hostx64\x64/cl.exe" /nologo /showIncludes  @obj/third_party/webrtc/p2p/rtc_p2p/stun.obj.rsp /c ../../third_party/webrtc/p2p/base/stun.cc /Foobj/third_party/webrtc/p2p/rtc_p2p/stun.obj /Fd"obj/third_party/webrtc/p2p/rtc_p2p_cc.pdb"
../../third_party/webrtc/p2p/base/stun.cc(1018): error C2220: warning treated as error - no 'object' file generated
../../third_party/webrtc/p2p/base/stun.cc(1018): warning C4267: 'argument': conversion from 'size_t' to 'uint16_t', possible loss of data
  

Original change's description:
> Add RelayPortFactoryInterface that allows for custom relay (e.g turn) ports
> 
> This patch adds a RelayPortFactoryInterface that allows
> for custom relay ports. The factor is added as optional argument
> to BasicPortAlloctor. If none is provided a default implementation
> that mimics existing behavior is created.
> 
> The patch also adds 2 stun functions, namely to copy a
> StunAttribute and to remove StunAttribute's from a StunMessage.
> 
> Bug: webrtc:8640
> Change-Id: I59bd51f0f5e2f8c187dff9fcf003a24c35ed037f
> Reviewed-on: https://webrtc-review.googlesource.com/32600
> Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
> Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21267}

TBR=jonaso@webrtc.org,pthatcher@webrtc.org

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

Bug: webrtc:8640
Change-Id: Idf83a1111727d2b5188b9c123f7471be7e99e973
Reviewed-on: https://webrtc-review.googlesource.com/33600
Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
Commit-Queue: Guido Urdaneta <guidou@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21304}
2017-12-15 18:34:57 +00:00
Patrik Höglund
3e113438b1 Fix circular dependencies in webrtc_common.
One reason for the circular deps is that common_types.h is a
historical dumping ground for various structs and defines that
are believed to be generally useful. I tried moving things out
that did not appear to be used downstream (StreamCounters,
RtpCounters etc) and moved the things that seemed used
(RtpHeader + supporting structs) to a new file api/rtp_headers.h.
This makes their place in the api more clear while moving out
the things that don't belong in the API in the first place.

I had to extract out typedefs.h from webrtc_common to resolve
another circular dependency. I believe checks includes typedefs,
but common depends on checks.

Bug: webrtc:7745
Change-Id: I725d49616b1ec0cdc8b74be7c078f7a4d46f084b
Reviewed-on: https://webrtc-review.googlesource.com/33001
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21295}
2017-12-15 14:33:26 +00:00
Jonas Oreland
26246cac66 Add RelayPortFactoryInterface that allows for custom relay (e.g turn) ports
This patch adds a RelayPortFactoryInterface that allows
for custom relay ports. The factor is added as optional argument
to BasicPortAlloctor. If none is provided a default implementation
that mimics existing behavior is created.

The patch also adds 2 stun functions, namely to copy a
StunAttribute and to remove StunAttribute's from a StunMessage.

Bug: webrtc:8640
Change-Id: I59bd51f0f5e2f8c187dff9fcf003a24c35ed037f
Reviewed-on: https://webrtc-review.googlesource.com/32600
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21267}
2017-12-14 08:24:11 +00:00
Patrik Höglund
a8005cfd8b Fix circular dependencies between optional, array_view, and rtc_base.
This splits things out of rtc_base and makes dependencies explicit.

Bug: webrtc:6828
Change-Id: Id521896c3c43595349021c857bec216e429a0c8d
Reviewed-on: https://webrtc-review.googlesource.com/32780
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21264}
2017-12-14 06:49:11 +00:00
Patrik Höglund
d37709b659 Revert "Fix circular dependencies between optional, array_view, and rtc_base."
This reverts commit a9e0924fa7688c4e4558e179c6608ce1093e15f8.

Reason for revert: Breaks because of RTC_LAST_SYSTEM_ERROR

Original change's description:
> Fix circular dependencies between optional, array_view, and rtc_base.
> 
> This splits things out of rtc_base and makes dependencies explicit.
> 
> Bug: webrtc:6828
> Change-Id: Ib813c7bd9e4de7ab015acb917bc09ee7204ba7bd
> Reviewed-on: https://webrtc-review.googlesource.com/31940
> Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21245}

TBR=phoglund@webrtc.org,kwiberg@webrtc.org

Change-Id: I1a5dcf2223f00ae7c46f9f2a12b990ab3a84397d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:6828
Reviewed-on: https://webrtc-review.googlesource.com/32760
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21251}
2017-12-13 14:56:33 +00:00
Patrik Höglund
a9e0924fa7 Fix circular dependencies between optional, array_view, and rtc_base.
This splits things out of rtc_base and makes dependencies explicit.

Bug: webrtc:6828
Change-Id: Ib813c7bd9e4de7ab015acb917bc09ee7204ba7bd
Reviewed-on: https://webrtc-review.googlesource.com/31940
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21245}
2017-12-13 13:44:21 +00:00
Steve Anton
6c38cc7c9e Fix cpplint errors in p2p/
Bug: webrtc:5273
Change-Id: Ida3c2ca1bbb611026f34d7144db9ec24840bf7fb
Reviewed-on: https://webrtc-review.googlesource.com/26444
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21133}
2017-12-06 21:33:36 +00:00
Steve Anton
3828c06a58 Replace cricket::ContentAction with webrtc::SdpType
Bug: webrtc:8613
Change-Id: I9bce2b9d8c8445d2fa1b9f60b06596a5621ebc2f
Reviewed-on: https://webrtc-review.googlesource.com/29460
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21130}
2017-12-06 19:40:16 +00:00
Steve Anton
5c8231c400 Fix cpplint errors in pseudotcp/test
Bug: webrtc:5273
Change-Id: I09181651c35087b6403c04b6fe542b3e80b13fab
Reviewed-on: https://webrtc-review.googlesource.com/26443
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21129}
2017-12-06 19:25:56 +00:00
Steve Anton
cc65bd018d Run clang format on pseudotcp/test
Bug: webrtc:5273
Change-Id: Ib2e5b749951c805417fd50022172c604a4fe241b
Reviewed-on: https://webrtc-review.googlesource.com/27122
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21128}
2017-12-06 18:36:36 +00:00
Steve Anton
babf91738c Fix cpplint errors in port/port_unittest
Bug: webrtc:5273
Change-Id: Id76af16956e5c25a7f897a8e36e6883616387676
Reviewed-on: https://webrtc-review.googlesource.com/26442
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20942}
2017-11-29 19:57:09 +00:00
Zhi Huang
cd3fc5d90c Use the DtlsSrtpTransport in BaseChannel.
The DtlsSrtpTransport takes the reponsiblity of setting up DTLS-SRTP from
the BaseChannel.

The BaseChannel doesn't handle the signals from the P2P layer transport anymore.
The RtpTransport handles the signals from the PacketTransportInternal and the
DtlsSrtpTransport handles the DTLS-specific signals and determines when to extract
the keys and setting the parameters.

In channel_unittests.cc, call from DTLS to SDES is expected to fail since the
fallback from DTLS to SDES is not supported.

Bug: webrtc:7013
Change-Id: I0a54e017986f5a8ae9710e79643a4651bef3c38f
Reviewed-on: https://webrtc-review.googlesource.com/24702
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20941}
2017-11-29 19:38:39 +00:00
Steve Anton
e932457201 Fix cpplint errors in p2ptransportchannel/test
Bug: webrtc:5273
Change-Id: Ib6f93295add4d657dc96d1303b2926e2b2cb2a09
Reviewed-on: https://webrtc-review.googlesource.com/26441
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20940}
2017-11-29 18:46:31 +00:00
Oskar Sundbom
903dcd733a Optional: Use nullopt and implicit construction in /p2p
Changes places where we explicitly construct an Optional to instead use
nullopt or the requisite value type only.

This CL was uploaded by git cl split.

Bug: None
Change-Id: Ia65be19b24c93db360a313f82a84bfae1a49bf2d
Reviewed-on: https://webrtc-review.googlesource.com/23605
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20929}
2017-11-29 11:13:39 +00:00
Karl Wiberg
e40468ba3d Move some numeric utility code from rtc_base/ to rtc_base/numerics/
Specifically, I'm moving

  safe_compare.h
  safe_conversions.h
  safe_minmax.h

They shouldn't be part of the API, and moving them to an appropriate
subdirectory of rtc_base/ is a good way to keep track of that.

BUG=webrtc:8445

Change-Id: I458531aeb30bcf4291c4bec3bf22a2fffbf054ff
Reviewed-on: https://webrtc-review.googlesource.com/20860
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20829}
2017-11-22 11:21:47 +00:00
Zhi Huang
f2d7beb1d4 Created the DtlsSrtpTransport.
The DtlsSrtpTransport is designed to take DTLS responsibilities from BaseChannel.
DtlsSrtpTransport is responsible for exporting keys from DtlsTransport
and setting up the wrapped SrtpTransport.

The DtlsSrtpTransport is not hooked up to BaseChannel yet in this CL.

Bug: webrtc:7013
Change-Id: I318c00dadf9b1e033ec842de6e1536e9227ab713
Reviewed-on: https://webrtc-review.googlesource.com/6700
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20804}
2017-11-20 23:18:22 +00:00
Zhi Huang
801b868bd8 Remove the CA_UPDATE and related code.
The downstream application doesn't use CA_UPDATE and the related code are
removed to simplify the BaseChannel.

TBR=pthatcher@webrtc.org

Bug: webrtc:8521
Change-Id: I9adc1539db7feb7b5c3aafba7a2be7100f2c068a
Reviewed-on: https://webrtc-review.googlesource.com/22205
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20693}
2017-11-16 01:46:02 +00:00
Patrik Höglund
7aee3d538c Fix ortc_api circular deps.
This will help keep ortc dependencies clean in the future, since
gn --check forces us to depend on components from which we include
headers.

cryptoparams.h moves into api/, but ortc appears to think it
should be there anyway. We could consider moving it into the ortc/ api,
but it doesn't appear to be specific to ortc.

Bug: webrtc:6828
Change-Id: Iddae438d10b5e84b2fbc52565364319e20f90613
Reviewed-on: https://webrtc-review.googlesource.com/22660
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20686}
2017-11-15 13:31:51 +00:00
Zhi Huang
942bc2e4b9 Reland: Replaced the SignalSelectedCandidatePairChanged with a new signal.
|packet_overhead| field is added to rtc::NetworkRoute structure.

In PackTransportInternal:
1. network_route() is added which returns the current network route.
2. debug_name() is removed.
3. transport_name() is moved from DtlsTransportInternal and
IceTransportInternal to PacketTransportInternal.

When the selected candidate pair is changed, the P2PTransportChannel
will fire the SignalNetworkRouteChanged instead of
SignalSelectedCandidatePairChanged to upper layers.

The Rtp/SrtpTransport takes the responsibility of calculating the
transport overhead from the BaseChannel so that the BaseChannel
doesn't need to depend on P2P layer transports.

TBR=pthatcher@webrtc.org

Bug: webrtc:7013
Change-Id: If9928b25a7259544c2d9c42048b53ab24292fc67
Reviewed-on: https://webrtc-review.googlesource.com/22767
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20664}
2017-11-13 22:50:11 +00:00
Zhi Huang
8c316c1a89 Revert "Replaced the SignalSelectedCandidatePairChanged with a new signal."
This reverts commit 71677452f9cf210aa98162c6f4bd8d339e625337.

Reason for revert: Broke Chromium.

Original change's description:
> Replaced the SignalSelectedCandidatePairChanged with a new signal.
> 
> |transport overhead| field is added to rtc::NetworkRoute structure.
> 
> In PackTransportInternal:
> 1. network_route() is added which returns the current network route.
> 2. debug_name() is removed.
> 3. transport_name() is moved from DtlsTransportInternal and
>    IceTransportInternal to PacketTransportInternal.
> 
> When the selected candidate pair is changed, the P2PTransportChannel
> will fire the SignalNetworkRouteChanged instead of
> SignalSelectedCandidatePairChanged to upper layers.
> 
> The Rtp/SrtpTransport takes the responsibility of calculating the
> transport overhead from the BaseChannel so that the BaseChannel
> doesn't need to depend on P2P layer transports.
> 
> Bug: webrtc:7013
> Change-Id: I60d30d785666a50a95052d00bf08f829d8f57e9c
> Reviewed-on: https://webrtc-review.googlesource.com/13520
> Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
> Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20661}

TBR=steveanton@webrtc.org,zhihuang@webrtc.org,pthatcher@webrtc.org

Change-Id: Ie0c76786855b65bb8caba7065593c961e4bf9de7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:7013
Reviewed-on: https://webrtc-review.googlesource.com/22764
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20662}
2017-11-13 21:13:55 +00:00
Zhi Huang
71677452f9 Replaced the SignalSelectedCandidatePairChanged with a new signal.
|transport overhead| field is added to rtc::NetworkRoute structure.

In PackTransportInternal:
1. network_route() is added which returns the current network route.
2. debug_name() is removed.
3. transport_name() is moved from DtlsTransportInternal and
   IceTransportInternal to PacketTransportInternal.

When the selected candidate pair is changed, the P2PTransportChannel
will fire the SignalNetworkRouteChanged instead of
SignalSelectedCandidatePairChanged to upper layers.

The Rtp/SrtpTransport takes the responsibility of calculating the
transport overhead from the BaseChannel so that the BaseChannel
doesn't need to depend on P2P layer transports.

Bug: webrtc:7013
Change-Id: I60d30d785666a50a95052d00bf08f829d8f57e9c
Reviewed-on: https://webrtc-review.googlesource.com/13520
Commit-Queue: Zhi Huang <zhihuang@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20661}
2017-11-13 20:57:31 +00:00
Mirko Bonadei
61a7b141eb Removing conditional visibility.
Conditional visibility is complex to maintain and it is not well
supported by other build systems.

This CL removes it and falls back on the more relaxed visibility value
("*" in this case).
It is not a problem because the targets that are using conditional
visibility are all marked as "testonly" and this is probably enough to
keep the build graph clean.

Bug: None
Change-Id: I2d2b5ac9a02d08c2863950116db455976ee1459c
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/14902
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20658}
2017-11-13 15:39:11 +00:00
Patrik Höglund
ada394b9c0 Remove p2p/base/candidate.h
This file has moved to api/candidate.h.

Bug: webrtc:7504
Change-Id: Ic008f6277b2c2256776e0da69b903842103b1c29
Reviewed-on: https://webrtc-review.googlesource.com/22002
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20643}
2017-11-13 10:11:48 +00:00