| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/string_util.h" | 7 #include "base/string_util.h" |
| 8 #include "base/trace_event.h" |
| 8 #include "net/base/client_socket_factory.h" | 9 #include "net/base/client_socket_factory.h" |
| 9 #include "net/base/host_resolver.h" | 10 #include "net/base/host_resolver.h" |
| 10 #include "net/base/load_flags.h" | 11 #include "net/base/load_flags.h" |
| 11 #include "net/base/ssl_client_socket.h" | 12 #include "net/base/ssl_client_socket.h" |
| 12 #include "net/base/upload_data_stream.h" | 13 #include "net/base/upload_data_stream.h" |
| 13 #include "net/http/http_chunked_decoder.h" | 14 #include "net/http/http_chunked_decoder.h" |
| 14 #include "net/http/http_network_session.h" | 15 #include "net/http/http_network_session.h" |
| 15 #include "net/http/http_request_info.h" | 16 #include "net/http/http_request_info.h" |
| 16 #include "net/http/http_util.h" | 17 #include "net/http/http_util.h" |
| 17 | 18 |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 int HttpNetworkTransaction::DoLoop(int result) { | 242 int HttpNetworkTransaction::DoLoop(int result) { |
| 242 DCHECK(next_state_ != STATE_NONE); | 243 DCHECK(next_state_ != STATE_NONE); |
| 243 | 244 |
| 244 int rv = result; | 245 int rv = result; |
| 245 do { | 246 do { |
| 246 State state = next_state_; | 247 State state = next_state_; |
| 247 next_state_ = STATE_NONE; | 248 next_state_ = STATE_NONE; |
| 248 switch (state) { | 249 switch (state) { |
| 249 case STATE_RESOLVE_PROXY: | 250 case STATE_RESOLVE_PROXY: |
| 250 DCHECK(rv == OK); | 251 DCHECK(rv == OK); |
| 252 TRACE_EVENT_BEGIN("http.resolve_proxy", request_, request_->url.spec()); |
| 251 rv = DoResolveProxy(); | 253 rv = DoResolveProxy(); |
| 252 break; | 254 break; |
| 253 case STATE_RESOLVE_PROXY_COMPLETE: | 255 case STATE_RESOLVE_PROXY_COMPLETE: |
| 254 rv = DoResolveProxyComplete(rv); | 256 rv = DoResolveProxyComplete(rv); |
| 257 TRACE_EVENT_END("http.resolve_proxy", request_, request_->url.spec()); |
| 255 break; | 258 break; |
| 256 case STATE_INIT_CONNECTION: | 259 case STATE_INIT_CONNECTION: |
| 257 DCHECK(rv == OK); | 260 DCHECK(rv == OK); |
| 261 TRACE_EVENT_BEGIN("http.init_conn", request_, request_->url.spec()); |
| 258 rv = DoInitConnection(); | 262 rv = DoInitConnection(); |
| 259 break; | 263 break; |
| 260 case STATE_INIT_CONNECTION_COMPLETE: | 264 case STATE_INIT_CONNECTION_COMPLETE: |
| 261 rv = DoInitConnectionComplete(rv); | 265 rv = DoInitConnectionComplete(rv); |
| 266 TRACE_EVENT_END("http.init_conn", request_, request_->url.spec()); |
| 262 break; | 267 break; |
| 263 case STATE_RESOLVE_HOST: | 268 case STATE_RESOLVE_HOST: |
| 264 DCHECK(rv == OK); | 269 DCHECK(rv == OK); |
| 270 TRACE_EVENT_BEGIN("http.resolve_host", request_, request_->url.spec()); |
| 265 rv = DoResolveHost(); | 271 rv = DoResolveHost(); |
| 266 break; | 272 break; |
| 267 case STATE_RESOLVE_HOST_COMPLETE: | 273 case STATE_RESOLVE_HOST_COMPLETE: |
| 268 rv = DoResolveHostComplete(rv); | 274 rv = DoResolveHostComplete(rv); |
| 275 TRACE_EVENT_END("http.resolve_host", request_, request_->url.spec()); |
| 269 break; | 276 break; |
| 270 case STATE_CONNECT: | 277 case STATE_CONNECT: |
| 271 DCHECK(rv == OK); | 278 DCHECK(rv == OK); |
| 279 TRACE_EVENT_BEGIN("http.connect", request_, request_->url.spec()); |
| 272 rv = DoConnect(); | 280 rv = DoConnect(); |
| 273 break; | 281 break; |
| 274 case STATE_CONNECT_COMPLETE: | 282 case STATE_CONNECT_COMPLETE: |
| 275 rv = DoConnectComplete(rv); | 283 rv = DoConnectComplete(rv); |
| 284 TRACE_EVENT_END("http.connect", request_, request_->url.spec()); |
| 276 break; | 285 break; |
| 277 case STATE_SSL_CONNECT_OVER_TUNNEL: | 286 case STATE_SSL_CONNECT_OVER_TUNNEL: |
| 278 DCHECK(rv == OK); | 287 DCHECK(rv == OK); |
| 288 TRACE_EVENT_BEGIN("http.ssl_tunnel", request_, request_->url.spec()); |
| 279 rv = DoSSLConnectOverTunnel(); | 289 rv = DoSSLConnectOverTunnel(); |
| 280 break; | 290 break; |
| 281 case STATE_SSL_CONNECT_OVER_TUNNEL_COMPLETE: | 291 case STATE_SSL_CONNECT_OVER_TUNNEL_COMPLETE: |
| 282 rv = DoSSLConnectOverTunnelComplete(rv); | 292 rv = DoSSLConnectOverTunnelComplete(rv); |
| 293 TRACE_EVENT_END("http.ssl_tunnel", request_, request_->url.spec()); |
| 283 break; | 294 break; |
| 284 case STATE_WRITE_HEADERS: | 295 case STATE_WRITE_HEADERS: |
| 285 DCHECK(rv == OK); | 296 DCHECK(rv == OK); |
| 297 TRACE_EVENT_BEGIN("http.write_headers", request_, request_->url.spec()); |
| 286 rv = DoWriteHeaders(); | 298 rv = DoWriteHeaders(); |
| 287 break; | 299 break; |
| 288 case STATE_WRITE_HEADERS_COMPLETE: | 300 case STATE_WRITE_HEADERS_COMPLETE: |
| 289 rv = DoWriteHeadersComplete(rv); | 301 rv = DoWriteHeadersComplete(rv); |
| 302 TRACE_EVENT_END("http.write_headers", request_, request_->url.spec()); |
| 290 break; | 303 break; |
| 291 case STATE_WRITE_BODY: | 304 case STATE_WRITE_BODY: |
| 292 DCHECK(rv == OK); | 305 DCHECK(rv == OK); |
| 306 TRACE_EVENT_BEGIN("http.write_body", request_, request_->url.spec()); |
| 293 rv = DoWriteBody(); | 307 rv = DoWriteBody(); |
| 294 break; | 308 break; |
| 295 case STATE_WRITE_BODY_COMPLETE: | 309 case STATE_WRITE_BODY_COMPLETE: |
| 296 rv = DoWriteBodyComplete(rv); | 310 rv = DoWriteBodyComplete(rv); |
| 311 TRACE_EVENT_END("http.write_body", request_, request_->url.spec()); |
| 297 break; | 312 break; |
| 298 case STATE_READ_HEADERS: | 313 case STATE_READ_HEADERS: |
| 299 DCHECK(rv == OK); | 314 DCHECK(rv == OK); |
| 315 TRACE_EVENT_BEGIN("http.read_headers", request_, request_->url.spec()); |
| 300 rv = DoReadHeaders(); | 316 rv = DoReadHeaders(); |
| 301 break; | 317 break; |
| 302 case STATE_READ_HEADERS_COMPLETE: | 318 case STATE_READ_HEADERS_COMPLETE: |
| 303 rv = DoReadHeadersComplete(rv); | 319 rv = DoReadHeadersComplete(rv); |
| 320 TRACE_EVENT_END("http.read_headers", request_, request_->url.spec()); |
| 304 break; | 321 break; |
| 305 case STATE_READ_BODY: | 322 case STATE_READ_BODY: |
| 306 DCHECK(rv == OK); | 323 DCHECK(rv == OK); |
| 324 TRACE_EVENT_BEGIN("http.read_body", request_, request_->url.spec()); |
| 307 rv = DoReadBody(); | 325 rv = DoReadBody(); |
| 308 break; | 326 break; |
| 309 case STATE_READ_BODY_COMPLETE: | 327 case STATE_READ_BODY_COMPLETE: |
| 310 rv = DoReadBodyComplete(rv); | 328 rv = DoReadBodyComplete(rv); |
| 329 TRACE_EVENT_END("http.read_body", request_, request_->url.spec()); |
| 311 break; | 330 break; |
| 312 default: | 331 default: |
| 313 NOTREACHED() << "bad state"; | 332 NOTREACHED() << "bad state"; |
| 314 rv = ERR_FAILED; | 333 rv = ERR_FAILED; |
| 315 break; | 334 break; |
| 316 } | 335 } |
| 317 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE); | 336 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE); |
| 318 | 337 |
| 319 return rv; | 338 return rv; |
| 320 } | 339 } |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 next_state_ = STATE_INIT_CONNECTION; // Resend the request. | 805 next_state_ = STATE_INIT_CONNECTION; // Resend the request. |
| 787 error = OK; | 806 error = OK; |
| 788 } | 807 } |
| 789 break; | 808 break; |
| 790 } | 809 } |
| 791 return error; | 810 return error; |
| 792 } | 811 } |
| 793 | 812 |
| 794 } // namespace net | 813 } // namespace net |
| 795 | 814 |
| OLD | NEW |