496 Commits

Author SHA1 Message Date
pthatcher
1749bc372e Use fake clock in some more networks tests.
BUG=b/34822484

Review-Url: https://codereview.webrtc.org/2680233002
Cr-Commit-Position: refs/heads/master@{#16502}
2017-02-08 21:18:00 +00:00
nisse
c16fa5ea69 Replace all use of the VERIFY macro.
Replaced by assigning value to a local variable, followed by a DCHECK.
Also deletes dead test code under the always false TEST_DIGEST define.

BUG=webrtc:6424

Review-Url: https://codereview.webrtc.org/2623473004
Cr-Commit-Position: refs/heads/master@{#16476}
2017-02-07 15:18:43 +00:00
skvlad
4b512d7e0c Fix Chromium FYI bot
Fixes the Chromium FYI breakage introduced by https://codereview.webrtc.org/2670113002

BUG=webrtc:7099
R=deadbeef@webrtc.org

Review-Url: https://codereview.webrtc.org/2677613002 .
Cr-Commit-Position: refs/heads/master@{#16427}
2017-02-03 02:22:46 +00:00
skvlad
d030912de4 Pick the DTLS handshake timeout based on the ICE RTT estimate
This CL replaces the previously-hardcoded DTLS timeout value of 50 ms with one that is picked dynamically as 2x ICE RTT (clamped between 50 and 3000 ms to keep it reasonable).

No tests yet - I'm working on these, but sending out this CL early to get feedback. I've tested it manually and on slow networks it results in successful DTLS setup in a single attempt - instead of clogging up the slow link with multiple retransmissions as done previosly.

BUG=webrtc:7099

Review-Url: https://codereview.webrtc.org/2670113002
Cr-Commit-Position: refs/heads/master@{#16426}
2017-02-03 01:18:37 +00:00
skvlad
5107246d4b Allow applications to limit the ICE check rate through RTCConfiguration
If an application sets a non-null value in RTCConfiguration.iceCheckMinInterval, we do not sent STUN pings more often than that. This is useful for bandwidth constrained scenarios.

This CL also increases the maximum STUN ping timeout to 60 seconds up from its previous value of 5 (which meant that a ping response received 5 seconds later would not be counted), and allows the RTT estimate to go up to 60 seconds from its previous limit of 3. RTTs above 3 seconds are possible on mobile links. (webrtc:7109)

This CL was originally written by pthatcher@, I am just submitting it after a minor cleanup.

BUG=webrtc:7082, webrtc:7109

Review-Url: https://codereview.webrtc.org/2670053002
Cr-Commit-Position: refs/heads/master@{#16421}
2017-02-02 19:50:14 +00:00
nisse
cc99bc25d8 Change StunMessage::AddAttribute return type from bool to void.
Proper error handling was missing, using VERIFY to crash in debug
builds, while release builds would ignore the error and leak the
attribute memory. The check of attribute type consistency was changed
to a RTC_DCHECK.

Also removes a large number of uses of the deprecated VERIFY macro.

BUG=webrtc:6424

Review-Url: https://codereview.webrtc.org/2665343002
Cr-Commit-Position: refs/heads/master@{#16413}
2017-02-02 09:31:30 +00:00
nisse
7d2542623a Delete unneeded includes of base/common.h.
Bulk of the changes were done using

   git grep -l '#include "webrtc/base/common.h"' | \
     xargs sed -i '\,^#include.*webrtc/base/common\.h,d'

followed by adding back the include in the few places where it is
still needed, and in one case (pseudotcp.cc) instead deleting its use
of RTC_UNUSED.

BUG=webrtc:6424

Review-Url: https://codereview.webrtc.org/2644103002
Cr-Commit-Position: refs/heads/master@{#16263}
2017-01-25 09:47:24 +00:00
deadbeef
f534659ee6 Adding ability for BaseChannel to use PacketTransportInterface.
... As opposed to DtlsTransportInternal.

The code is suboptimal right now, storing two pointers to the different
interfaces. This will all be cleaned up when we have an "RtpTransport"
abstraction that BaseChannel can use.

This CL also cleans up the "fake transport" classes a bit, and gives
them their own header files.

BUG=None

Review-Url: https://codereview.webrtc.org/2648233003
Cr-Commit-Position: refs/heads/master@{#16258}
2017-01-25 05:51:21 +00:00
deadbeef
1b54a5f018 Relanding: Removing #defines previously used for building without BoringSSL/OpenSSL.
These defines don't work any more, so they only cause confusion:

FEATURE_ENABLE_SSL
HAVE_OPENSSL_SSL_H
SSL_USE_OPENSSL

BUG=webrtc:7025

Review-Url: https://codereview.webrtc.org/2640513002
Cr-Commit-Position: refs/heads/master@{#16224}
2017-01-24 03:39:57 +00:00
ossu
7bb87ee4e8 Create //webrtc/api:libjingle_peerconnection_api + refactorings.
Create a new target //webrtc/api:libjingle_peerconnection_api and start moving
things into it. Move remaining parts of //webrtc/api:libjingle_peerconnection
to //webrtc/pc:libjingle_peerconnection.

Moved the RTCStatsCollectorCallback into its own header file, so that
PeerConnectionInterface can include that instead of pulling in
RTCStatsCollector and PeerConnection and everything.

Separated cricket::MediaType into its own header/source set, so that it
can be used in the api.

BUG=webrtc:5883

Review-Url: https://codereview.webrtc.org/2514883002
Cr-Commit-Position: refs/heads/master@{#16210}
2017-01-23 12:56:25 +00:00
deadbeef
3e4faae0ed Fixing memory leak in FakeTransportController.
Introduced by: https://codereview.webrtc.org/2641633002/
Only occurs with test code.

BUG=webrtc:6972
TBR=pthatcher@webrtc.org

Review-Url: https://codereview.webrtc.org/2648093002
Cr-Commit-Position: refs/heads/master@{#16200}
2017-01-21 06:43:34 +00:00
deadbeef
8662f94023 Only set certificate on DTLS transport if fingerprint is found in SDP.
This is used for fallback from DTLS to SDES encryption, which we probably still
want to support. Setting a certificate puts the DTLS transport in a "DTLS
enabled" mode, so it should be delayed until SDP with "a=fingerprint" is set.

BUG=webrtc:6972

Review-Url: https://codereview.webrtc.org/2641633002
Cr-Commit-Position: refs/heads/master@{#16199}
2017-01-21 05:20:51 +00:00
deadbeef
f33491ebaf Revert of Removing #defines previously used for building without BoringSSL/OpenSSL. (patchset #2 id:20001 of https://codereview.webrtc.org/2640513002/ )
Reason for revert:
Broke chromium build, due to a config being removed. Will add it back and remove the dependency in a chromium CL.

Original issue's description:
> Removing #defines previously used for building without BoringSSL/OpenSSL.
>
> These defines don't work any more, so they only cause confusion:
>
> FEATURE_ENABLE_SSL
> HAVE_OPENSSL_SSL_H
> SSL_USE_OPENSSL
>
> BUG=webrtc:7025
>
> Review-Url: https://codereview.webrtc.org/2640513002
> Cr-Commit-Position: refs/heads/master@{#16196}
> Committed: eaa826c2ee

TBR=kjellander@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7025

Review-Url: https://codereview.webrtc.org/2648003003
Cr-Commit-Position: refs/heads/master@{#16197}
2017-01-21 01:01:45 +00:00
deadbeef
eaa826c2ee Removing #defines previously used for building without BoringSSL/OpenSSL.
These defines don't work any more, so they only cause confusion:

FEATURE_ENABLE_SSL
HAVE_OPENSSL_SSL_H
SSL_USE_OPENSSL

BUG=webrtc:7025

Review-Url: https://codereview.webrtc.org/2640513002
Cr-Commit-Position: refs/heads/master@{#16196}
2017-01-20 23:15:58 +00:00
zhihuang
b2cdd93fd6 Remove the dependency of TransportChannel and TransportChannelImpl.
DtlsTransportChannelWrapper is renamed to be DtlsTransport which inherits from
DtlsTransportInternal. There will be no concept of "channel" in p2p level.
Both P2PTransportChannel and DtlsTransport don't depend on TransportChannel
and TransportChannelImpl any more and they are removed in this CL.

BUG=none

Review-Url: https://codereview.webrtc.org/2606123002
Cr-Commit-Position: refs/heads/master@{#16173}
2017-01-20 00:54:25 +00:00
sergeyu
d74886350e Fix PseudoTcp to handle incoming packets with invalid SEQ field
Previously PseudoTcp::process() didn't handle the case when the peer
sends a packet that's outside of the receive window, which was causing
DCHECK failures in the fuzzer.

BUG=681849

Review-Url: https://codereview.webrtc.org/2640173002
Cr-Commit-Position: refs/heads/master@{#16169}
2017-01-19 18:53:35 +00:00
zhihuang
6ce9259cb0 Revert of make the DtlsTransportWrapper inherit form DtlsTransportInternal (patchset #11 id:320001 of https://codereview.webrtc.org/2606123002/ )
Reason for revert:
Failed the memory check.
May need to fix the memory leak.

Original issue's description:
> make the DtlsTransportWrapper inherit form DtlsTransportInternal
>
> BUG=none
>
> Review-Url: https://codereview.webrtc.org/2606123002
> Cr-Commit-Position: refs/heads/master@{#16160}
> Committed: 5aed06c8d3

TBR=deadbeef@webrtc.org,pthatcher@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=none

Review-Url: https://codereview.webrtc.org/2639203004
Cr-Commit-Position: refs/heads/master@{#16162}
2017-01-19 12:49:47 +00:00
zhihuang
5aed06c8d3 make the DtlsTransportWrapper inherit form DtlsTransportInternal
BUG=none

Review-Url: https://codereview.webrtc.org/2606123002
Cr-Commit-Position: refs/heads/master@{#16160}
2017-01-19 09:48:02 +00:00
deadbeef
d1c0998730 Adding OrtcFactory, and changing UdpTransport to match current plan.
The factory follows the same principles as PeerConnectionFactory;
various modules can be passed into its constructor but default
implementations are provided. Currently the only object the factory can
create is a UdpTransport (need to start somewhere).

UdpTransportChannel (renamed to UdpTransport)
will now accept a socket passed into its constructor,
relying on the factory to create the socket. This allows some
simplifications to be made, such as getting rid of "State" since the
only states are now "has destination set or doesn't".

BUG=webrtc:7013

Review-Url: https://codereview.webrtc.org/2632613002
Cr-Commit-Position: refs/heads/master@{#16154}
2017-01-18 23:16:37 +00:00
nisse
c8ee882753 Replace use of ASSERT in test code.
In top level test functions, replaced with gtest ASSERT_*. In helper
methods in main test files, replaced with EXPECT_* or RTC_DCHECK on a
case-by-case basis.

In separate mock/fake classes used by tests (which might be of some
use also in tests of third-party applications), ASSERT was replaced
with RTC_CHECK, using

  git grep -l ' ASSERT(' | grep -v common.h | \
    xargs sed -i 's/ ASSERT(/ RTC_CHECK(/'

followed by additional includes of base/checks.h in affected files,
and git cl format.

BUG=webrtc:6424

Review-Url: https://codereview.webrtc.org/2622413005
Cr-Commit-Position: refs/heads/master@{#16150}
2017-01-18 15:20:55 +00:00
zhihuang
c7953fa716 Remove the IceTransportInternal2.
Introduing IceTransportInternal2 is a temporary fix to switch the base
class of P2PTransportChannel to IceTransportInternal without breaking
Chromium. It is removed in this CL.

Reland this CL after Chromium doesn't depend on this.

BUG=webrtc:6951

Review-Url: https://codereview.webrtc.org/2632563002
Cr-Commit-Position: refs/heads/master@{#16131}
2017-01-18 03:40:19 +00:00
deadbeef
bad5dadef3 More minor improvements to BaseChannel/transport code.
Mostly from late comments on this CL:
https://codereview.webrtc.org/2614263002/

Changes SetTransport to DCHECK instead of returning false.
Renames it to SetTransports.
Fixes some possible transport resource leaks.

BUG=None

Review-Url: https://codereview.webrtc.org/2637503003
Cr-Commit-Position: refs/heads/master@{#16130}
2017-01-18 02:32:35 +00:00
solenberg
e08b253ee0 Remove unused lambda capture to unbreak downstream code.
Broken since: d3c3a4e2ac

BUG=none
TBR=zhihuang@webrtc.org

Review-Url: https://codereview.webrtc.org/2639523002
Cr-Commit-Position: refs/heads/master@{#16121}
2017-01-17 14:18:10 +00:00
hbos
7064d5929a RTCTransportStats.dtlsState replaces .activeConnection
In accordance with recent spec change:
https://github.com/w3c/webrtc-stats/pull/122

BUG=chromium:653873, chromium:627816

Review-Url: https://codereview.webrtc.org/2625993002
Cr-Commit-Position: refs/heads/master@{#16098}
2017-01-16 15:38:02 +00:00
henrikg
97b7d5fe0b Revert of Remove the IceTransportInternal2. (patchset #1 id:1 of https://codereview.webrtc.org/2632563002/ )
Reason for revert:
Broke Chromium FYI bots. See for example https://build.chromium.org/p/chromium.webrtc.fyi/builders/Win%20Builder/builds/8631

FAILED: obj/remoting/protocol/protocol/ice_transport_channel.obj
ninja -t msvc -e environment.x86 -- E:\b\c\cipd\goma/gomacc.exe "E:\b\depot_tools\win_toolchain\vs_files\d3cb0e37bdd120ad0ac4650b674b09e81be45616\VC\bin\amd64_x86/cl.exe" /nologo /showIncludes /FC @obj/remoting/protocol/protocol/ice_transport_channel.obj.rsp /c ../../remoting/protocol/ice_transport_channel.cc /Foobj/remoting/protocol/protocol/ice_transport_channel.obj /Fd"obj/remoting/protocol/protocol_cc.pdb"
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(186): error C2039: 'IceTransportInternal2': is not a member of 'cricket'
e:\b\c\b\win_builder\src\third_party\webrtc\p2p\base\p2ptransportchannel.h(38): note: see declaration of 'cricket'
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(186): error C2065: 'IceTransportInternal2': undeclared identifier
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(186): error C2065: 'ice_transport': undeclared identifier
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(187): error C2059: syntax error: 'const'
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(187): error C2143: syntax error: missing ';' before '{'
e:\b\c\b\win_builder\src\remoting\protocol\ice_transport_channel.cc(187): error C2447: '{': missing function header (old-style formal list?)

Original issue's description:
> Remove the IceTransportInternal2.
>
> Introduing IceTransportInternal2 is a temporary fix to switch the base
> class of P2PTransportChannel to IceTransportInternal without breaking
> Chromium. It is removed in this CL.
>
> BUG=webrtc:6951
>
> Review-Url: https://codereview.webrtc.org/2632563002
> Cr-Commit-Position: refs/heads/master@{#16083}
> Committed: 8aaa51190e

TBR=deadbeef@webrtc.org,zhihuang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6951

Review-Url: https://codereview.webrtc.org/2630243002
Cr-Commit-Position: refs/heads/master@{#16086}
2017-01-16 08:12:52 +00:00
zhihuang
8aaa51190e Remove the IceTransportInternal2.
Introduing IceTransportInternal2 is a temporary fix to switch the base
class of P2PTransportChannel to IceTransportInternal without breaking
Chromium. It is removed in this CL.

BUG=webrtc:6951

Review-Url: https://codereview.webrtc.org/2632563002
Cr-Commit-Position: refs/heads/master@{#16083}
2017-01-16 03:12:45 +00:00
zhihuang
f5b251b816 Remove BaseChannel's dependency on TransportController.
The BaseChannel can set the transport directly without depending on
TransportController.

When initializing the network of the BaseChannel, the ChannelManager will
create TransportChannels with the TransportController.
When enabling bundling, WebRtcSession will get or create TransportChannels
with the TransportController.

When a TransportChannel of the BaseChannel needs to be destroyed, it will
fire a signal to notify the WebRtcSession.

BUG=none.

Review-Url: https://codereview.webrtc.org/2614263002
Cr-Commit-Position: refs/heads/master@{#16043}
2017-01-13 03:37:48 +00:00
zhihuang
d06adf60c1 Make P2PTransportChannel inherit from IceTransportInternal.
Make P2PTransportChannel inherit from IceTransportInternal instead of
TransportChannelImpl and TransportChannel, so that the DTLS-related methods can
be separated from P2PTransportChannel.

BUG=webrtc:6951

Review-Url: https://codereview.webrtc.org/2608353003
Cr-Commit-Position: refs/heads/master@{#16041}
2017-01-12 23:58:31 +00:00
nisse
ede5da4960 Replace ASSERT by RTC_DCHECK in all non-test code.
Bulk of the changes were produced using

  git grep -l ' ASSERT(' | grep -v test | grep -v 'common\.h' |\
    xargs -n1 sed -i 's/ ASSERT(/ RTC_DCHECK(/'

followed by additional includes of base/checks.h in affected files,
and git cl format.

Also had to do some tweaks to #if !defined(NDEBUG) logic in the
taskrunner code (webrtc/base/task.cc, webrtc/base/taskparent.cc,
webrtc/base/taskparent.h, webrtc/base/taskrunner.cc), replaced to
consistently use RTC_DCHECK_IS_ON, and some of the checks needed
additional #if protection.

Test code was excluded, because it should probably use RTC_CHECK
rather than RTC_DCHECK.

BUG=webrtc:6424

Review-Url: https://codereview.webrtc.org/2620303003
Cr-Commit-Position: refs/heads/master@{#16030}
2017-01-12 13:15:36 +00:00
nisse
eb4ca4e823 Replace RTC_DCHECK(false) with RTC_NOTREACHED().
Bulk of changes done using

  git grep -l 'RTC_DCHECK(false)' | \
    xargs sed -i 's/RTC_DCHECK(false)/RTC_NOTREACHED()/'

peerconnection.cc also used RTC_DCHECK(false && "msg") in two places,
which were updated manually.

BUG=webrtc:6424

Review-Url: https://codereview.webrtc.org/2623313004
Cr-Commit-Position: refs/heads/master@{#16026}
2017-01-12 10:24:27 +00:00
skvlad
1d3c7e0b16 Move MetricsObserverInterface out of peerconnectioninterface.h
This change moves the definition of the UMA MetricsObserverInterface from api/peerconnectioninterface.h into api/umametrics.h. This allows us to remove the unwanted dependency on peerconnectioninterface.h from files in webrtc/p2p.

This is a simple refactoring with no functional changes.

BUG=None

Review-Url: https://codereview.webrtc.org/2627093005
Cr-Commit-Position: refs/heads/master@{#16020}
2017-01-12 01:50:30 +00:00
nisse
c80e741ad0 Replace ASSERT(false) by RTC_NOTREACHED().
This cl was produced by

  git grep -l 'ASSERT(false)' |\
    xargs -n1 sed -i 's/ASSERT(false)/RTC_NOTREACHED()/'

followed by additional includes of base/checks.h in affected files,
git cl format to adjust spacing in webrtc/base/transformadapter.cc.
Finally, to make presubmit happy, one unnamed TODO marker was deleted
in that file.

This is a step towards deletion of base/common.h.

BUG=webrtc:6424

Review-Url: https://codereview.webrtc.org/2625003003
Cr-Commit-Position: refs/heads/master@{#16009}
2017-01-11 13:56:46 +00:00
hnsl
0483362377 Add disabled certificate check support to IceServer PeerConnection API.
Refactor "OPT_SSLTCP" renaming it to "OPT_TLS_FAKE", making it clear
that it's not actually some kind of SSL over TCP. Also making it clear
that it's mutually exclusive with OPT_TLS. Maintaining deprecated
backwards compatible support for "OPT_SSLTCP".

Add "OPT_TLS_INSECURE" that implements the new certificate-check
disabled TLS mode, which is also mutually exclusive with the other
TLS options.

PortAllocator: Add a new TLS policy enum TlsCertPolicy which defines
the new insecure mode and added it as a RelayCredentials member.

TurnPort: Add new TLS policy member with appropriate getter and setter
to avoid constructor bloat. Initialize it from the RelayCredentials
after the TurnPort is created.

Expose the new feature in the PeerConnection API via
IceServer.tls_certificate_policy as well as via the Android JNI
PeerConnection API.

For security reasons we ensure that:

	1) The policy is always explicitly initialized to secure.
        2) API users have to explicitly integrate with the feature to
           use it, and will otherwise get no change in behavior.
	3) The feature is not immediately exposed in non-native
	   contexts. For example, disabling of certificate validation
           is not implemented via URI parsing since this would
           immediately allow it to be used from a web page.

This is a second attempt of https://codereview.webrtc.org/2557803002/
which was rolled back in https://codereview.webrtc.org/2590153002/

BUG=webrtc:6840

Review-Url: https://codereview.webrtc.org/2594623002
Cr-Commit-Position: refs/heads/master@{#15967}
2017-01-09 16:35:45 +00:00
nisse
39ced8cf35 Delete final remnants of the buzz namespace.
The code using this namespace was deleted in cl
https://codereview.webrtc.org/2617443003.

TBR=pthatcher@webrtc.org
BUG=webrtc:5539

Review-Url: https://codereview.webrtc.org/2622543003
Cr-Commit-Position: refs/heads/master@{#15965}
2017-01-09 16:29:51 +00:00
zhihuang
1a619cdb5d Create the MockIceTransport
The src/remoting/protocol/channel_socket_adapter_unittest.cc will use this class
instead of creating its own MockTransportChannel which subclasses the TransportChannel.
This will make it easier to switch the base class of P2PTransportChannel from
TransportChannel to IceTransportInternal.

BUG=webrtc:6951

Review-Url: https://codereview.webrtc.org/2610663003
Cr-Commit-Position: refs/heads/master@{#15922}
2017-01-05 20:21:52 +00:00
ehmaldonado
da8dcfb43e Refactor rtc_unittests into several targets.
Also fix some warnings.

NOTRY=True
BUG=webrtc:6954

Review-Url: https://codereview.webrtc.org/2611663002
Cr-Commit-Position: refs/heads/master@{#15900}
2017-01-04 15:11:23 +00:00
zhihuang
e50658de85 Create the DtlsTransportInternal
DtlsTransportInternal is an internal interface that does DTLS.
The DtlsTransportChannel will inherit from this class instead of the
TransportChannelImpl so that the ICE-related methods can be separated.

Once the DtlsTransportChannl inherits from this class. It would be
renamed as DtlsTransport.

BUG=none

Review-Url: https://codereview.webrtc.org/2597053002
Cr-Commit-Position: refs/heads/master@{#15888}
2017-01-03 19:34:12 +00:00
pbos
c7c26a0e64 Reland of place basictypes.h with stdint.h for int_t types. (patchset #1 id:1 of https://codereview.webrtc.org/2603203003/ )
Reason for revert:
Doing a reland where systeminfo.cc includes basictypes.h so that CPU_X86 etc. are defined when they are checked/used.

Original issue's description:
> Revert of Replace basictypes.h with stdint.h for int_t types. (patchset #1 id:1 of https://codereview.webrtc.org/2604043002/ )
>
> Reason for revert:
> Very likely cause of Chromium import bot breakage (unused function '__cpuid'), TBD why.
>
> Original issue's description:
> > Replace basictypes.h with stdint.h for int_t types.
> >
> > Removes basictypes.h for types that only makes use of it for fixed-size-int
> > typedefs and replaces it with stdint.h.
> >
> > BUG=webrtc:6853
> > R=tommi@webrtc.org
> >
> > Review-Url: https://codereview.webrtc.org/2604043002
> > Cr-Commit-Position: refs/heads/master@{#15867}
> > Committed: 7fd1a75300
>
> TBR=tommi@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6853
>
> Review-Url: https://codereview.webrtc.org/2603203003
> Cr-Commit-Position: refs/heads/master@{#15869}
> Committed: 7eb0e23bcf

BUG=webrtc:6853
TBR=tommi@webrtc.org

Review-Url: https://codereview.webrtc.org/2609783002
Cr-Commit-Position: refs/heads/master@{#15873}
2017-01-02 16:42:32 +00:00
hbos
06495bcbb7 RTCIceCandidatePairStats.[state/priority] added, ConnectionInfo updated.
State and priority added to ConnectionInfo. The Connection::State enum
is replaced by IceCandidatePairState enum class.

At P2PTransportChannel::GetStats, Connection::stats is called, producing
ConnectionInfo for the connection that is then filled in with additional
values from the Connection. This is refactored so that all values are
set by Connection::stats.

RTCStatsCollector is updated to surface the ConnectionInfo stats.

BUG=webrtc:6755, chromium:633550, chromium:627816

Review-Url: https://codereview.webrtc.org/2597423003
Cr-Commit-Position: refs/heads/master@{#15870}
2017-01-02 16:08:18 +00:00
pbos
7eb0e23bcf Revert of Replace basictypes.h with stdint.h for int_t types. (patchset #1 id:1 of https://codereview.webrtc.org/2604043002/ )
Reason for revert:
Very likely cause of Chromium import bot breakage (unused function '__cpuid'), TBD why.

Original issue's description:
> Replace basictypes.h with stdint.h for int_t types.
>
> Removes basictypes.h for types that only makes use of it for fixed-size-int
> typedefs and replaces it with stdint.h.
>
> BUG=webrtc:6853
> R=tommi@webrtc.org
>
> Review-Url: https://codereview.webrtc.org/2604043002
> Cr-Commit-Position: refs/heads/master@{#15867}
> Committed: 7fd1a75300

TBR=tommi@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6853

Review-Url: https://codereview.webrtc.org/2603203003
Cr-Commit-Position: refs/heads/master@{#15869}
2017-01-02 15:32:25 +00:00
pbos
7fd1a75300 Replace basictypes.h with stdint.h for int_t types.
Removes basictypes.h for types that only makes use of it for fixed-size-int
typedefs and replaces it with stdint.h.

BUG=webrtc:6853
R=tommi@webrtc.org

Review-Url: https://codereview.webrtc.org/2604043002
Cr-Commit-Position: refs/heads/master@{#15867}
2017-01-02 14:58:46 +00:00
zhihuang
655f7cf355 Prepare to introduce the IceTransportInternal.
The P2PTransportChannel will eventually inherit from IceTransportInternal instead of TransportChannelImpl.
However, the Chromium/remoting depends on TransportChannel and TransportChannelImpl.

The solution to work around this:
Step1:
  Make a WebRTC CL to introduce IceTransportInternal and IceTransportInternal2 by type-defining
  TransportChannel and TransportChannelImpl.
Step2:
  Make a Chromium CL to replace the TransportChannel and TransportChannelImpl with
  IceTransportInternal and IceTransportInternal2.
Step3:
  Make a WebRTC to redefine IceTransportInternal2 to be IceTransportInternal and switch the base
  class of P2PTransportChannel with IceTransportInternal.
Step4"
  Make a Chromium CL to remove the IceTransportInternal2.

This CL is the Step1. The real IceTransportInternal implementation
is commented out temporarily.

BUG=none

Review-Url: https://codereview.webrtc.org/2598103003
Cr-Commit-Position: refs/heads/master@{#15824}
2016-12-28 21:55:02 +00:00
kjellander
c37ad499da Revert of Make P2PTransportChannel inherit from IceTransportInternal. (patchset #3 id:80001 of https://codereview.webrtc.org/2590063002/ )
Reason for revert:
Breaks Chromium WebRTC FYI bots:
https://build.chromium.org/p/chromium.webrtc.fyi/builders/Linux%20Builder/builds/12337
The error was masked by another breaking change that was committer earlier. This is the first build showing the error.

Original issue's description:
> Make P2PTransportChannel inherit from IceTransportInternal.
>
> Make P2PTransportChannel inherit from IceTransportInternal instead of
> TransportChannelImpl and TransportChannel, so that the DTLS-related methods can
> be separated from P2PTransportChannel.
>
> BUG=none
>
> Review-Url: https://codereview.webrtc.org/2590063002
> Cr-Commit-Position: refs/heads/master@{#15743}
> Committed: 12749d89d9

TBR=deadbeef@webrtc.org,zhihuang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=none

Review-Url: https://codereview.webrtc.org/2594343002
Cr-Commit-Position: refs/heads/master@{#15751}
2016-12-22 07:52:00 +00:00
zhihuang
12749d89d9 Make P2PTransportChannel inherit from IceTransportInternal.
Make P2PTransportChannel inherit from IceTransportInternal instead of
TransportChannelImpl and TransportChannel, so that the DTLS-related methods can
be separated from P2PTransportChannel.

BUG=none

Review-Url: https://codereview.webrtc.org/2590063002
Cr-Commit-Position: refs/heads/master@{#15743}
2016-12-21 18:26:18 +00:00
magjed
d5236e2948 Revert of Add disabled certificate check support to IceServer PeerConnection API. (patchset #8 id:140001 of https://codereview.webrtc.org/2557803002/ )
Reason for revert:
This CL broke all Chromium WebRTC FYI bots. A roll+fix was attempted here: https://codereview.chromium.org/2590783003/, but failed to land. I'm reverting this CL now to make the tree green again. Make the API change gradual when you reland so that we can update Chromium between.

Original issue's description:
> Add disabled certificate check support to IceServer PeerConnection API.
>
> Refactor "OPT_SSLTCP" renaming it to "OPT_TLS_FAKE", making it clear
> that it's not actually some kind of SSL over TCP. Also making it clear
> that it's mutually exclusive with OPT_TLS.
>
> Add "OPT_TLS_INSECURE" that implements the new certificate-check
> disabled TLS mode, which is also mutually exclusive with the other
> TLS options.
>
> PortAllocator: Add a new TLS policy enum TlsCertPolicy which defines
> the new insecure mode and added it as a RelayCredentials member.
>
> TurnPort: Add new TLS policy member with appropriate getter and setter
> to avoid constructor bloat. Initialize it from the RelayCredentials
> after the TurnPort is created.
>
> Expose the new feature in the PeerConnection API via
> IceServer.tls_certificate_policy as well as via the Android JNI
> PeerConnection API.
>
> For security reasons we ensure that:
>
> 	1) The policy is always explicitly initialized to secure.
>         2) API users have to explicitly integrate with the feature to
>            use it, and will otherwise get no change in behavior.
> 	3) The feature is not immediately exposed in non-native
> 	   contexts. For example, disabling of certificate validation
>            is not implemented via URI parsing since this would
>            immediately allow it to be used from a web page.
>
> BUG=webrtc:6840
>
> Review-Url: https://codereview.webrtc.org/2557803002
> Cr-Commit-Position: refs/heads/master@{#15670}
> Committed: b0f04fdb9e

TBR=pthatcher@webrtc.org,deadbeef@webrtc.org,hnsl@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6840

Review-Url: https://codereview.webrtc.org/2590153002
Cr-Commit-Position: refs/heads/master@{#15703}
2016-12-20 10:22:06 +00:00
zhihuang
86abd6f2fd Add an abstract class for IceTransport
P2PTransportChannl will be renamed to IceTransport and this class will be
the base class of IceTransport. By doing this, the Dtls related methods
can be separated from the IceTransport.

For more detail, https://docs.google.com/document/d/1g9RA0s4RV7hFAcWiAM2b6H5ZohAVpBqcYienEDj6IcY/edit

BUG=none

Review-Url: https://codereview.webrtc.org/2577183004
Cr-Commit-Position: refs/heads/master@{#15690}
2016-12-19 19:54:05 +00:00
hbos
df6075a77f RTCStatsCollector: Utilize network thread to minimize thread hops.
(This is a re-upload of https://codereview.webrtc.org/2567243003/, the
CQ stopped working there.)

The previously used WebRtcSession::GetTransportStats did a synchronous
invoke per channel (voice, video, data) on the signaling thread to the
network thread - e.g. 3 blocking invokes.

It is replaced by WebRtcSession::GetStats[_s] which can be invoked on
the signaling thread or on any thread if a ChannelNamePairs argument is
present (provided by WebRtcSession::GetChannelNamePairs on the signaling
thread).

With these changes, and changes allowing the getting of certificates
from any thread, the RTCStatsCollector can turn the 3 blocking thread
invokes into 1 non-blocking invoke.

BUG=webrtc:6875, chromium:627816

Review-Url: https://codereview.webrtc.org/2583883002
Cr-Commit-Position: refs/heads/master@{#15672}
2016-12-19 12:58:02 +00:00
hnsl
b0f04fdb9e Add disabled certificate check support to IceServer PeerConnection API.
Refactor "OPT_SSLTCP" renaming it to "OPT_TLS_FAKE", making it clear
that it's not actually some kind of SSL over TCP. Also making it clear
that it's mutually exclusive with OPT_TLS.

Add "OPT_TLS_INSECURE" that implements the new certificate-check
disabled TLS mode, which is also mutually exclusive with the other
TLS options.

PortAllocator: Add a new TLS policy enum TlsCertPolicy which defines
the new insecure mode and added it as a RelayCredentials member.

TurnPort: Add new TLS policy member with appropriate getter and setter
to avoid constructor bloat. Initialize it from the RelayCredentials
after the TurnPort is created.

Expose the new feature in the PeerConnection API via
IceServer.tls_certificate_policy as well as via the Android JNI
PeerConnection API.

For security reasons we ensure that:

	1) The policy is always explicitly initialized to secure.
        2) API users have to explicitly integrate with the feature to
           use it, and will otherwise get no change in behavior.
	3) The feature is not immediately exposed in non-native
	   contexts. For example, disabling of certificate validation
           is not implemented via URI parsing since this would
           immediately allow it to be used from a web page.

BUG=webrtc:6840

Review-Url: https://codereview.webrtc.org/2557803002
Cr-Commit-Position: refs/heads/master@{#15670}
2016-12-19 12:10:30 +00:00
deadbeef
62802a1b0e Fixing possible crash due to RefCountedChannel assignment operator.
We relied on the default destructor of RefCountedChannel to destroy its
members in reverse initialization order (deleting the DTLS wrapper
before the underlying ICE channel).

However, std::vector also may use the default assignment operator, which
performs a member-wise copy in initialization order. Which results in
deleting the ICE channel before the DTLS one. This CL fixes this by
using a vector of pointers instead of structures, and uses RefCountedObject
to handle ref-counting.

BUG=chromium:672951

Review-Url: https://codereview.webrtc.org/2571683004
Cr-Commit-Position: refs/heads/master@{#15583}
2016-12-14 00:38:46 +00:00
deadbeef
7af91ddd6b Removing "crypto_required" from MediaContentDescription.
"Crypto required" is a property of the PeerConnection of construction
time; it has nothing to do with SDP. So I'm moving it out of
MediaContentDescription and putting it in the BaseChannel constructor
instead. This is more intuitive, and provides the added assurance that
"secure_required_" can't be flipped from "true" to "false".

BUG=None

Review-Url: https://codereview.webrtc.org/2537343003
Cr-Commit-Position: refs/heads/master@{#15579}
2016-12-13 19:29:16 +00:00