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

Side by Side Diff: talk/app/webrtc/webrtcsession.cc

Issue 1516993002: Properly handle different transports having different SSL roles. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Adding a helper method for GetSslRole, and some more comments. Created 4 years, 11 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
« no previous file with comments | « talk/app/webrtc/webrtcsession.h ('k') | talk/app/webrtc/webrtcsession_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 } 754 }
755 755
756 void WebRtcSession::SetSdesPolicy(cricket::SecurePolicy secure_policy) { 756 void WebRtcSession::SetSdesPolicy(cricket::SecurePolicy secure_policy) {
757 webrtc_session_desc_factory_->SetSdesPolicy(secure_policy); 757 webrtc_session_desc_factory_->SetSdesPolicy(secure_policy);
758 } 758 }
759 759
760 cricket::SecurePolicy WebRtcSession::SdesPolicy() const { 760 cricket::SecurePolicy WebRtcSession::SdesPolicy() const {
761 return webrtc_session_desc_factory_->SdesPolicy(); 761 return webrtc_session_desc_factory_->SdesPolicy();
762 } 762 }
763 763
764 bool WebRtcSession::GetSslRole(rtc::SSLRole* role) { 764 bool WebRtcSession::GetSslRole(const std::string& transport_name,
765 rtc::SSLRole* role) {
765 if (!local_desc_ || !remote_desc_) { 766 if (!local_desc_ || !remote_desc_) {
766 LOG(LS_INFO) << "Local and Remote descriptions must be applied to get " 767 LOG(LS_INFO) << "Local and Remote descriptions must be applied to get "
767 << "SSL Role of the session."; 768 << "SSL Role of the session.";
768 return false; 769 return false;
769 } 770 }
770 771
771 return transport_controller_->GetSslRole(role); 772 return transport_controller_->GetSslRole(transport_name, role);
773 }
774
775 bool WebRtcSession::GetSslRole(const cricket::BaseChannel* channel,
776 rtc::SSLRole* role) {
777 return channel && GetSslRole(channel->transport_name(), role);
772 } 778 }
773 779
774 void WebRtcSession::CreateOffer( 780 void WebRtcSession::CreateOffer(
775 CreateSessionDescriptionObserver* observer, 781 CreateSessionDescriptionObserver* observer,
776 const PeerConnectionInterface::RTCOfferAnswerOptions& options, 782 const PeerConnectionInterface::RTCOfferAnswerOptions& options,
777 const cricket::MediaSessionOptions& session_options) { 783 const cricket::MediaSessionOptions& session_options) {
778 webrtc_session_desc_factory_->CreateOffer(observer, options, session_options); 784 webrtc_session_desc_factory_->CreateOffer(observer, options, session_options);
779 } 785 }
780 786
781 void WebRtcSession::CreateAnswer( 787 void WebRtcSession::CreateAnswer(
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 EnableChannels(); 969 EnableChannels();
964 SetState(source == cricket::CS_LOCAL ? STATE_SENTPRANSWER 970 SetState(source == cricket::CS_LOCAL ? STATE_SENTPRANSWER
965 : STATE_RECEIVEDPRANSWER); 971 : STATE_RECEIVEDPRANSWER);
966 if (!PushdownMediaDescription(cricket::CA_PRANSWER, source, err_desc)) { 972 if (!PushdownMediaDescription(cricket::CA_PRANSWER, source, err_desc)) {
967 SetError(ERROR_CONTENT, *err_desc); 973 SetError(ERROR_CONTENT, *err_desc);
968 } 974 }
969 if (error() != ERROR_NONE) { 975 if (error() != ERROR_NONE) {
970 return BadPranswerSdp(source, GetSessionErrorMsg(), err_desc); 976 return BadPranswerSdp(source, GetSessionErrorMsg(), err_desc);
971 } 977 }
972 } else if (action == kAnswer) { 978 } else if (action == kAnswer) {
973 if (!PushdownTransportDescription(source, cricket::CA_ANSWER, &td_err)) {
974 return BadAnswerSdp(source, MakeTdErrorString(td_err), err_desc);
975 }
976 const cricket::ContentGroup* local_bundle = 979 const cricket::ContentGroup* local_bundle =
977 local_desc_->description()->GetGroupByName(cricket::GROUP_TYPE_BUNDLE); 980 local_desc_->description()->GetGroupByName(cricket::GROUP_TYPE_BUNDLE);
978 const cricket::ContentGroup* remote_bundle = 981 const cricket::ContentGroup* remote_bundle =
979 remote_desc_->description()->GetGroupByName(cricket::GROUP_TYPE_BUNDLE); 982 remote_desc_->description()->GetGroupByName(cricket::GROUP_TYPE_BUNDLE);
980 if (local_bundle && remote_bundle) { 983 if (local_bundle && remote_bundle) {
981 // The answerer decides the transport to bundle on 984 // The answerer decides the transport to bundle on.
982 const cricket::ContentGroup* answer_bundle = 985 const cricket::ContentGroup* answer_bundle =
983 (source == cricket::CS_LOCAL ? local_bundle : remote_bundle); 986 (source == cricket::CS_LOCAL ? local_bundle : remote_bundle);
984 if (!EnableBundle(*answer_bundle)) { 987 if (!EnableBundle(*answer_bundle)) {
985 LOG(LS_WARNING) << "Failed to enable BUNDLE."; 988 LOG(LS_WARNING) << "Failed to enable BUNDLE.";
986 return BadAnswerSdp(source, kEnableBundleFailed, err_desc); 989 return BadAnswerSdp(source, kEnableBundleFailed, err_desc);
987 } 990 }
988 } 991 }
992 // Only push down the transport description after enabling BUNDLE; we don't
993 // want to push down a description on a transport about to be destroyed.
994 if (!PushdownTransportDescription(source, cricket::CA_ANSWER, &td_err)) {
995 return BadAnswerSdp(source, MakeTdErrorString(td_err), err_desc);
996 }
989 EnableChannels(); 997 EnableChannels();
990 SetState(STATE_INPROGRESS); 998 SetState(STATE_INPROGRESS);
991 if (!PushdownMediaDescription(cricket::CA_ANSWER, source, err_desc)) { 999 if (!PushdownMediaDescription(cricket::CA_ANSWER, source, err_desc)) {
992 SetError(ERROR_CONTENT, *err_desc); 1000 SetError(ERROR_CONTENT, *err_desc);
993 } 1001 }
994 if (error() != ERROR_NONE) { 1002 if (error() != ERROR_NONE) {
995 return BadAnswerSdp(source, GetSessionErrorMsg(), err_desc); 1003 return BadAnswerSdp(source, GetSessionErrorMsg(), err_desc);
996 } 1004 }
997 } 1005 }
998 return true; 1006 return true;
(...skipping 1197 matching lines...) Expand 10 before | Expand all | Expand 10 after
2196 } 2204 }
2197 } 2205 }
2198 2206
2199 void WebRtcSession::OnSentPacket_w(cricket::TransportChannel* channel, 2207 void WebRtcSession::OnSentPacket_w(cricket::TransportChannel* channel,
2200 const rtc::SentPacket& sent_packet) { 2208 const rtc::SentPacket& sent_packet) {
2201 RTC_DCHECK(worker_thread()->IsCurrent()); 2209 RTC_DCHECK(worker_thread()->IsCurrent());
2202 media_controller_->call_w()->OnSentPacket(sent_packet); 2210 media_controller_->call_w()->OnSentPacket(sent_packet);
2203 } 2211 }
2204 2212
2205 } // namespace webrtc 2213 } // namespace webrtc
OLDNEW
« no previous file with comments | « talk/app/webrtc/webrtcsession.h ('k') | talk/app/webrtc/webrtcsession_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698