Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: webrtc/p2p/base/dtlstransportchannel.cc

Issue 1246913005: TransportController refactoring (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixed bugs with ICE connection state that occur when destroying transports Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2011 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 // We force a read event here to ensure that we don't overflow our queue. 80 // We force a read event here to ensure that we don't overflow our queue.
81 bool ret = packets_.WriteBack(data, size, NULL); 81 bool ret = packets_.WriteBack(data, size, NULL);
82 CHECK(ret) << "Failed to write packet to queue."; 82 CHECK(ret) << "Failed to write packet to queue.";
83 if (ret) { 83 if (ret) {
84 SignalEvent(this, rtc::SE_READ, 0); 84 SignalEvent(this, rtc::SE_READ, 0);
85 } 85 }
86 return ret; 86 return ret;
87 } 87 }
88 88
89 DtlsTransportChannelWrapper::DtlsTransportChannelWrapper( 89 DtlsTransportChannelWrapper::DtlsTransportChannelWrapper(
90 Transport* transport, 90 Transport* transport,
91 TransportChannelImpl* channel) 91 TransportChannelImpl* channel)
92 : TransportChannelImpl(channel->content_name(), channel->component()), 92 : TransportChannelImpl(channel->transport_name(), channel->component()),
93 transport_(transport), 93 transport_(transport),
94 worker_thread_(rtc::Thread::Current()), 94 worker_thread_(rtc::Thread::Current()),
95 channel_(channel), 95 channel_(channel),
96 downward_(NULL), 96 downward_(NULL),
97 dtls_state_(STATE_NONE), 97 dtls_state_(STATE_NONE),
98 ssl_role_(rtc::SSL_CLIENT), 98 ssl_role_(rtc::SSL_CLIENT),
99 ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_10) { 99 ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_10) {
100 channel_->SignalReadableState.connect(this, 100 channel_->SignalReadableState.connect(this,
101 &DtlsTransportChannelWrapper::OnReadableState); 101 &DtlsTransportChannelWrapper::OnReadableState);
102 channel_->SignalWritableState.connect(this, 102 channel_->SignalWritableState.connect(this,
103 &DtlsTransportChannelWrapper::OnWritableState); 103 &DtlsTransportChannelWrapper::OnWritableState);
104 channel_->SignalReadPacket.connect(this, 104 channel_->SignalReadPacket.connect(this,
105 &DtlsTransportChannelWrapper::OnReadPacket); 105 &DtlsTransportChannelWrapper::OnReadPacket);
106 channel_->SignalReadyToSend.connect(this, 106 channel_->SignalReadyToSend.connect(this,
107 &DtlsTransportChannelWrapper::OnReadyToSend); 107 &DtlsTransportChannelWrapper::OnReadyToSend);
108 channel_->SignalRequestSignaling.connect(this, 108 channel_->SignalGatheringState.connect(
109 &DtlsTransportChannelWrapper::OnRequestSignaling); 109 this, &DtlsTransportChannelWrapper::OnGatheringState);
110 channel_->SignalCandidateReady.connect(this, 110 channel_->SignalCandidateGathered.connect(
111 &DtlsTransportChannelWrapper::OnCandidateReady); 111 this, &DtlsTransportChannelWrapper::OnCandidateGathered);
112 channel_->SignalCandidatesAllocationDone.connect(this,
113 &DtlsTransportChannelWrapper::OnCandidatesAllocationDone);
114 channel_->SignalRoleConflict.connect(this, 112 channel_->SignalRoleConflict.connect(this,
115 &DtlsTransportChannelWrapper::OnRoleConflict); 113 &DtlsTransportChannelWrapper::OnRoleConflict);
116 channel_->SignalRouteChange.connect(this, 114 channel_->SignalRouteChange.connect(this,
117 &DtlsTransportChannelWrapper::OnRouteChange); 115 &DtlsTransportChannelWrapper::OnRouteChange);
118 channel_->SignalConnectionRemoved.connect(this, 116 channel_->SignalConnectionRemoved.connect(this,
119 &DtlsTransportChannelWrapper::OnConnectionRemoved); 117 &DtlsTransportChannelWrapper::OnConnectionRemoved);
120 channel_->SignalReceivingState.connect(this, 118 channel_->SignalReceivingState.connect(this,
121 &DtlsTransportChannelWrapper::OnReceivingState); 119 &DtlsTransportChannelWrapper::OnReceivingState);
122 } 120 }
123 121
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 rtc::Buffer remote_fingerprint_value(digest, digest_len); 204 rtc::Buffer remote_fingerprint_value(digest, digest_len);
207 205
208 if (dtls_state_ != STATE_NONE && 206 if (dtls_state_ != STATE_NONE &&
209 remote_fingerprint_value_ == remote_fingerprint_value && 207 remote_fingerprint_value_ == remote_fingerprint_value &&
210 !digest_alg.empty()) { 208 !digest_alg.empty()) {
211 // This may happen during renegotiation. 209 // This may happen during renegotiation.
212 LOG_J(LS_INFO, this) << "Ignoring identical remote DTLS fingerprint"; 210 LOG_J(LS_INFO, this) << "Ignoring identical remote DTLS fingerprint";
213 return true; 211 return true;
214 } 212 }
215 213
216 // Allow SetRemoteFingerprint with a NULL digest even if SetLocalIdentity 214 // Allow SetRemoteFingerprint with a NULL digest even if SetLocalCertificate
217 // hasn't been called. 215 // hasn't been called.
218 if (dtls_state_ > STATE_OFFERED || 216 if (dtls_state_ > STATE_OFFERED ||
219 (dtls_state_ == STATE_NONE && !digest_alg.empty())) { 217 (dtls_state_ == STATE_NONE && !digest_alg.empty())) {
220 LOG_J(LS_ERROR, this) << "Can't set DTLS remote settings in this state."; 218 LOG_J(LS_ERROR, this) << "Can't set DTLS remote settings in this state.";
221 return false; 219 return false;
222 } 220 }
223 221
224 if (digest_alg.empty()) { 222 if (digest_alg.empty()) {
225 LOG_J(LS_INFO, this) << "Other side didn't support DTLS."; 223 LOG_J(LS_INFO, this) << "Other side didn't support DTLS.";
226 dtls_state_ = STATE_NONE; 224 dtls_state_ = STATE_NONE;
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 601
604 tmp_data += record_len + kDtlsRecordHeaderLen; 602 tmp_data += record_len + kDtlsRecordHeaderLen;
605 tmp_size -= record_len + kDtlsRecordHeaderLen; 603 tmp_size -= record_len + kDtlsRecordHeaderLen;
606 } 604 }
607 605
608 // Looks good. Pass to the SIC which ends up being passed to 606 // Looks good. Pass to the SIC which ends up being passed to
609 // the DTLS stack. 607 // the DTLS stack.
610 return downward_->OnPacketReceived(data, size); 608 return downward_->OnPacketReceived(data, size);
611 } 609 }
612 610
613 void DtlsTransportChannelWrapper::OnRequestSignaling( 611 void DtlsTransportChannelWrapper::OnGatheringState(
614 TransportChannelImpl* channel) { 612 TransportChannelImpl* channel) {
615 ASSERT(channel == channel_); 613 ASSERT(channel == channel_);
616 SignalRequestSignaling(this); 614 SignalGatheringState(this);
617 } 615 }
618 616
619 void DtlsTransportChannelWrapper::OnCandidateReady( 617 void DtlsTransportChannelWrapper::OnCandidateGathered(
620 TransportChannelImpl* channel, const Candidate& c) { 618 TransportChannelImpl* channel,
619 const Candidate& c) {
621 ASSERT(channel == channel_); 620 ASSERT(channel == channel_);
622 SignalCandidateReady(this, c); 621 SignalCandidateGathered(this, c);
623 }
624
625 void DtlsTransportChannelWrapper::OnCandidatesAllocationDone(
626 TransportChannelImpl* channel) {
627 ASSERT(channel == channel_);
628 SignalCandidatesAllocationDone(this);
629 } 622 }
630 623
631 void DtlsTransportChannelWrapper::OnRoleConflict( 624 void DtlsTransportChannelWrapper::OnRoleConflict(
632 TransportChannelImpl* channel) { 625 TransportChannelImpl* channel) {
633 ASSERT(channel == channel_); 626 ASSERT(channel == channel_);
634 SignalRoleConflict(this); 627 SignalRoleConflict(this);
635 } 628 }
636 629
637 void DtlsTransportChannelWrapper::OnRouteChange( 630 void DtlsTransportChannelWrapper::OnRouteChange(
638 TransportChannel* channel, const Candidate& candidate) { 631 TransportChannel* channel, const Candidate& candidate) {
639 ASSERT(channel == channel_); 632 ASSERT(channel == channel_);
640 SignalRouteChange(this, candidate); 633 SignalRouteChange(this, candidate);
641 } 634 }
642 635
643 void DtlsTransportChannelWrapper::OnConnectionRemoved( 636 void DtlsTransportChannelWrapper::OnConnectionRemoved(
644 TransportChannelImpl* channel) { 637 TransportChannelImpl* channel) {
645 ASSERT(channel == channel_); 638 ASSERT(channel == channel_);
646 SignalConnectionRemoved(this); 639 SignalConnectionRemoved(this);
647 } 640 }
648 641
649 } // namespace cricket 642 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698