| 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 |
| 11 #include <memory> | 11 #include <memory> |
| 12 | 12 |
| 13 #if defined(WEBRTC_WIN) | 13 #if defined(WEBRTC_WIN) |
| 14 #include "webrtc/base/win32.h" | 14 #include "webrtc/base/win32.h" |
| 15 #else // !WEBRTC_WIN | 15 #else // !WEBRTC_WIN |
| 16 #define SEC_E_CERT_EXPIRED (-2146893016) | 16 #define SEC_E_CERT_EXPIRED (-2146893016) |
| 17 #endif // !WEBRTC_WIN | 17 #endif // !WEBRTC_WIN |
| 18 | 18 |
| 19 #include "webrtc/base/checks.h" |
| 19 #include "webrtc/base/common.h" | 20 #include "webrtc/base/common.h" |
| 20 #include "webrtc/base/httpbase.h" | 21 #include "webrtc/base/httpbase.h" |
| 21 #include "webrtc/base/logging.h" | 22 #include "webrtc/base/logging.h" |
| 22 #include "webrtc/base/socket.h" | 23 #include "webrtc/base/socket.h" |
| 23 #include "webrtc/base/stringutils.h" | 24 #include "webrtc/base/stringutils.h" |
| 24 #include "webrtc/base/thread.h" | 25 #include "webrtc/base/thread.h" |
| 25 | 26 |
| 26 namespace rtc { | 27 namespace rtc { |
| 27 | 28 |
| 28 ////////////////////////////////////////////////////////////////////// | 29 ////////////////////////////////////////////////////////////////////// |
| (...skipping 28 matching lines...) Expand all Loading... |
| 57 data_size_ = SIZE_UNKNOWN; | 58 data_size_ = SIZE_UNKNOWN; |
| 58 } | 59 } |
| 59 | 60 |
| 60 HttpParser::ProcessResult | 61 HttpParser::ProcessResult |
| 61 HttpParser::Process(const char* buffer, size_t len, size_t* processed, | 62 HttpParser::Process(const char* buffer, size_t len, size_t* processed, |
| 62 HttpError* error) { | 63 HttpError* error) { |
| 63 *processed = 0; | 64 *processed = 0; |
| 64 *error = HE_NONE; | 65 *error = HE_NONE; |
| 65 | 66 |
| 66 if (state_ >= ST_COMPLETE) { | 67 if (state_ >= ST_COMPLETE) { |
| 67 ASSERT(false); | 68 RTC_NOTREACHED(); |
| 68 return PR_COMPLETE; | 69 return PR_COMPLETE; |
| 69 } | 70 } |
| 70 | 71 |
| 71 while (true) { | 72 while (true) { |
| 72 if (state_ < ST_DATA) { | 73 if (state_ < ST_DATA) { |
| 73 size_t pos = *processed; | 74 size_t pos = *processed; |
| 74 while ((pos < len) && (buffer[pos] != '\n')) { | 75 while ((pos < len) && (buffer[pos] != '\n')) { |
| 75 pos += 1; | 76 pos += 1; |
| 76 } | 77 } |
| 77 if (pos >= len) { | 78 if (pos >= len) { |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 break; | 200 break; |
| 200 | 201 |
| 201 case ST_TRAILERS: | 202 case ST_TRAILERS: |
| 202 if (len == 0) { | 203 if (len == 0) { |
| 203 return PR_COMPLETE; | 204 return PR_COMPLETE; |
| 204 } | 205 } |
| 205 // *error = onHttpRecvTrailer(); | 206 // *error = onHttpRecvTrailer(); |
| 206 break; | 207 break; |
| 207 | 208 |
| 208 default: | 209 default: |
| 209 ASSERT(false); | 210 RTC_NOTREACHED(); |
| 210 break; | 211 break; |
| 211 } | 212 } |
| 212 | 213 |
| 213 return PR_CONTINUE; | 214 return PR_CONTINUE; |
| 214 } | 215 } |
| 215 | 216 |
| 216 bool | 217 bool |
| 217 HttpParser::is_valid_end_of_input() const { | 218 HttpParser::is_valid_end_of_input() const { |
| 218 return (state_ == ST_DATA) && (data_size_ == SIZE_UNKNOWN); | 219 return (state_ == ST_DATA) && (data_size_ == SIZE_UNKNOWN); |
| 219 } | 220 } |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 } | 370 } |
| 370 | 371 |
| 371 bool | 372 bool |
| 372 HttpBase::isConnected() const { | 373 HttpBase::isConnected() const { |
| 373 return (http_stream_ != NULL) && (http_stream_->GetState() == SS_OPEN); | 374 return (http_stream_ != NULL) && (http_stream_->GetState() == SS_OPEN); |
| 374 } | 375 } |
| 375 | 376 |
| 376 bool | 377 bool |
| 377 HttpBase::attach(StreamInterface* stream) { | 378 HttpBase::attach(StreamInterface* stream) { |
| 378 if ((mode_ != HM_NONE) || (http_stream_ != NULL) || (stream == NULL)) { | 379 if ((mode_ != HM_NONE) || (http_stream_ != NULL) || (stream == NULL)) { |
| 379 ASSERT(false); | 380 RTC_NOTREACHED(); |
| 380 return false; | 381 return false; |
| 381 } | 382 } |
| 382 http_stream_ = stream; | 383 http_stream_ = stream; |
| 383 http_stream_->SignalEvent.connect(this, &HttpBase::OnHttpStreamEvent); | 384 http_stream_->SignalEvent.connect(this, &HttpBase::OnHttpStreamEvent); |
| 384 mode_ = (http_stream_->GetState() == SS_OPENING) ? HM_CONNECT : HM_NONE; | 385 mode_ = (http_stream_->GetState() == SS_OPENING) ? HM_CONNECT : HM_NONE; |
| 385 return true; | 386 return true; |
| 386 } | 387 } |
| 387 | 388 |
| 388 StreamInterface* | 389 StreamInterface* |
| 389 HttpBase::detach() { | 390 HttpBase::detach() { |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 return; | 696 return; |
| 696 } | 697 } |
| 697 } else { | 698 } else { |
| 698 ASSERT(result == SR_ERROR); | 699 ASSERT(result == SR_ERROR); |
| 699 LOG_F(LS_ERROR) << "error"; | 700 LOG_F(LS_ERROR) << "error"; |
| 700 OnHttpStreamEvent(http_stream_, SE_CLOSE, error); | 701 OnHttpStreamEvent(http_stream_, SE_CLOSE, error); |
| 701 return; | 702 return; |
| 702 } | 703 } |
| 703 } | 704 } |
| 704 | 705 |
| 705 ASSERT(false); | 706 RTC_NOTREACHED(); |
| 706 } | 707 } |
| 707 | 708 |
| 708 bool | 709 bool |
| 709 HttpBase::queue_headers() { | 710 HttpBase::queue_headers() { |
| 710 ASSERT(HM_SEND == mode_); | 711 ASSERT(HM_SEND == mode_); |
| 711 while (header_ != data_->end()) { | 712 while (header_ != data_->end()) { |
| 712 size_t len = sprintfn(buffer_ + len_, sizeof(buffer_) - len_, | 713 size_t len = sprintfn(buffer_ + len_, sizeof(buffer_) - len_, |
| 713 "%.*s: %.*s\r\n", | 714 "%.*s: %.*s\r\n", |
| 714 header_->first.size(), header_->first.data(), | 715 header_->first.size(), header_->first.data(), |
| 715 header_->second.size(), header_->second.data()); | 716 header_->second.size(), header_->second.data()); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 873 } | 874 } |
| 874 } | 875 } |
| 875 | 876 |
| 876 void | 877 void |
| 877 HttpBase::OnComplete(HttpError err) { | 878 HttpBase::OnComplete(HttpError err) { |
| 878 LOG_F(LS_VERBOSE); | 879 LOG_F(LS_VERBOSE); |
| 879 do_complete(err); | 880 do_complete(err); |
| 880 } | 881 } |
| 881 | 882 |
| 882 } // namespace rtc | 883 } // namespace rtc |
| OLD | NEW |