Commit Graph

468 Commits

Author SHA1 Message Date
c8d21712dd Replace RelayPort with TurnPort in p2ptransportchannel tests.
Also remove the relay servers in the tests.
Most of the code and the downstream apps are using TurnPort, not RelayPort. Most of the tests in this file are not using RelayPort anyway.

BUG=None
R=deadbeef@webrtc.org

Review URL: https://codereview.webrtc.org/2380923002 .

Cr-Commit-Position: refs/heads/master@{#14441}
2016-09-29 21:51:36 +00:00
0fd22ef0ae Rename P2PTransportChannel worker_thread_ to network_thread_.
Restore consistency of thread names in ThreadController and P2PTransportChannel.
This is a follow-up for https://codereview.webrtc.org/1895813003 and https://codereview.webrtc.org/1903393004.

BUG=webrtc:6432

Review-Url: https://codereview.webrtc.org/2378573003
Cr-Commit-Position: refs/heads/master@{#14426}
2016-09-29 08:19:28 +00:00
de2920cb46 Delete unused file sessionid.h.
BUG=None.

Review-Url: https://codereview.webrtc.org/2370723002
Cr-Commit-Position: refs/heads/master@{#14387}
2016-09-27 06:28:51 +00:00
3e02430587 Fix a stun attribute leak.
In https://cs.chromium.org/chromium/src/third_party/webrtc/p2p/base/stun.cc?rcl=1474384719&l=352,
if read returned false, the created attr would not be released.

BUG=chromium:648064
R=skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2357733002 .

Cr-Commit-Position: refs/heads/master@{#14357}
2016-09-22 16:52:30 +00:00
02bd5125e9 Remove dead code branches from P2PtransportChannel unittest.
BUG=None

Review-Url: https://codereview.webrtc.org/2318173002
Cr-Commit-Position: refs/heads/master@{#14299}
2016-09-20 07:23:33 +00:00
81f6f4fc56 Revert of Allow the DTLS fingerprint verification to occur after the handshake. (patchset #11 id:200001 of https://codereview.webrtc.org/2163683003/ )
Reason for revert:
Broke a downstream user of SSLStreamAdapter. Need to add the new interface (returning error code instead of bool) in a backwards compatible way.

Original issue's description:
> Allow the DTLS fingerprint verification to occur after the handshake.
>
> This means the DTLS handshake can make progress while the SDP answer
> containing the fingerprint is still in transit. If the signaling path
> if significantly slower than the media path, this can have a moderate
> impact on call setup time.
>
> Of course, until the fingerprint is verified no media can be sent. Any
> attempted write will result in SR_BLOCK.
>
> This essentially fulfills the requirements of RFC 4572, Section 6.2:
>
>    Note that when the offer/answer model is being used, it is possible
>    for a media connection to outrace the answer back to the offerer.
>    Thus, if the offerer has offered a 'setup:passive' or 'setup:actpass'
>    role, it MUST (as specified in RFC 4145 [2]) begin listening for an
>    incoming connection as soon as it sends its offer.  However, it MUST
>    NOT assume that the data transmitted over the TLS connection is valid
>    until it has received a matching fingerprint in an SDP answer.  If
>    the fingerprint, once it arrives, does not match the client's
>    certificate, the server endpoint MUST terminate the media connection
>    with a bad_certificate error, as stated in the previous paragraph.
>
> BUG=webrtc:6387
> R=mattdr@webrtc.org, pthatcher@webrtc.org
>
> Committed: https://crrev.com/042041bf9585f92e962387c59ca805f1218338f9
> Cr-Commit-Position: refs/heads/master@{#14296}

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

Review-Url: https://codereview.webrtc.org/2352863003
Cr-Commit-Position: refs/heads/master@{#14298}
2016-09-20 00:21:00 +00:00
042041bf95 Allow the DTLS fingerprint verification to occur after the handshake.
This means the DTLS handshake can make progress while the SDP answer
containing the fingerprint is still in transit. If the signaling path
if significantly slower than the media path, this can have a moderate
impact on call setup time.

Of course, until the fingerprint is verified no media can be sent. Any
attempted write will result in SR_BLOCK.

This essentially fulfills the requirements of RFC 4572, Section 6.2:

   Note that when the offer/answer model is being used, it is possible
   for a media connection to outrace the answer back to the offerer.
   Thus, if the offerer has offered a 'setup:passive' or 'setup:actpass'
   role, it MUST (as specified in RFC 4145 [2]) begin listening for an
   incoming connection as soon as it sends its offer.  However, it MUST
   NOT assume that the data transmitted over the TLS connection is valid
   until it has received a matching fingerprint in an SDP answer.  If
   the fingerprint, once it arrives, does not match the client's
   certificate, the server endpoint MUST terminate the media connection
   with a bad_certificate error, as stated in the previous paragraph.

BUG=webrtc:6387
R=mattdr@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2163683003 .

Cr-Commit-Position: refs/heads/master@{#14296}
2016-09-19 23:02:35 +00:00
e5835f5d84 Adding an end-to-end connection time test.
The test uses a fake clock and simulates network and signaling delays in
order to get a repeatable measurement of the time to establish a
connection (including DTLS). This will help ensure that various
optimizations continue to work as expected, and no new delays are
introduced.

This CL depends on: https://codereview.webrtc.org/2140283002/

R=honghaiz@webrtc.org, pthatcher@webrtc.org, skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2141863003 .

Cr-Commit-Position: refs/heads/master@{#14270}
2016-09-16 22:07:58 +00:00
9ecb08576e Adding logs to track potential cause of not starting port allocation.
R=deadbeef@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2324853002 .

Cr-Commit-Position: refs/heads/master@{#14244}
2016-09-15 23:41:12 +00:00
d5fff5040c Removing assert error when we fail to create a connection for a ping from an unknown address.
It may happen in some legitimate scenarios.
For example a turn port may have had a refresh request timeout, so it won't create a new connection for a ping from an unknown address.

R=deadbeef@webrtc.org

Review URL: https://codereview.webrtc.org/2327233002 .

Cr-Commit-Position: refs/heads/master@{#14173}
2016-09-10 03:48:08 +00:00
b9d8d10d42 Fixed flaky StunRequestTests which depended on the wall clock
StunRequestTests were using the real time clock to measure fairly large
retransmit intervals (up to several seconds). This was making the tests
slow and flaky when the system was heavily loaded.

See https://build.chromium.org/p/client.webrtc/builders/Win64%20Release/builds/9274/steps/rtc_unittests/logs/stdio
for an example of a recent failure.

This change makes the tests use a simulated clock instead. They are now
very quick, precise and reliable.

R=honghaiz@webrtc.org, zhihuang@webrtc.org

Review URL: https://codereview.webrtc.org/2300143005 .

Cr-Commit-Position: refs/heads/master@{#14097}
2016-09-07 00:18:58 +00:00
4cedf2b78c Add signaling to support ICE renomination.
By default, this will tell the remote side that I am supporting ICE renomination.
It does not use ICE renomination yet even if the remote side supports it.

R=deadbeef@webrtc.org, pthatcher@webrtc.org, skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2224563004 .

Cr-Commit-Position: refs/heads/master@{#13998}
2016-08-31 15:18:22 +00:00
f0bb360eca Add parameter to TransportController to not change ICE role on restart.
This will allow applications to opt in to this behavior before it's made
default.

R=skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2285453002 .

Cr-Commit-Position: refs/heads/master@{#13944}
2016-08-27 03:59:35 +00:00
d82eee0675 Log how often DTLS negotiation failed because of incompatible ciphersuites.
Log the DTLS handshake error code in OpenSSLStreamAdapter.
Forward the error code to WebRTCSession with the Signals.
This part is only for the WebRTC native code.
To make it work, need another CL for Chromium.

BUG=webrtc:5959

Review-Url: https://codereview.webrtc.org/2167363002
Cr-Commit-Position: refs/heads/master@{#13940}
2016-08-26 18:25:09 +00:00
b60a8198f1 Fixing inconsistency with behavior of ClearGettingPorts.
I found that, depending on when it's called, ClearGettingPorts may or
may not signal CandidatesAllocationDone, and may or may not continue
to gather more ports/candidates.

I'm fixing this inconsistency by having it always signal
CandidatesAllocationDone (if needed), and always stop gathering until
the next network change event. This makes it equivalent to
StopGettingPorts, except that it allows gathering to be restarted if
a network change occurs.

I also found that P2PTransportChannel was signaling "gathering
complete" even when continual gathering was enabled. This wasn't caught
by the unit tests due to the inconsistency of ClearGettingPorts as
described above.

Review-Url: https://codereview.webrtc.org/2124283003
Cr-Commit-Position: refs/heads/master@{#13908}
2016-08-24 22:15:07 +00:00
824f586213 Fixing segfault caused by TurnServer.
TURN server sockets were being destroyed asynchronously, which could
happen after the TurnServer itself (and even the VirtualSocketServer
used by the sockets) were destroyed.

This is fixed easily by using an AsyncInvoker (to ensure the async
operation doesn't occur after its initiator is destroyed), and keeping
the objects waiting for deletion in a unique_ptr vector.

Review-Url: https://codereview.webrtc.org/2264343002
Cr-Commit-Position: refs/heads/master@{#13907}
2016-08-24 22:06:58 +00:00
5048f5777d Add logs and small change in BasicPortAllocator.
The added logs will be helpful for debugging.
If a session has stopped, terminate DoAllocate early.
Session::init always returns true, so there is no need to check the return value.

R=deadbeef@webrtc.org, skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2267163002 .

Cr-Commit-Position: refs/heads/master@{#13871}
2016-08-23 22:47:45 +00:00
fd16da290c Do not switch to a high-cost connection that is not receiving.
This prevents connection switching due to remote-side network down.

R=deadbeef@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2232563002 .

Cr-Commit-Position: refs/heads/master@{#13807}
2016-08-17 23:12:58 +00:00
e05bcc22b3 Do not switch a connection if the new connection is not ready to send packets.
There is no benefit of making such switches.

R=deadbeef@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2212683002 .

Cr-Commit-Position: refs/heads/master@{#13789}
2016-08-17 01:19:21 +00:00
895e1a9dc3 Change the default backup connection ping interval to 25 seconds.
This avoids the issue that the backup connection may be pinged faster
than the stable rate (once every 2.5 second) we have chosen for
non-backup connections.

R=deadbeef@webrtc.org, pthatcher@webrtc.org, zhihuang@webrtc.org

Review URL: https://codereview.webrtc.org/2239423002 .

Cr-Commit-Position: refs/heads/master@{#13787}
2016-08-16 23:48:14 +00:00
62351c9923 Fixing problems with ICE candidate pair prioritization.
The main issue was that upon receiving a binding response with a srflx
mapped address attribute, the local candidate was not updated from local
to srflx. This means the two ICE agents view the same pair differently;
one sees it as "X<->srflx" while the other sees it as "local<->X". This
causes sub-optimal prioritization and could result in the wrong pair
being selected if using aggressive nomination.

The other issue was that TCP prflx candidates were not differentiated from
UDP prflx candidates. This lead to TCP prflx candidates prioritized above TCP
host candidates.

After fixing these issues, I was able to re-enable many disabled tests, as well
as restore the check for the candidate types of the controlled agent.

BUG=webrtc:1953,webrtc:2383
R=honghaiz@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2125823004 .

Cr-Commit-Position: refs/heads/master@{#13734}
2016-08-11 23:05:15 +00:00
fe1ffb141b Remove unused SessionId from TransportChannel and PortAllocatorSession.
BUG=

Review-Url: https://codereview.webrtc.org/2237853002
Cr-Commit-Position: refs/heads/master@{#13731}
2016-08-11 19:37:51 +00:00
c8762a838f Remove StartSSLWithServer from SSLStreamAdapter.
It's not used by anything any more. We only use SSLStreamAdapter in
the mode where it verifies the peer's certificate using a signaled
digest.

R=pthatcher@webrtc.org, zhihuang@webrtc.org

Review URL: https://codereview.webrtc.org/2204883004 .

Cr-Commit-Position: refs/heads/master@{#13730}
2016-08-11 19:01:58 +00:00
9763d56464 Modified PeerConnection and WebRtcSession for end-to-end QuicDataChannel usage.
To allow end-to-end QuicDataChannel usage with a
PeerConnection, RTCConfiguration has been modified to
include a boolean for whether to do QUIC, since negotiation of
QUIC is not implemented. If one peer does QUIC, then it will be
assumed that the other peer must do QUIC or the connection
will fail.

PeerConnection has been modified to create data channels of type
QuicDataChannel when the peer wants to do QUIC.

WebRtcSession has ben modified to use a QuicDataTransport
instead of a DtlsTransportChannelWrapper/DataChannel
when QUIC should be used

QuicDataTransport implements the generic functions of
BaseChannel to manage the QuicTransportChannel.

Committed: https://crrev.com/34b54c36a533dadb6ceb70795119194e6f530ef5
Review-Url: https://codereview.webrtc.org/2166873002
Cr-Original-Commit-Position: refs/heads/master@{#13645}
Cr-Commit-Position: refs/heads/master@{#13657}
2016-08-05 18:14:54 +00:00
907abe4411 Revert of Modified PeerConnection and WebRtcSession for end-to-end QuicDataChannel usage. (patchset #8 id:280001 of https://codereview.webrtc.org/2166873002/ )
Reason for revert:
Reverting because it broke an RTP data channel test on the FYI bots.

Original issue's description:
> Modified PeerConnection and WebRtcSession for end-to-end QuicDataChannel usage.
>
> To allow end-to-end QuicDataChannel usage with a
> PeerConnection, RTCConfiguration has been modified to
> include a boolean for whether to do QUIC, since negotiation of
> QUIC is not implemented. If one peer does QUIC, then it will be
> assumed that the other peer must do QUIC or the connection
> will fail.
>
> PeerConnection has been modified to create data channels of type
> QuicDataChannel when the peer wants to do QUIC.
>
> WebRtcSession has ben modified to use a QuicDataTransport
> instead of a DtlsTransportChannelWrapper/DataChannel
> when QUIC should be used
>
> QuicDataTransport implements the generic functions of
> BaseChannel to manage the QuicTransportChannel.
>
> Committed: https://crrev.com/34b54c36a533dadb6ceb70795119194e6f530ef5
> Cr-Commit-Position: refs/heads/master@{#13645}

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

Review-Url: https://codereview.webrtc.org/2206793007
Cr-Commit-Position: refs/heads/master@{#13647}
2016-08-04 19:22:22 +00:00
34b54c36a5 Modified PeerConnection and WebRtcSession for end-to-end QuicDataChannel usage.
To allow end-to-end QuicDataChannel usage with a
PeerConnection, RTCConfiguration has been modified to
include a boolean for whether to do QUIC, since negotiation of
QUIC is not implemented. If one peer does QUIC, then it will be
assumed that the other peer must do QUIC or the connection
will fail.

PeerConnection has been modified to create data channels of type
QuicDataChannel when the peer wants to do QUIC.

WebRtcSession has ben modified to use a QuicDataTransport
instead of a DtlsTransportChannelWrapper/DataChannel
when QUIC should be used

QuicDataTransport implements the generic functions of
BaseChannel to manage the QuicTransportChannel.

Review-Url: https://codereview.webrtc.org/2166873002
Cr-Commit-Position: refs/heads/master@{#13645}
2016-08-04 18:06:58 +00:00
8cd8f81748 Prepare for ICE renomination.
Add an ICE nomination attribute. If a connection switched on the controlling side, increase the nomination value set in the attribute.
The controlled side will also be ready for re-nomination option; it will switch if a nomination comes with a higher nomination value even though it may be at a lower priority.
Plus, don't nominate or re-nominate if the nomination value at the current connection has been acknowledged.

BUG=
R=deadbeef@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2163403002 .

Cr-Commit-Position: refs/heads/master@{#13631}
2016-08-04 02:50:53 +00:00
734262c765 Fixing invalid operator< implementation.
It was possible that "A < B" and "B < A" both evaluated to true.
This manifested as an assert on Windows, and a memory leak on Linux.

Note that the concept of "less than" is meaningless for this object.
The operator is only needed so the object can be used as a key in an
std::map.

BUG=webrtc:6068
R=honghaiz@webrtc.org, kjellander@webrtc.org, skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2187913002 .

Cr-Commit-Position: refs/heads/master@{#13598}
2016-08-01 23:37:21 +00:00
a74363c998 Remove ports that are not used by any channel after timeout
If a port is not used by any channel and if it has no connection for 30
seconds, it will be removed.
Note, as long as a port is used by a transport channel, it will be kept
even if it does not have any connection. This will be beneficial to
continual gathering because new connections can be created in the future
when network changes.

BUG=
R=pthatcher@webrtc.org, zhihuang@webrtc.org

Review URL: https://codereview.webrtc.org/2171183002 .

Cr-Commit-Position: refs/heads/master@{#13567}
2016-07-29 01:06:26 +00:00
c309e0e3ea Don't stop sending media on EWOULDBLOCK
This change makes WebRTC no longer stop sending video when we receive an
EWOULDBLOCK error from the operating system. This was previously
causing calls on a slow link (where the first hop is slow) to rapidly
oscillate between starting and stopping video.

We still do need to stop sending packets if there is no known good
connection we can use for that. We used to generate a synthetic
EWOULDBLOCK error in that case. This CL replaces it with a different
code (ENOTCONN); EWOULDBLOCK no longer stops the stream but ENOTCONN
does.

I've updated all the places where we seemed to be generating EWOULDBLOCK
for reasons other than some buffer been full; please give it a thorough
look in case I missed something.

R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2192963002 .

Cr-Commit-Position: refs/heads/master@{#13566}
2016-07-29 00:15:30 +00:00
b5db1ec0e5 Delay destroying a port if new connections are created and destroyed.
If all connections on a port is destroyed, it will schedule an event
to check if it is dead after a timeout. Previously if a new connection
is created but destroyed before the event is fired, it will destroy the
port. With this change, we will not destoy it until it times out again
after the last created connection is destroyed.

BUG=
R=pthatcher@webrtc.org, zhihuang@webrtc.org

Review URL: https://codereview.webrtc.org/2184013003 .

Cr-Commit-Position: refs/heads/master@{#13563}
2016-07-28 20:23:13 +00:00
8eeecabd33 Merge SignalPortPruned and SignalPortsRemoved.
These two signals have the same purpose and is kind of redundant.
Rename to SignalPortsPruned.

BUG=
R=pthatcher@webrtc.org, zhihuang@webrtc.org

Review URL: https://codereview.webrtc.org/2176743003 .

Cr-Commit-Position: refs/heads/master@{#13562}
2016-07-28 20:20:29 +00:00
da2c945fd2 Fix a logging error.
BUG=

Review-Url: https://codereview.webrtc.org/2152963004
Cr-Commit-Position: refs/heads/master@{#13493}
2016-07-16 00:55:39 +00:00
91042f834d Restore the behavior where an ICE restart redetermines the ICE role.
We thought we could safely remove this, but older versions of Chrome
don't do role conflict resolution properly, so it's actually not safe
to yet.

BUG=628676

Review-Url: https://codereview.webrtc.org/2152963003
Cr-Commit-Position: refs/heads/master@{#13492}
2016-07-16 00:48:18 +00:00
9ad0db51a6 Dampening connection switch.
If the currently selected connection becomes not receiving and if a backup connection
becomes strong first, we will not switch the connection until X milliseconds is passed
but the selected connection is still not receiving and the backup connection is still receiving. This will prevent the connection switching from happening too frequently.

BUG=

Review-Url: https://codereview.webrtc.org/2143653005
Cr-Commit-Position: refs/heads/master@{#13480}
2016-07-15 02:30:32 +00:00
367efdcec1 Fixing issue with DTLS channel when using "presumed writable" flag.
The DtlsTransportChannel wasn't properly handling the
P2PTransportChannel becoming writable before receiving a remote
fingerprint; it wasn't starting the DTLS handshake whenever this
happened.

Review-Url: https://codereview.webrtc.org/2140283002
Cr-Commit-Position: refs/heads/master@{#13469}
2016-07-13 19:10:25 +00:00
9794366ff0 Fixing memory leak in TurnServer.
If the test TURN server received two allocate requests from the same
address, it was replacing the old allocation but not deleting it.

Also switching to std::unique_ptr to make it less likely for this to
pop up again.

Review-Url: https://codereview.webrtc.org/2114063002
Cr-Commit-Position: refs/heads/master@{#13449}
2016-07-12 18:04:57 +00:00
d8f6fc4656 Make the state transition for a PortAllocatorSession in each derived class instead of in the base class.
Putting them in the base class may potentially break subclasses if they
have not called the same method in the base class.

R=deadbeef@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2120733002 .

Cr-Commit-Position: refs/heads/master@{#13372}
2016-07-02 00:31:24 +00:00
5622c5eae5 If continual gathering is enabled,
we will periodically check if any network does not have any connection on it and if yes, attempt to re-gather on those networks.

BUG=
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2025573002 .

Cr-Commit-Position: refs/heads/master@{#13367}
2016-07-01 20:59:39 +00:00
b9e7b4ad66 Add config to prune low-priority TURN ports for creating connections
When the flag prune_turn_ports is set, When a high-priority turn port becomes available, it will prune low-priority ones. The pruned port will not be used for creating connections locally and its candidates will not be sent over to the remove side (unless they have been sent before being pruned).

This effectively reduces the number of TURN candidates and connections created by TURN ports.

BUG=
R=deadbeef@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2093623004 .

Committed: https://crrev.com/17aac053f585e892114974d2eb248e05ad37f973
Cr-Original-Commit-Position: refs/heads/master@{#13335}
Cr-Commit-Position: refs/heads/master@{#13354}
2016-07-01 03:52:16 +00:00
f4e8cf0d5b Revert of Add config to prune TURN ports (patchset #12 id:360001 of https://codereview.webrtc.org/2093623004/ )
Reason for revert:
Breaks Win32/Win64 Debug bots in client.webrtc waterfall

Original issue's description:
> Add config to prune low-priority TURN ports for creating connections
> When the flag prune_turn_ports is set, When a high-priority turn port becomes available, it will prune low-priority ones. The pruned port will not be used for creating connections locally and its candidates will not be sent over to the remove side (unless they have been sent before being pruned).
>
> This effectively reduces the number of TURN candidates and connections created by TURN ports.
>
> BUG=
> R=deadbeef@webrtc.org, pthatcher@webrtc.org
>
> Committed: https://crrev.com/17aac053f585e892114974d2eb248e05ad37f973
> Cr-Commit-Position: refs/heads/master@{#13335}

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

Review-Url: https://codereview.webrtc.org/2111663003
Cr-Commit-Position: refs/heads/master@{#13342}
2016-06-30 08:55:10 +00:00
17aac053f5 Add config to prune low-priority TURN ports for creating connections
When the flag prune_turn_ports is set, When a high-priority turn port becomes available, it will prune low-priority ones. The pruned port will not be used for creating connections locally and its candidates will not be sent over to the remove side (unless they have been sent before being pruned).

This effectively reduces the number of TURN candidates and connections created by TURN ports.

BUG=
R=deadbeef@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2093623004 .

Cr-Commit-Position: refs/heads/master@{#13335}
2016-06-30 04:42:05 +00:00
886815bc36 Add back P2PTransportChannel.Connect, for Chromium.
Will remove it as soon as Chromium does a roll and can stop using it.

TBR=pthatcher@webrtc.org
NOTRY=True

Review-Url: https://codereview.webrtc.org/2110853005
Cr-Commit-Position: refs/heads/master@{#13332}
2016-06-29 22:21:14 +00:00
b825aee04a Start ICE connectivity checks as soon as the first pair is pingable.
Previously, we were starting a periodic timer when the local
description was set. The first connection may be created at any
time after this happens, so after creating the first connection, we
need to wait until that timer next fires before sending a ping.

Now we just start that timer (and send the first ping) immediately
after the first connection becomes pingable.

This CL also removes the "Connect" method. The only vestigal
effect of this method was to start the periodic timer, which is
now not needed since it happens automatically.

R=honghaiz@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2099563004 .

Cr-Commit-Position: refs/heads/master@{#13331}
2016-06-29 20:07:26 +00:00
f3d8d32c5f Fixing P2PTransportChannelTest.TestIceConfigWillPassDownToPort.
Was flaky because it was checking the role of a port, but a role
conflict could occur before this happened which would swap the
role.

BUG=webrtc:6019
R=honghaiz@webrtc.org, pthatcher@webrtc.org
TBR=honghaiz@webrtc.org

Review URL: https://codereview.webrtc.org/2108493003 .

Cr-Commit-Position: refs/heads/master@{#13327}
2016-06-29 18:07:44 +00:00
d00c05788f Fix the turn and udp port type.
The port type was not set if it was created on a shared socket.

BUG=
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2099023002 .

Cr-Commit-Position: refs/heads/master@{#13313}
2016-06-28 16:44:55 +00:00
6bb1ef2b86 Fixing bug where Connection drops packets when presumed writable.
The "should I simulate EWOULDBLOCK?" determination now happens
solely in P2PTransportChannel. This also fixes a bug where the
"last packet id" was set even if no packet was sent.

R=honghaiz@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2099783002 .

Cr-Commit-Position: refs/heads/master@{#13307}
2016-06-28 01:09:10 +00:00
f8e65779a7 Add virtual Initialize methods to PortAllocator and NetworkManager.
This will allow PeerConnection to handle hopping to the right thread
and doing thread-specific initialization for the PortAllocator.
This eliminates a required thread-hop for whatever is passing the
PortAllocator into CreatePeerConnection.

BUG=617648
R=pthatcher@webrtc.org, skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2097653002 .

Committed: https://crrev.com/a6bdb0990a659ff9e7c4374f5033a6bcc4fbfb21
Cr-Original-Commit-Position: refs/heads/master@{#13283}
Cr-Commit-Position: refs/heads/master@{#13306}
2016-06-28 00:20:25 +00:00
716d07a241 Using fake clock for TURN port tests and un-disabling some tests.
The fake clock has a few advantages:
1. It lets use verify that operations take the expected number of
   round trips.
2. It makes the tests faster by letting us remove the equivalent
   of "Sleep(500)" all over the tests.
3. It makes the tests less flaky, because sometimes sleeping for
   500ms or waiting for 1s is not enough.

R=honghaiz@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2097793003 .

Cr-Commit-Position: refs/heads/master@{#13304}
2016-06-27 21:07:51 +00:00
56ce49d710 Delete a method that was not used.
This was a mistake from code merging.

BUG=
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/2095263002 .

Cr-Commit-Position: refs/heads/master@{#13301}
2016-06-27 18:19:33 +00:00