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

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

Issue 1073033002: Modify instrumentation for various jank bugs, mostly removing outdated sites. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 | « net/cookies/cookie_monster.cc ('k') | net/http/http_stream_parser.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 // 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 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 DCHECK_NE(rv, ERR_IO_PENDING); 595 DCHECK_NE(rv, ERR_IO_PENDING);
596 DCHECK(!callback_.is_null()); 596 DCHECK(!callback_.is_null());
597 597
598 // Since Run may result in Read being called, clear user_callback_ up front. 598 // Since Run may result in Read being called, clear user_callback_ up front.
599 CompletionCallback c = callback_; 599 CompletionCallback c = callback_;
600 callback_.Reset(); 600 callback_.Reset();
601 c.Run(rv); 601 c.Run(rv);
602 } 602 }
603 603
604 void HttpNetworkTransaction::OnIOComplete(int result) { 604 void HttpNetworkTransaction::OnIOComplete(int result) {
605 // TODO(vadimt): Remove ScopedTracker below once crbug.com/424359 is fixed.
606 tracked_objects::ScopedTracker tracking_profile1(
607 FROM_HERE_WITH_EXPLICIT_FUNCTION(
608 "424359 HttpNetworkTransaction::OnIOComplete 1"));
609
610 int rv = DoLoop(result); 605 int rv = DoLoop(result);
611
612 // TODO(vadimt): Remove ScopedTracker below once crbug.com/424359 is fixed.
613 tracked_objects::ScopedTracker tracking_profile2(
614 FROM_HERE_WITH_EXPLICIT_FUNCTION(
615 "424359 HttpNetworkTransaction::OnIOComplete 2"));
616
617 if (rv != ERR_IO_PENDING) 606 if (rv != ERR_IO_PENDING)
618 DoCallback(rv); 607 DoCallback(rv);
619 } 608 }
620 609
621 int HttpNetworkTransaction::DoLoop(int result) { 610 int HttpNetworkTransaction::DoLoop(int result) {
611 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
612 tracked_objects::ScopedTracker tracking_profile(
613 FROM_HERE_WITH_EXPLICIT_FUNCTION(
614 "424359 HttpNetworkTransaction::DoLoop"));
615
622 DCHECK(next_state_ != STATE_NONE); 616 DCHECK(next_state_ != STATE_NONE);
623 617
624 int rv = result; 618 int rv = result;
625 do { 619 do {
626 State state = next_state_; 620 State state = next_state_;
627 next_state_ = STATE_NONE; 621 next_state_ = STATE_NONE;
628 switch (state) { 622 switch (state) {
629 case STATE_NOTIFY_BEFORE_CREATE_STREAM: 623 case STATE_NOTIFY_BEFORE_CREATE_STREAM:
630 DCHECK_EQ(OK, rv); 624 DCHECK_EQ(OK, rv);
631 rv = DoNotifyBeforeCreateStream(); 625 rv = DoNotifyBeforeCreateStream();
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 NOTREACHED() << "bad state"; 711 NOTREACHED() << "bad state";
718 rv = ERR_FAILED; 712 rv = ERR_FAILED;
719 break; 713 break;
720 } 714 }
721 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE); 715 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE);
722 716
723 return rv; 717 return rv;
724 } 718 }
725 719
726 int HttpNetworkTransaction::DoNotifyBeforeCreateStream() { 720 int HttpNetworkTransaction::DoNotifyBeforeCreateStream() {
721 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
722 tracked_objects::ScopedTracker tracking_profile(
723 FROM_HERE_WITH_EXPLICIT_FUNCTION(
724 "424359 HttpNetworkTransaction::DoNotifyBeforeCreateStream"));
725
727 next_state_ = STATE_CREATE_STREAM; 726 next_state_ = STATE_CREATE_STREAM;
728 bool defer = false; 727 bool defer = false;
729 if (!before_network_start_callback_.is_null()) 728 if (!before_network_start_callback_.is_null())
730 before_network_start_callback_.Run(&defer); 729 before_network_start_callback_.Run(&defer);
731 if (!defer) 730 if (!defer)
732 return OK; 731 return OK;
733 return ERR_IO_PENDING; 732 return ERR_IO_PENDING;
734 } 733 }
735 734
736 int HttpNetworkTransaction::DoCreateStream() { 735 int HttpNetworkTransaction::DoCreateStream() {
736 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
737 tracked_objects::ScopedTracker tracking_profile(
738 FROM_HERE_WITH_EXPLICIT_FUNCTION(
739 "424359 HttpNetworkTransaction::DoCreateStream"));
740
737 next_state_ = STATE_CREATE_STREAM_COMPLETE; 741 next_state_ = STATE_CREATE_STREAM_COMPLETE;
738 if (ForWebSocketHandshake()) { 742 if (ForWebSocketHandshake()) {
739 stream_request_.reset( 743 stream_request_.reset(
740 session_->http_stream_factory_for_websocket() 744 session_->http_stream_factory_for_websocket()
741 ->RequestWebSocketHandshakeStream( 745 ->RequestWebSocketHandshakeStream(
742 *request_, 746 *request_,
743 priority_, 747 priority_,
744 server_ssl_config_, 748 server_ssl_config_,
745 proxy_ssl_config_, 749 proxy_ssl_config_,
746 this, 750 this,
747 websocket_handshake_stream_base_create_helper_, 751 websocket_handshake_stream_base_create_helper_,
748 net_log_)); 752 net_log_));
749 } else { 753 } else {
750 stream_request_.reset( 754 stream_request_.reset(
751 session_->http_stream_factory()->RequestStream( 755 session_->http_stream_factory()->RequestStream(
752 *request_, 756 *request_,
753 priority_, 757 priority_,
754 server_ssl_config_, 758 server_ssl_config_,
755 proxy_ssl_config_, 759 proxy_ssl_config_,
756 this, 760 this,
757 net_log_)); 761 net_log_));
758 } 762 }
759 DCHECK(stream_request_.get()); 763 DCHECK(stream_request_.get());
760 return ERR_IO_PENDING; 764 return ERR_IO_PENDING;
761 } 765 }
762 766
763 int HttpNetworkTransaction::DoCreateStreamComplete(int result) { 767 int HttpNetworkTransaction::DoCreateStreamComplete(int result) {
768 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
769 tracked_objects::ScopedTracker tracking_profile(
770 FROM_HERE_WITH_EXPLICIT_FUNCTION(
771 "424359 HttpNetworkTransaction::DoCreateStreamComplete"));
772
764 if (result == OK) { 773 if (result == OK) {
765 next_state_ = STATE_INIT_STREAM; 774 next_state_ = STATE_INIT_STREAM;
766 DCHECK(stream_.get()); 775 DCHECK(stream_.get());
767 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { 776 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) {
768 result = HandleCertificateRequest(result); 777 result = HandleCertificateRequest(result);
769 } else if (result == ERR_HTTPS_PROXY_TUNNEL_RESPONSE) { 778 } else if (result == ERR_HTTPS_PROXY_TUNNEL_RESPONSE) {
770 // Return OK and let the caller read the proxy's error page 779 // Return OK and let the caller read the proxy's error page
771 next_state_ = STATE_NONE; 780 next_state_ = STATE_NONE;
772 return OK; 781 return OK;
773 } else if (result == ERR_HTTP_1_1_REQUIRED || 782 } else if (result == ERR_HTTP_1_1_REQUIRED ||
774 result == ERR_PROXY_HTTP_1_1_REQUIRED) { 783 result == ERR_PROXY_HTTP_1_1_REQUIRED) {
775 return HandleHttp11Required(result); 784 return HandleHttp11Required(result);
776 } 785 }
777 786
778 // Handle possible handshake errors that may have occurred if the stream 787 // Handle possible handshake errors that may have occurred if the stream
779 // used SSL for one or more of the layers. 788 // used SSL for one or more of the layers.
780 result = HandleSSLHandshakeError(result); 789 result = HandleSSLHandshakeError(result);
781 790
782 // At this point we are done with the stream_request_. 791 // At this point we are done with the stream_request_.
783 stream_request_.reset(); 792 stream_request_.reset();
784 return result; 793 return result;
785 } 794 }
786 795
787 int HttpNetworkTransaction::DoInitStream() { 796 int HttpNetworkTransaction::DoInitStream() {
797 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
798 tracked_objects::ScopedTracker tracking_profile(
799 FROM_HERE_WITH_EXPLICIT_FUNCTION(
800 "424359 HttpNetworkTransaction::DoInitStream"));
801
788 DCHECK(stream_.get()); 802 DCHECK(stream_.get());
789 next_state_ = STATE_INIT_STREAM_COMPLETE; 803 next_state_ = STATE_INIT_STREAM_COMPLETE;
790 return stream_->InitializeStream(request_, priority_, net_log_, io_callback_); 804 return stream_->InitializeStream(request_, priority_, net_log_, io_callback_);
791 } 805 }
792 806
793 int HttpNetworkTransaction::DoInitStreamComplete(int result) { 807 int HttpNetworkTransaction::DoInitStreamComplete(int result) {
808 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
809 tracked_objects::ScopedTracker tracking_profile(
810 FROM_HERE_WITH_EXPLICIT_FUNCTION(
811 "424359 HttpNetworkTransaction::DoInitStreamComplete"));
812
794 if (result == OK) { 813 if (result == OK) {
795 next_state_ = STATE_GENERATE_PROXY_AUTH_TOKEN; 814 next_state_ = STATE_GENERATE_PROXY_AUTH_TOKEN;
796 } else { 815 } else {
797 if (result < 0) 816 if (result < 0)
798 result = HandleIOError(result); 817 result = HandleIOError(result);
799 818
800 // The stream initialization failed, so this stream will never be useful. 819 // The stream initialization failed, so this stream will never be useful.
801 if (stream_) 820 if (stream_)
802 total_received_bytes_ += stream_->GetTotalReceivedBytes(); 821 total_received_bytes_ += stream_->GetTotalReceivedBytes();
803 stream_.reset(); 822 stream_.reset();
804 } 823 }
805 824
806 return result; 825 return result;
807 } 826 }
808 827
809 int HttpNetworkTransaction::DoGenerateProxyAuthToken() { 828 int HttpNetworkTransaction::DoGenerateProxyAuthToken() {
829 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
830 tracked_objects::ScopedTracker tracking_profile(
831 FROM_HERE_WITH_EXPLICIT_FUNCTION(
832 "424359 HttpNetworkTransaction::DoGenerateProxyAuthToken"));
833
810 next_state_ = STATE_GENERATE_PROXY_AUTH_TOKEN_COMPLETE; 834 next_state_ = STATE_GENERATE_PROXY_AUTH_TOKEN_COMPLETE;
811 if (!ShouldApplyProxyAuth()) 835 if (!ShouldApplyProxyAuth())
812 return OK; 836 return OK;
813 HttpAuth::Target target = HttpAuth::AUTH_PROXY; 837 HttpAuth::Target target = HttpAuth::AUTH_PROXY;
814 if (!auth_controllers_[target].get()) 838 if (!auth_controllers_[target].get())
815 auth_controllers_[target] = 839 auth_controllers_[target] =
816 new HttpAuthController(target, 840 new HttpAuthController(target,
817 AuthURL(target), 841 AuthURL(target),
818 session_->http_auth_cache(), 842 session_->http_auth_cache(),
819 session_->http_auth_handler_factory()); 843 session_->http_auth_handler_factory());
820 return auth_controllers_[target]->MaybeGenerateAuthToken(request_, 844 return auth_controllers_[target]->MaybeGenerateAuthToken(request_,
821 io_callback_, 845 io_callback_,
822 net_log_); 846 net_log_);
823 } 847 }
824 848
825 int HttpNetworkTransaction::DoGenerateProxyAuthTokenComplete(int rv) { 849 int HttpNetworkTransaction::DoGenerateProxyAuthTokenComplete(int rv) {
850 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
851 tracked_objects::ScopedTracker tracking_profile(
852 FROM_HERE_WITH_EXPLICIT_FUNCTION(
853 "424359 HttpNetworkTransaction::DoGenerateProxyAuthTokenComplete"));
854
826 DCHECK_NE(ERR_IO_PENDING, rv); 855 DCHECK_NE(ERR_IO_PENDING, rv);
827 if (rv == OK) 856 if (rv == OK)
828 next_state_ = STATE_GENERATE_SERVER_AUTH_TOKEN; 857 next_state_ = STATE_GENERATE_SERVER_AUTH_TOKEN;
829 return rv; 858 return rv;
830 } 859 }
831 860
832 int HttpNetworkTransaction::DoGenerateServerAuthToken() { 861 int HttpNetworkTransaction::DoGenerateServerAuthToken() {
862 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
863 tracked_objects::ScopedTracker tracking_profile(
864 FROM_HERE_WITH_EXPLICIT_FUNCTION(
865 "424359 HttpNetworkTransaction::DoGenerateServerAuthToken"));
866
833 next_state_ = STATE_GENERATE_SERVER_AUTH_TOKEN_COMPLETE; 867 next_state_ = STATE_GENERATE_SERVER_AUTH_TOKEN_COMPLETE;
834 HttpAuth::Target target = HttpAuth::AUTH_SERVER; 868 HttpAuth::Target target = HttpAuth::AUTH_SERVER;
835 if (!auth_controllers_[target].get()) { 869 if (!auth_controllers_[target].get()) {
836 auth_controllers_[target] = 870 auth_controllers_[target] =
837 new HttpAuthController(target, 871 new HttpAuthController(target,
838 AuthURL(target), 872 AuthURL(target),
839 session_->http_auth_cache(), 873 session_->http_auth_cache(),
840 session_->http_auth_handler_factory()); 874 session_->http_auth_handler_factory());
841 if (request_->load_flags & LOAD_DO_NOT_USE_EMBEDDED_IDENTITY) 875 if (request_->load_flags & LOAD_DO_NOT_USE_EMBEDDED_IDENTITY)
842 auth_controllers_[target]->DisableEmbeddedIdentity(); 876 auth_controllers_[target]->DisableEmbeddedIdentity();
843 } 877 }
844 if (!ShouldApplyServerAuth()) 878 if (!ShouldApplyServerAuth())
845 return OK; 879 return OK;
846 return auth_controllers_[target]->MaybeGenerateAuthToken(request_, 880 return auth_controllers_[target]->MaybeGenerateAuthToken(request_,
847 io_callback_, 881 io_callback_,
848 net_log_); 882 net_log_);
849 } 883 }
850 884
851 int HttpNetworkTransaction::DoGenerateServerAuthTokenComplete(int rv) { 885 int HttpNetworkTransaction::DoGenerateServerAuthTokenComplete(int rv) {
886 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
887 tracked_objects::ScopedTracker tracking_profile(
888 FROM_HERE_WITH_EXPLICIT_FUNCTION(
889 "424359 HttpNetworkTransaction::DoGenerateServerAuthTokenComplete"));
890
852 DCHECK_NE(ERR_IO_PENDING, rv); 891 DCHECK_NE(ERR_IO_PENDING, rv);
853 if (rv == OK) 892 if (rv == OK)
854 next_state_ = STATE_INIT_REQUEST_BODY; 893 next_state_ = STATE_INIT_REQUEST_BODY;
855 return rv; 894 return rv;
856 } 895 }
857 896
858 void HttpNetworkTransaction::BuildRequestHeaders( 897 void HttpNetworkTransaction::BuildRequestHeaders(
859 bool using_http_proxy_without_tunnel) { 898 bool using_http_proxy_without_tunnel) {
860 request_headers_.SetHeader(HttpRequestHeaders::kHost, 899 request_headers_.SetHeader(HttpRequestHeaders::kHost,
861 GetHostAndOptionalPort(request_->url)); 900 GetHostAndOptionalPort(request_->url));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 if (using_http_proxy_without_tunnel && 946 if (using_http_proxy_without_tunnel &&
908 !before_proxy_headers_sent_callback_.is_null()) 947 !before_proxy_headers_sent_callback_.is_null())
909 before_proxy_headers_sent_callback_.Run(proxy_info_, &request_headers_); 948 before_proxy_headers_sent_callback_.Run(proxy_info_, &request_headers_);
910 949
911 response_.did_use_http_auth = 950 response_.did_use_http_auth =
912 request_headers_.HasHeader(HttpRequestHeaders::kAuthorization) || 951 request_headers_.HasHeader(HttpRequestHeaders::kAuthorization) ||
913 request_headers_.HasHeader(HttpRequestHeaders::kProxyAuthorization); 952 request_headers_.HasHeader(HttpRequestHeaders::kProxyAuthorization);
914 } 953 }
915 954
916 int HttpNetworkTransaction::DoInitRequestBody() { 955 int HttpNetworkTransaction::DoInitRequestBody() {
956 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
957 tracked_objects::ScopedTracker tracking_profile(
958 FROM_HERE_WITH_EXPLICIT_FUNCTION(
959 "424359 HttpNetworkTransaction::DoInitRequestBody"));
960
917 next_state_ = STATE_INIT_REQUEST_BODY_COMPLETE; 961 next_state_ = STATE_INIT_REQUEST_BODY_COMPLETE;
918 int rv = OK; 962 int rv = OK;
919 if (request_->upload_data_stream) 963 if (request_->upload_data_stream)
920 rv = request_->upload_data_stream->Init(io_callback_); 964 rv = request_->upload_data_stream->Init(io_callback_);
921 return rv; 965 return rv;
922 } 966 }
923 967
924 int HttpNetworkTransaction::DoInitRequestBodyComplete(int result) { 968 int HttpNetworkTransaction::DoInitRequestBodyComplete(int result) {
969 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
970 tracked_objects::ScopedTracker tracking_profile(
971 FROM_HERE_WITH_EXPLICIT_FUNCTION(
972 "424359 HttpNetworkTransaction::DoInitRequestBodyComplete"));
973
925 if (result == OK) 974 if (result == OK)
926 next_state_ = STATE_BUILD_REQUEST; 975 next_state_ = STATE_BUILD_REQUEST;
927 return result; 976 return result;
928 } 977 }
929 978
930 int HttpNetworkTransaction::DoBuildRequest() { 979 int HttpNetworkTransaction::DoBuildRequest() {
980 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
981 tracked_objects::ScopedTracker tracking_profile(
982 FROM_HERE_WITH_EXPLICIT_FUNCTION(
983 "424359 HttpNetworkTransaction::DoBuildRequest"));
984
931 next_state_ = STATE_BUILD_REQUEST_COMPLETE; 985 next_state_ = STATE_BUILD_REQUEST_COMPLETE;
932 headers_valid_ = false; 986 headers_valid_ = false;
933 987
934 // This is constructed lazily (instead of within our Start method), so that 988 // This is constructed lazily (instead of within our Start method), so that
935 // we have proxy info available. 989 // we have proxy info available.
936 if (request_headers_.IsEmpty()) { 990 if (request_headers_.IsEmpty()) {
937 bool using_http_proxy_without_tunnel = UsingHttpProxyWithoutTunnel(); 991 bool using_http_proxy_without_tunnel = UsingHttpProxyWithoutTunnel();
938 BuildRequestHeaders(using_http_proxy_without_tunnel); 992 BuildRequestHeaders(using_http_proxy_without_tunnel);
939 } 993 }
940 994
941 return OK; 995 return OK;
942 } 996 }
943 997
944 int HttpNetworkTransaction::DoBuildRequestComplete(int result) { 998 int HttpNetworkTransaction::DoBuildRequestComplete(int result) {
999 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1000 tracked_objects::ScopedTracker tracking_profile(
1001 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1002 "424359 HttpNetworkTransaction::DoBuildRequestComplete"));
1003
945 if (result == OK) 1004 if (result == OK)
946 next_state_ = STATE_SEND_REQUEST; 1005 next_state_ = STATE_SEND_REQUEST;
947 return result; 1006 return result;
948 } 1007 }
949 1008
950 int HttpNetworkTransaction::DoSendRequest() { 1009 int HttpNetworkTransaction::DoSendRequest() {
1010 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1011 tracked_objects::ScopedTracker tracking_profile(
1012 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1013 "424359 HttpNetworkTransaction::DoSendRequest"));
1014
951 send_start_time_ = base::TimeTicks::Now(); 1015 send_start_time_ = base::TimeTicks::Now();
952 next_state_ = STATE_SEND_REQUEST_COMPLETE; 1016 next_state_ = STATE_SEND_REQUEST_COMPLETE;
953 1017
954 return stream_->SendRequest(request_headers_, &response_, io_callback_); 1018 return stream_->SendRequest(request_headers_, &response_, io_callback_);
955 } 1019 }
956 1020
957 int HttpNetworkTransaction::DoSendRequestComplete(int result) { 1021 int HttpNetworkTransaction::DoSendRequestComplete(int result) {
1022 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1023 tracked_objects::ScopedTracker tracking_profile(
1024 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1025 "424359 HttpNetworkTransaction::DoSendRequestComplete"));
1026
958 send_end_time_ = base::TimeTicks::Now(); 1027 send_end_time_ = base::TimeTicks::Now();
959 if (result < 0) 1028 if (result < 0)
960 return HandleIOError(result); 1029 return HandleIOError(result);
961 response_.network_accessed = true; 1030 response_.network_accessed = true;
962 next_state_ = STATE_READ_HEADERS; 1031 next_state_ = STATE_READ_HEADERS;
963 return OK; 1032 return OK;
964 } 1033 }
965 1034
966 int HttpNetworkTransaction::DoReadHeaders() { 1035 int HttpNetworkTransaction::DoReadHeaders() {
1036 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1037 tracked_objects::ScopedTracker tracking_profile(
1038 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1039 "424359 HttpNetworkTransaction::DoReadHeaders"));
1040
967 next_state_ = STATE_READ_HEADERS_COMPLETE; 1041 next_state_ = STATE_READ_HEADERS_COMPLETE;
968 return stream_->ReadResponseHeaders(io_callback_); 1042 return stream_->ReadResponseHeaders(io_callback_);
969 } 1043 }
970 1044
971 int HttpNetworkTransaction::DoReadHeadersComplete(int result) { 1045 int HttpNetworkTransaction::DoReadHeadersComplete(int result) {
1046 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1047 tracked_objects::ScopedTracker tracking_profile(
1048 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1049 "424359 HttpNetworkTransaction::DoReadHeadersComplete"));
1050
972 // We can get a certificate error or ERR_SSL_CLIENT_AUTH_CERT_NEEDED here 1051 // We can get a certificate error or ERR_SSL_CLIENT_AUTH_CERT_NEEDED here
973 // due to SSL renegotiation. 1052 // due to SSL renegotiation.
974 if (IsCertificateError(result)) { 1053 if (IsCertificateError(result)) {
975 // We don't handle a certificate error during SSL renegotiation, so we 1054 // We don't handle a certificate error during SSL renegotiation, so we
976 // have to return an error that's not in the certificate error range 1055 // have to return an error that's not in the certificate error range
977 // (-2xx). 1056 // (-2xx).
978 LOG(ERROR) << "Got a server certificate with error " << result 1057 LOG(ERROR) << "Got a server certificate with error " << result
979 << " during SSL renegotiation"; 1058 << " during SSL renegotiation";
980 result = ERR_CERT_ERROR_IN_SSL_RENEGOTIATION; 1059 result = ERR_CERT_ERROR_IN_SSL_RENEGOTIATION;
981 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { 1060 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 return rv; 1142 return rv;
1064 1143
1065 if (IsSecureRequest()) 1144 if (IsSecureRequest())
1066 stream_->GetSSLInfo(&response_.ssl_info); 1145 stream_->GetSSLInfo(&response_.ssl_info);
1067 1146
1068 headers_valid_ = true; 1147 headers_valid_ = true;
1069 return OK; 1148 return OK;
1070 } 1149 }
1071 1150
1072 int HttpNetworkTransaction::DoReadBody() { 1151 int HttpNetworkTransaction::DoReadBody() {
1152 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1153 tracked_objects::ScopedTracker tracking_profile(
1154 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1155 "424359 HttpNetworkTransaction::DoReadBody"));
1156
1073 DCHECK(read_buf_.get()); 1157 DCHECK(read_buf_.get());
1074 DCHECK_GT(read_buf_len_, 0); 1158 DCHECK_GT(read_buf_len_, 0);
1075 DCHECK(stream_ != NULL); 1159 DCHECK(stream_ != NULL);
1076 1160
1077 next_state_ = STATE_READ_BODY_COMPLETE; 1161 next_state_ = STATE_READ_BODY_COMPLETE;
1078 return stream_->ReadResponseBody( 1162 return stream_->ReadResponseBody(
1079 read_buf_.get(), read_buf_len_, io_callback_); 1163 read_buf_.get(), read_buf_len_, io_callback_);
1080 } 1164 }
1081 1165
1082 int HttpNetworkTransaction::DoReadBodyComplete(int result) { 1166 int HttpNetworkTransaction::DoReadBodyComplete(int result) {
1167 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1168 tracked_objects::ScopedTracker tracking_profile(
1169 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1170 "424359 HttpNetworkTransaction::DoReadBodyComplete"));
1171
1083 // We are done with the Read call. 1172 // We are done with the Read call.
1084 bool done = false; 1173 bool done = false;
1085 if (result <= 0) { 1174 if (result <= 0) {
1086 DCHECK_NE(ERR_IO_PENDING, result); 1175 DCHECK_NE(ERR_IO_PENDING, result);
1087 done = true; 1176 done = true;
1088 } 1177 }
1089 1178
1090 bool keep_alive = false; 1179 bool keep_alive = false;
1091 if (stream_->IsResponseBodyComplete()) { 1180 if (stream_->IsResponseBodyComplete()) {
1092 // Note: Just because IsResponseBodyComplete is true, we're not 1181 // Note: Just because IsResponseBodyComplete is true, we're not
(...skipping 25 matching lines...) Expand all
1118 } 1207 }
1119 1208
1120 // Clear these to avoid leaving around old state. 1209 // Clear these to avoid leaving around old state.
1121 read_buf_ = NULL; 1210 read_buf_ = NULL;
1122 read_buf_len_ = 0; 1211 read_buf_len_ = 0;
1123 1212
1124 return result; 1213 return result;
1125 } 1214 }
1126 1215
1127 int HttpNetworkTransaction::DoDrainBodyForAuthRestart() { 1216 int HttpNetworkTransaction::DoDrainBodyForAuthRestart() {
1217 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1218 tracked_objects::ScopedTracker tracking_profile(
1219 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1220 "424359 HttpNetworkTransaction::DoDrainBodyForAuthRestart"));
1221
1128 // This method differs from DoReadBody only in the next_state_. So we just 1222 // This method differs from DoReadBody only in the next_state_. So we just
1129 // call DoReadBody and override the next_state_. Perhaps there is a more 1223 // call DoReadBody and override the next_state_. Perhaps there is a more
1130 // elegant way for these two methods to share code. 1224 // elegant way for these two methods to share code.
1131 int rv = DoReadBody(); 1225 int rv = DoReadBody();
1132 DCHECK(next_state_ == STATE_READ_BODY_COMPLETE); 1226 DCHECK(next_state_ == STATE_READ_BODY_COMPLETE);
1133 next_state_ = STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE; 1227 next_state_ = STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE;
1134 return rv; 1228 return rv;
1135 } 1229 }
1136 1230
1137 // TODO(wtc): This method and the DoReadBodyComplete method are almost 1231 // TODO(wtc): This method and the DoReadBodyComplete method are almost
1138 // the same. Figure out a good way for these two methods to share code. 1232 // the same. Figure out a good way for these two methods to share code.
1139 int HttpNetworkTransaction::DoDrainBodyForAuthRestartComplete(int result) { 1233 int HttpNetworkTransaction::DoDrainBodyForAuthRestartComplete(int result) {
1234 // TODO(pkasting): Remove ScopedTracker below once crbug.com/424359 is fixed.
1235 tracked_objects::ScopedTracker tracking_profile(
1236 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1237 "424359 HttpNetworkTransaction::DoDrainBodyForAuthRestartComplete"));
1238
1140 // keep_alive defaults to true because the very reason we're draining the 1239 // keep_alive defaults to true because the very reason we're draining the
1141 // response body is to reuse the connection for auth restart. 1240 // response body is to reuse the connection for auth restart.
1142 bool done = false, keep_alive = true; 1241 bool done = false, keep_alive = true;
1143 if (result < 0) { 1242 if (result < 0) {
1144 // Error or closed connection while reading the socket. 1243 // Error or closed connection while reading the socket.
1145 done = true; 1244 done = true;
1146 keep_alive = false; 1245 keep_alive = false;
1147 } else if (stream_->IsResponseBodyComplete()) { 1246 } else if (stream_->IsResponseBodyComplete()) {
1148 done = true; 1247 done = true;
1149 } 1248 }
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 description = base::StringPrintf("Unknown state 0x%08X (%u)", state, 1652 description = base::StringPrintf("Unknown state 0x%08X (%u)", state,
1554 state); 1653 state);
1555 break; 1654 break;
1556 } 1655 }
1557 return description; 1656 return description;
1558 } 1657 }
1559 1658
1560 #undef STATE_CASE 1659 #undef STATE_CASE
1561 1660
1562 } // namespace net 1661 } // namespace net
OLDNEW
« no previous file with comments | « net/cookies/cookie_monster.cc ('k') | net/http/http_stream_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698