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

Side by Side Diff: net/http/http_network_transaction.cc

Issue 10829188: Use net::UploadDataStream::Init() instead of InitSync() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « net/http/http_network_transaction.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 case STATE_GENERATE_PROXY_AUTH_TOKEN_COMPLETE: 527 case STATE_GENERATE_PROXY_AUTH_TOKEN_COMPLETE:
528 rv = DoGenerateProxyAuthTokenComplete(rv); 528 rv = DoGenerateProxyAuthTokenComplete(rv);
529 break; 529 break;
530 case STATE_GENERATE_SERVER_AUTH_TOKEN: 530 case STATE_GENERATE_SERVER_AUTH_TOKEN:
531 DCHECK_EQ(OK, rv); 531 DCHECK_EQ(OK, rv);
532 rv = DoGenerateServerAuthToken(); 532 rv = DoGenerateServerAuthToken();
533 break; 533 break;
534 case STATE_GENERATE_SERVER_AUTH_TOKEN_COMPLETE: 534 case STATE_GENERATE_SERVER_AUTH_TOKEN_COMPLETE:
535 rv = DoGenerateServerAuthTokenComplete(rv); 535 rv = DoGenerateServerAuthTokenComplete(rv);
536 break; 536 break;
537 case STATE_INIT_REQUEST_BODY:
538 DCHECK_EQ(OK, rv);
539 rv = DoInitRequestBody();
540 break;
541 case STATE_INIT_REQUEST_BODY_COMPLETE:
542 rv = DoInitRequestBodyComplete(rv);
543 break;
537 case STATE_BUILD_REQUEST: 544 case STATE_BUILD_REQUEST:
538 DCHECK_EQ(OK, rv); 545 DCHECK_EQ(OK, rv);
539 net_log_.BeginEvent(NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST); 546 net_log_.BeginEvent(NetLog::TYPE_HTTP_TRANSACTION_SEND_REQUEST);
540 rv = DoBuildRequest(); 547 rv = DoBuildRequest();
541 break; 548 break;
542 case STATE_BUILD_REQUEST_COMPLETE: 549 case STATE_BUILD_REQUEST_COMPLETE:
543 rv = DoBuildRequestComplete(rv); 550 rv = DoBuildRequestComplete(rv);
544 break; 551 break;
545 case STATE_SEND_REQUEST: 552 case STATE_SEND_REQUEST:
546 DCHECK_EQ(OK, rv); 553 DCHECK_EQ(OK, rv);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 if (!ShouldApplyServerAuth()) 689 if (!ShouldApplyServerAuth())
683 return OK; 690 return OK;
684 return auth_controllers_[target]->MaybeGenerateAuthToken(request_, 691 return auth_controllers_[target]->MaybeGenerateAuthToken(request_,
685 io_callback_, 692 io_callback_,
686 net_log_); 693 net_log_);
687 } 694 }
688 695
689 int HttpNetworkTransaction::DoGenerateServerAuthTokenComplete(int rv) { 696 int HttpNetworkTransaction::DoGenerateServerAuthTokenComplete(int rv) {
690 DCHECK_NE(ERR_IO_PENDING, rv); 697 DCHECK_NE(ERR_IO_PENDING, rv);
691 if (rv == OK) 698 if (rv == OK)
692 next_state_ = STATE_BUILD_REQUEST; 699 next_state_ = STATE_INIT_REQUEST_BODY;
693 return rv; 700 return rv;
694 } 701 }
695 702
696 void HttpNetworkTransaction::BuildRequestHeaders(bool using_proxy) { 703 void HttpNetworkTransaction::BuildRequestHeaders(bool using_proxy) {
697 request_headers_.SetHeader(HttpRequestHeaders::kHost, 704 request_headers_.SetHeader(HttpRequestHeaders::kHost,
698 GetHostAndOptionalPort(request_->url)); 705 GetHostAndOptionalPort(request_->url));
699 706
700 // For compat with HTTP/1.0 servers and proxies: 707 // For compat with HTTP/1.0 servers and proxies:
701 if (using_proxy) { 708 if (using_proxy) {
702 request_headers_.SetHeader(HttpRequestHeaders::kProxyConnection, 709 request_headers_.SetHeader(HttpRequestHeaders::kProxyConnection,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 if (ShouldApplyProxyAuth() && HaveAuth(HttpAuth::AUTH_PROXY)) 742 if (ShouldApplyProxyAuth() && HaveAuth(HttpAuth::AUTH_PROXY))
736 auth_controllers_[HttpAuth::AUTH_PROXY]->AddAuthorizationHeader( 743 auth_controllers_[HttpAuth::AUTH_PROXY]->AddAuthorizationHeader(
737 &request_headers_); 744 &request_headers_);
738 if (ShouldApplyServerAuth() && HaveAuth(HttpAuth::AUTH_SERVER)) 745 if (ShouldApplyServerAuth() && HaveAuth(HttpAuth::AUTH_SERVER))
739 auth_controllers_[HttpAuth::AUTH_SERVER]->AddAuthorizationHeader( 746 auth_controllers_[HttpAuth::AUTH_SERVER]->AddAuthorizationHeader(
740 &request_headers_); 747 &request_headers_);
741 748
742 request_headers_.MergeFrom(request_->extra_headers); 749 request_headers_.MergeFrom(request_->extra_headers);
743 } 750 }
744 751
752 int HttpNetworkTransaction::DoInitRequestBody() {
753 next_state_ = STATE_INIT_REQUEST_BODY_COMPLETE;
754 request_body_.reset(NULL);
755 int rv = OK;
756 if (request_->upload_data) {
757 request_body_.reset(new UploadDataStream(request_->upload_data));
758 rv = request_body_->Init(io_callback_);
759 }
760 return rv;
761 }
762
763 int HttpNetworkTransaction::DoInitRequestBodyComplete(int result) {
764 if (result == OK)
765 next_state_ = STATE_BUILD_REQUEST;
766 else
767 request_body_.reset(NULL);
768 return result;
769 }
770
745 int HttpNetworkTransaction::DoBuildRequest() { 771 int HttpNetworkTransaction::DoBuildRequest() {
746 next_state_ = STATE_BUILD_REQUEST_COMPLETE; 772 next_state_ = STATE_BUILD_REQUEST_COMPLETE;
747 request_body_.reset(NULL);
748 if (request_->upload_data) {
749 request_body_.reset(new UploadDataStream(request_->upload_data));
750 const int error_code = request_body_->InitSync();
751 if (error_code != OK) {
752 request_body_.reset(NULL);
753 return error_code;
754 }
755 }
756
757 headers_valid_ = false; 773 headers_valid_ = false;
758 774
759 // This is constructed lazily (instead of within our Start method), so that 775 // This is constructed lazily (instead of within our Start method), so that
760 // we have proxy info available. 776 // we have proxy info available.
761 if (request_headers_.IsEmpty()) { 777 if (request_headers_.IsEmpty()) {
762 bool using_proxy = (proxy_info_.is_http() || proxy_info_.is_https()) && 778 bool using_proxy = (proxy_info_.is_http() || proxy_info_.is_https()) &&
763 !is_https_request(); 779 !is_https_request();
764 BuildRequestHeaders(using_proxy); 780 BuildRequestHeaders(using_proxy);
765 } 781 }
766 782
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after
1392 #define STATE_CASE(s) \ 1408 #define STATE_CASE(s) \
1393 case s: \ 1409 case s: \
1394 description = base::StringPrintf("%s (0x%08X)", #s, s); \ 1410 description = base::StringPrintf("%s (0x%08X)", #s, s); \
1395 break 1411 break
1396 1412
1397 std::string HttpNetworkTransaction::DescribeState(State state) { 1413 std::string HttpNetworkTransaction::DescribeState(State state) {
1398 std::string description; 1414 std::string description;
1399 switch (state) { 1415 switch (state) {
1400 STATE_CASE(STATE_CREATE_STREAM); 1416 STATE_CASE(STATE_CREATE_STREAM);
1401 STATE_CASE(STATE_CREATE_STREAM_COMPLETE); 1417 STATE_CASE(STATE_CREATE_STREAM_COMPLETE);
1418 STATE_CASE(STATE_INIT_REQUEST_BODY);
1419 STATE_CASE(STATE_INIT_REQUEST_BODY_COMPLETE);
1402 STATE_CASE(STATE_BUILD_REQUEST); 1420 STATE_CASE(STATE_BUILD_REQUEST);
1403 STATE_CASE(STATE_BUILD_REQUEST_COMPLETE); 1421 STATE_CASE(STATE_BUILD_REQUEST_COMPLETE);
1404 STATE_CASE(STATE_SEND_REQUEST); 1422 STATE_CASE(STATE_SEND_REQUEST);
1405 STATE_CASE(STATE_SEND_REQUEST_COMPLETE); 1423 STATE_CASE(STATE_SEND_REQUEST_COMPLETE);
1406 STATE_CASE(STATE_READ_HEADERS); 1424 STATE_CASE(STATE_READ_HEADERS);
1407 STATE_CASE(STATE_READ_HEADERS_COMPLETE); 1425 STATE_CASE(STATE_READ_HEADERS_COMPLETE);
1408 STATE_CASE(STATE_READ_BODY); 1426 STATE_CASE(STATE_READ_BODY);
1409 STATE_CASE(STATE_READ_BODY_COMPLETE); 1427 STATE_CASE(STATE_READ_BODY_COMPLETE);
1410 STATE_CASE(STATE_DRAIN_BODY_FOR_AUTH_RESTART); 1428 STATE_CASE(STATE_DRAIN_BODY_FOR_AUTH_RESTART);
1411 STATE_CASE(STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE); 1429 STATE_CASE(STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE);
1412 STATE_CASE(STATE_NONE); 1430 STATE_CASE(STATE_NONE);
1413 default: 1431 default:
1414 description = base::StringPrintf("Unknown state 0x%08X (%u)", state, 1432 description = base::StringPrintf("Unknown state 0x%08X (%u)", state,
1415 state); 1433 state);
1416 break; 1434 break;
1417 } 1435 }
1418 return description; 1436 return description;
1419 } 1437 }
1420 1438
1421 #undef STATE_CASE 1439 #undef STATE_CASE
1422 1440
1423 } // namespace net 1441 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698