OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 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 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 | 131 |
132 RequestMap::iterator iter = requests_.find(id); | 132 RequestMap::iterator iter = requests_.find(id); |
133 if (iter == requests_.end()) { | 133 if (iter == requests_.end()) { |
134 // TODO(pthatcher): Log unknown responses without being too spammy | 134 // TODO(pthatcher): Log unknown responses without being too spammy |
135 // in the logs. | 135 // in the logs. |
136 return false; | 136 return false; |
137 } | 137 } |
138 | 138 |
139 // Parse the STUN message and continue processing as usual. | 139 // Parse the STUN message and continue processing as usual. |
140 | 140 |
141 rtc::ByteBuffer buf(data, size); | 141 rtc::ByteBufferReader buf(data, size); |
142 rtc::scoped_ptr<StunMessage> response(iter->second->msg_->CreateNew()); | 142 rtc::scoped_ptr<StunMessage> response(iter->second->msg_->CreateNew()); |
143 if (!response->Read(&buf)) { | 143 if (!response->Read(&buf)) { |
144 LOG(LS_WARNING) << "Failed to read STUN response " << rtc::hex_encode(id); | 144 LOG(LS_WARNING) << "Failed to read STUN response " << rtc::hex_encode(id); |
145 return false; | 145 return false; |
146 } | 146 } |
147 | 147 |
148 return CheckResponse(response.get()); | 148 return CheckResponse(response.get()); |
149 } | 149 } |
150 | 150 |
151 StunRequest::StunRequest() | 151 StunRequest::StunRequest() |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 ASSERT(pmsg->message_id == MSG_STUN_SEND); | 206 ASSERT(pmsg->message_id == MSG_STUN_SEND); |
207 | 207 |
208 if (timeout_) { | 208 if (timeout_) { |
209 OnTimeout(); | 209 OnTimeout(); |
210 delete this; | 210 delete this; |
211 return; | 211 return; |
212 } | 212 } |
213 | 213 |
214 tstamp_ = rtc::Time64(); | 214 tstamp_ = rtc::Time64(); |
215 | 215 |
216 rtc::ByteBuffer buf; | 216 rtc::ByteBufferWriter buf; |
217 msg_->Write(&buf); | 217 msg_->Write(&buf); |
218 manager_->SignalSendPacket(buf.Data(), buf.Length(), this); | 218 manager_->SignalSendPacket(buf.Data(), buf.Length(), this); |
219 | 219 |
220 OnSent(); | 220 OnSent(); |
221 manager_->thread_->PostDelayed(resend_delay(), this, MSG_STUN_SEND, NULL); | 221 manager_->thread_->PostDelayed(resend_delay(), this, MSG_STUN_SEND, NULL); |
222 } | 222 } |
223 | 223 |
224 void StunRequest::OnSent() { | 224 void StunRequest::OnSent() { |
225 count_ += 1; | 225 count_ += 1; |
226 if (count_ == MAX_SENDS) | 226 if (count_ == MAX_SENDS) |
227 timeout_ = true; | 227 timeout_ = true; |
228 } | 228 } |
229 | 229 |
230 int StunRequest::resend_delay() { | 230 int StunRequest::resend_delay() { |
231 if (count_ == 0) { | 231 if (count_ == 0) { |
232 return 0; | 232 return 0; |
233 } | 233 } |
234 return DELAY_UNIT * std::min(1 << (count_-1), DELAY_MAX_FACTOR); | 234 return DELAY_UNIT * std::min(1 << (count_-1), DELAY_MAX_FACTOR); |
235 } | 235 } |
236 | 236 |
237 } // namespace cricket | 237 } // namespace cricket |
OLD | NEW |