| 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 72 using cricket::StreamParamsVec; | 72 using cricket::StreamParamsVec; | 
| 73 using cricket::TransportDescription; | 73 using cricket::TransportDescription; | 
| 74 using cricket::TransportInfo; | 74 using cricket::TransportInfo; | 
| 75 using cricket::VideoContentDescription; | 75 using cricket::VideoContentDescription; | 
| 76 using rtc::SocketAddress; | 76 using rtc::SocketAddress; | 
| 77 | 77 | 
| 78 namespace cricket { | 78 namespace cricket { | 
| 79 class SessionDescription; | 79 class SessionDescription; | 
| 80 } | 80 } | 
| 81 | 81 | 
|  | 82 // TODO(deadbeef): Switch to using anonymous namespace rather than declaring | 
|  | 83 // everything "static". | 
| 82 namespace webrtc { | 84 namespace webrtc { | 
| 83 | 85 | 
| 84 // Line type | 86 // Line type | 
| 85 // RFC 4566 | 87 // RFC 4566 | 
| 86 // An SDP session description consists of a number of lines of text of | 88 // An SDP session description consists of a number of lines of text of | 
| 87 // the form: | 89 // the form: | 
| 88 // <type>=<value> | 90 // <type>=<value> | 
| 89 // where <type> MUST be exactly one case-significant character. | 91 // where <type> MUST be exactly one case-significant character. | 
| 90 static const int kLinePrefixLength = 2;  // Length of <type>= | 92 static const int kLinePrefixLength = 2;  // Length of <type>= | 
| 91 static const char kLineTypeVersion = 'v'; | 93 static const char kLineTypeVersion = 'v'; | 
| (...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 783   if (!candidates) { | 785   if (!candidates) { | 
| 784     return; | 786     return; | 
| 785   } | 787   } | 
| 786   const IceCandidateCollection* cc = desci.candidates(mline_index); | 788   const IceCandidateCollection* cc = desci.candidates(mline_index); | 
| 787   for (size_t i = 0; i < cc->count(); ++i) { | 789   for (size_t i = 0; i < cc->count(); ++i) { | 
| 788     const IceCandidateInterface* candidate = cc->at(i); | 790     const IceCandidateInterface* candidate = cc->at(i); | 
| 789     candidates->push_back(candidate->candidate()); | 791     candidates->push_back(candidate->candidate()); | 
| 790   } | 792   } | 
| 791 } | 793 } | 
| 792 | 794 | 
|  | 795 static bool IsValidPort(int port) { | 
|  | 796   return port >= 0 && port <= 65535; | 
|  | 797 } | 
|  | 798 | 
| 793 std::string SdpSerialize(const JsepSessionDescription& jdesc, | 799 std::string SdpSerialize(const JsepSessionDescription& jdesc, | 
| 794                          bool unified_plan_sdp) { | 800                          bool unified_plan_sdp) { | 
| 795   const cricket::SessionDescription* desc = jdesc.description(); | 801   const cricket::SessionDescription* desc = jdesc.description(); | 
| 796   if (!desc) { | 802   if (!desc) { | 
| 797     return ""; | 803     return ""; | 
| 798   } | 804   } | 
| 799 | 805 | 
| 800   std::string message; | 806   std::string message; | 
| 801 | 807 | 
| 802   // Session Description. | 808   // Session Description. | 
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1019   const std::string& transport = fields[2]; | 1025   const std::string& transport = fields[2]; | 
| 1020   uint32_t priority = 0; | 1026   uint32_t priority = 0; | 
| 1021   if (!GetValueFromString(first_line, fields[3], &priority, error)) { | 1027   if (!GetValueFromString(first_line, fields[3], &priority, error)) { | 
| 1022     return false; | 1028     return false; | 
| 1023   } | 1029   } | 
| 1024   const std::string& connection_address = fields[4]; | 1030   const std::string& connection_address = fields[4]; | 
| 1025   int port = 0; | 1031   int port = 0; | 
| 1026   if (!GetValueFromString(first_line, fields[5], &port, error)) { | 1032   if (!GetValueFromString(first_line, fields[5], &port, error)) { | 
| 1027     return false; | 1033     return false; | 
| 1028   } | 1034   } | 
|  | 1035   if (!IsValidPort(port)) { | 
|  | 1036     return ParseFailed(first_line, "Invalid port number.", error); | 
|  | 1037   } | 
| 1029   SocketAddress address(connection_address, port); | 1038   SocketAddress address(connection_address, port); | 
| 1030 | 1039 | 
| 1031   cricket::ProtocolType protocol; | 1040   cricket::ProtocolType protocol; | 
| 1032   if (!StringToProto(transport.c_str(), &protocol)) { | 1041   if (!StringToProto(transport.c_str(), &protocol)) { | 
| 1033     return ParseFailed(first_line, "Unsupported transport type.", error); | 1042     return ParseFailed(first_line, "Unsupported transport type.", error); | 
| 1034   } | 1043   } | 
| 1035   switch (protocol) { | 1044   switch (protocol) { | 
| 1036     case cricket::PROTO_UDP: | 1045     case cricket::PROTO_UDP: | 
| 1037     case cricket::PROTO_TCP: | 1046     case cricket::PROTO_TCP: | 
| 1038     case cricket::PROTO_SSLTCP: | 1047     case cricket::PROTO_SSLTCP: | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 1065     related_address.SetIP(fields[++current_position]); | 1074     related_address.SetIP(fields[++current_position]); | 
| 1066     ++current_position; | 1075     ++current_position; | 
| 1067   } | 1076   } | 
| 1068   if (fields.size() >= (current_position + 2) && | 1077   if (fields.size() >= (current_position + 2) && | 
| 1069       fields[current_position] == kAttributeCandidateRport) { | 1078       fields[current_position] == kAttributeCandidateRport) { | 
| 1070     int port = 0; | 1079     int port = 0; | 
| 1071     if (!GetValueFromString( | 1080     if (!GetValueFromString( | 
| 1072         first_line, fields[++current_position], &port, error)) { | 1081         first_line, fields[++current_position], &port, error)) { | 
| 1073       return false; | 1082       return false; | 
| 1074     } | 1083     } | 
|  | 1084     if (!IsValidPort(port)) { | 
|  | 1085       return ParseFailed(first_line, "Invalid port number.", error); | 
|  | 1086     } | 
| 1075     related_address.SetPort(port); | 1087     related_address.SetPort(port); | 
| 1076     ++current_position; | 1088     ++current_position; | 
| 1077   } | 1089   } | 
| 1078 | 1090 | 
| 1079   // If this is a TCP candidate, it has additional extension as defined in | 1091   // If this is a TCP candidate, it has additional extension as defined in | 
| 1080   // RFC 6544. | 1092   // RFC 6544. | 
| 1081   std::string tcptype; | 1093   std::string tcptype; | 
| 1082   if (fields.size() >= (current_position + 2) && | 1094   if (fields.size() >= (current_position + 2) && | 
| 1083       fields[current_position] == kTcpCandidateType) { | 1095       fields[current_position] == kTcpCandidateType) { | 
| 1084     tcptype = fields[++current_position]; | 1096     tcptype = fields[++current_position]; | 
| (...skipping 2106 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3191     UpdateCodec<AudioContentDescription, cricket::AudioCodec>( | 3203     UpdateCodec<AudioContentDescription, cricket::AudioCodec>( | 
| 3192         media_desc, payload_type, feedback_param); | 3204         media_desc, payload_type, feedback_param); | 
| 3193   } else if (media_type == cricket::MEDIA_TYPE_VIDEO) { | 3205   } else if (media_type == cricket::MEDIA_TYPE_VIDEO) { | 
| 3194     UpdateCodec<VideoContentDescription, cricket::VideoCodec>( | 3206     UpdateCodec<VideoContentDescription, cricket::VideoCodec>( | 
| 3195         media_desc, payload_type, feedback_param); | 3207         media_desc, payload_type, feedback_param); | 
| 3196   } | 3208   } | 
| 3197   return true; | 3209   return true; | 
| 3198 } | 3210 } | 
| 3199 | 3211 | 
| 3200 }  // namespace webrtc | 3212 }  // namespace webrtc | 
| OLD | NEW | 
|---|