| OLD | NEW |
| 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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 ice_transport_->SendPacket(static_cast<const char*>(data), data_len, | 88 ice_transport_->SendPacket(static_cast<const char*>(data), data_len, |
| 89 packet_options); | 89 packet_options); |
| 90 if (written) { | 90 if (written) { |
| 91 *written = data_len; | 91 *written = data_len; |
| 92 } | 92 } |
| 93 return rtc::SR_SUCCESS; | 93 return rtc::SR_SUCCESS; |
| 94 } | 94 } |
| 95 | 95 |
| 96 bool StreamInterfaceChannel::OnPacketReceived(const char* data, size_t size) { | 96 bool StreamInterfaceChannel::OnPacketReceived(const char* data, size_t size) { |
| 97 // We force a read event here to ensure that we don't overflow our queue. | 97 // We force a read event here to ensure that we don't overflow our queue. |
| 98 bool ret = packets_.WriteBack(data, size, NULL); | 98 bool ret = packets_.WriteBack(data, size, nullptr); |
| 99 RTC_CHECK(ret) << "Failed to write packet to queue."; | 99 RTC_CHECK(ret) << "Failed to write packet to queue."; |
| 100 if (ret) { | 100 if (ret) { |
| 101 SignalEvent(this, rtc::SE_READ, 0); | 101 SignalEvent(this, rtc::SE_READ, 0); |
| 102 } | 102 } |
| 103 return ret; | 103 return ret; |
| 104 } | 104 } |
| 105 | 105 |
| 106 void StreamInterfaceChannel::Close() { | 106 void StreamInterfaceChannel::Close() { |
| 107 packets_.Clear(); | 107 packets_.Clear(); |
| 108 state_ = rtc::SS_CLOSED; | 108 state_ = rtc::SS_CLOSED; |
| 109 } | 109 } |
| 110 | 110 |
| 111 DtlsTransport::DtlsTransport(IceTransportInternal* ice_transport) | 111 DtlsTransport::DtlsTransport(IceTransportInternal* ice_transport) |
| 112 : transport_name_(ice_transport->transport_name()), | 112 : transport_name_(ice_transport->transport_name()), |
| 113 component_(ice_transport->component()), | 113 component_(ice_transport->component()), |
| 114 network_thread_(rtc::Thread::Current()), | 114 network_thread_(rtc::Thread::Current()), |
| 115 ice_transport_(ice_transport), | 115 ice_transport_(ice_transport), |
| 116 downward_(NULL), | 116 downward_(nullptr), |
| 117 ssl_role_(rtc::SSL_CLIENT), | 117 ssl_role_(rtc::SSL_CLIENT), |
| 118 ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_12) { | 118 ssl_max_version_(rtc::SSL_PROTOCOL_DTLS_12) { |
| 119 ice_transport_->SignalWritableState.connect(this, | 119 ice_transport_->SignalWritableState.connect(this, |
| 120 &DtlsTransport::OnWritableState); | 120 &DtlsTransport::OnWritableState); |
| 121 ice_transport_->SignalReadPacket.connect(this, &DtlsTransport::OnReadPacket); | 121 ice_transport_->SignalReadPacket.connect(this, &DtlsTransport::OnReadPacket); |
| 122 ice_transport_->SignalSentPacket.connect(this, &DtlsTransport::OnSentPacket); | 122 ice_transport_->SignalSentPacket.connect(this, &DtlsTransport::OnSentPacket); |
| 123 ice_transport_->SignalReadyToSend.connect(this, | 123 ice_transport_->SignalReadyToSend.connect(this, |
| 124 &DtlsTransport::OnReadyToSend); | 124 &DtlsTransport::OnReadyToSend); |
| 125 ice_transport_->SignalReceivingState.connect( | 125 ice_transport_->SignalReceivingState.connect( |
| 126 this, &DtlsTransport::OnReceivingState); | 126 this, &DtlsTransport::OnReceivingState); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 138 } else { | 138 } else { |
| 139 LOG_J(LS_ERROR, this) << "Can't change DTLS local identity in this state"; | 139 LOG_J(LS_ERROR, this) << "Can't change DTLS local identity in this state"; |
| 140 return false; | 140 return false; |
| 141 } | 141 } |
| 142 } | 142 } |
| 143 | 143 |
| 144 if (certificate) { | 144 if (certificate) { |
| 145 local_certificate_ = certificate; | 145 local_certificate_ = certificate; |
| 146 dtls_active_ = true; | 146 dtls_active_ = true; |
| 147 } else { | 147 } else { |
| 148 LOG_J(LS_INFO, this) << "NULL DTLS identity supplied. Not doing DTLS"; | 148 LOG_J(LS_INFO, this) << "null DTLS identity supplied. Not doing DTLS"; |
| 149 } | 149 } |
| 150 | 150 |
| 151 return true; | 151 return true; |
| 152 } | 152 } |
| 153 | 153 |
| 154 rtc::scoped_refptr<rtc::RTCCertificate> DtlsTransport::GetLocalCertificate() | 154 rtc::scoped_refptr<rtc::RTCCertificate> DtlsTransport::GetLocalCertificate() |
| 155 const { | 155 const { |
| 156 return local_certificate_; | 156 return local_certificate_; |
| 157 } | 157 } |
| 158 | 158 |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 const rtc::PacketOptions& options, | 378 const rtc::PacketOptions& options, |
| 379 int flags) { | 379 int flags) { |
| 380 if (!dtls_active_) { | 380 if (!dtls_active_) { |
| 381 // Not doing DTLS. | 381 // Not doing DTLS. |
| 382 return ice_transport_->SendPacket(data, size, options); | 382 return ice_transport_->SendPacket(data, size, options); |
| 383 } | 383 } |
| 384 | 384 |
| 385 switch (dtls_state()) { | 385 switch (dtls_state()) { |
| 386 case DTLS_TRANSPORT_NEW: | 386 case DTLS_TRANSPORT_NEW: |
| 387 // Can't send data until the connection is active. | 387 // Can't send data until the connection is active. |
| 388 // TODO(ekr@rtfm.com): assert here if dtls_ is NULL? | 388 // TODO(ekr@rtfm.com): assert here if dtls_ is null? |
| 389 return -1; | 389 return -1; |
| 390 case DTLS_TRANSPORT_CONNECTING: | 390 case DTLS_TRANSPORT_CONNECTING: |
| 391 // Can't send data until the connection is active. | 391 // Can't send data until the connection is active. |
| 392 return -1; | 392 return -1; |
| 393 case DTLS_TRANSPORT_CONNECTED: | 393 case DTLS_TRANSPORT_CONNECTED: |
| 394 if (flags & PF_SRTP_BYPASS) { | 394 if (flags & PF_SRTP_BYPASS) { |
| 395 RTC_DCHECK(!srtp_ciphers_.empty()); | 395 RTC_DCHECK(!srtp_ciphers_.empty()); |
| 396 if (!IsRtpPacket(data, size)) { | 396 if (!IsRtpPacket(data, size)) { |
| 397 return -1; | 397 return -1; |
| 398 } | 398 } |
| 399 | 399 |
| 400 return ice_transport_->SendPacket(data, size, options); | 400 return ice_transport_->SendPacket(data, size, options); |
| 401 } else { | 401 } else { |
| 402 return (dtls_->WriteAll(data, size, NULL, NULL) == rtc::SR_SUCCESS) | 402 return (dtls_->WriteAll(data, size, nullptr, nullptr) == |
| 403 rtc::SR_SUCCESS) |
| 403 ? static_cast<int>(size) | 404 ? static_cast<int>(size) |
| 404 : -1; | 405 : -1; |
| 405 } | 406 } |
| 406 case DTLS_TRANSPORT_FAILED: | 407 case DTLS_TRANSPORT_FAILED: |
| 407 case DTLS_TRANSPORT_CLOSED: | 408 case DTLS_TRANSPORT_CLOSED: |
| 408 // Can't send anything when we're closed. | 409 // Can't send anything when we're closed. |
| 409 return -1; | 410 return -1; |
| 410 default: | 411 default: |
| 411 RTC_NOTREACHED(); | 412 RTC_NOTREACHED(); |
| 412 return -1; | 413 return -1; |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 | 716 |
| 716 dtls_->SetInitialRetransmissionTimeout(initial_timeout); | 717 dtls_->SetInitialRetransmissionTimeout(initial_timeout); |
| 717 } else { | 718 } else { |
| 718 LOG_J(LS_INFO, this) | 719 LOG_J(LS_INFO, this) |
| 719 << "no RTT estimate - using default DTLS handshake timeout"; | 720 << "no RTT estimate - using default DTLS handshake timeout"; |
| 720 } | 721 } |
| 721 } | 722 } |
| 722 | 723 |
| 723 | 724 |
| 724 } // namespace cricket | 725 } // namespace cricket |
| OLD | NEW |