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

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

Issue 21433: Perform HTTP authentication over a keep-alive connection.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Last upload before checkin Created 11 years, 10 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 | « no previous file | net/http/http_network_transaction.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) 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 #ifndef NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ 5 #ifndef NET_HTTP_HTTP_NETWORK_TRANSACTION_H_
6 #define NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ 6 #define NET_HTTP_HTTP_NETWORK_TRANSACTION_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/ref_counted.h" 10 #include "base/ref_counted.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 int DoSSLConnectOverTunnel(); 68 int DoSSLConnectOverTunnel();
69 int DoSSLConnectOverTunnelComplete(int result); 69 int DoSSLConnectOverTunnelComplete(int result);
70 int DoWriteHeaders(); 70 int DoWriteHeaders();
71 int DoWriteHeadersComplete(int result); 71 int DoWriteHeadersComplete(int result);
72 int DoWriteBody(); 72 int DoWriteBody();
73 int DoWriteBodyComplete(int result); 73 int DoWriteBodyComplete(int result);
74 int DoReadHeaders(); 74 int DoReadHeaders();
75 int DoReadHeadersComplete(int result); 75 int DoReadHeadersComplete(int result);
76 int DoReadBody(); 76 int DoReadBody();
77 int DoReadBodyComplete(int result); 77 int DoReadBodyComplete(int result);
78 int DoDrainBodyForAuthRestart();
79 int DoDrainBodyForAuthRestartComplete(int result);
78 80
79 // Record histogram of latency (first byte sent till last byte received) as 81 // Record histogram of latency (first byte sent till last byte received) as
80 // well as effective bandwidth used. 82 // well as effective bandwidth used.
81 void LogTransactionMetrics() const; 83 void LogTransactionMetrics() const;
82 84
83 // Called when header_buf_ contains the complete response headers. 85 // Called when header_buf_ contains the complete response headers.
84 int DidReadResponseHeaders(); 86 int DidReadResponseHeaders();
85 87
86 // Called to handle a certificate error. Returns OK if the error should be 88 // Called to handle a certificate error. Returns OK if the error should be
87 // ignored. Otherwise, stores the certificate in response_.ssl_info and 89 // ignored. Otherwise, stores the certificate in response_.ssl_info and
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 // Return true if based on the bytes read so far, the start of the 121 // Return true if based on the bytes read so far, the start of the
120 // status line is known. This is used to distingish between HTTP/0.9 122 // status line is known. This is used to distingish between HTTP/0.9
121 // responses (which have no status line) and HTTP/1.x responses. 123 // responses (which have no status line) and HTTP/1.x responses.
122 bool has_found_status_line_start() const { 124 bool has_found_status_line_start() const {
123 return header_buf_http_offset_ != -1; 125 return header_buf_http_offset_ != -1;
124 } 126 }
125 127
126 // Sets up the state machine to restart the transaction with auth. 128 // Sets up the state machine to restart the transaction with auth.
127 void PrepareForAuthRestart(HttpAuth::Target target); 129 void PrepareForAuthRestart(HttpAuth::Target target);
128 130
131 // Called when we don't need to drain the response body or have drained it.
132 // Resets |connection_| unless |keep_alive| is true, then calls
133 // ResetStateForRestart. Sets |next_state_| appropriately.
134 void DidDrainBodyForAuthRestart(bool keep_alive);
135
129 // Resets the members of the transaction so it can be restarted. 136 // Resets the members of the transaction so it can be restarted.
130 void ResetStateForRestart(); 137 void ResetStateForRestart();
131 138
132 // Attach any credentials needed for the proxy server or origin server. 139 // Attach any credentials needed for the proxy server or origin server.
133 void ApplyAuth(); 140 void ApplyAuth();
134 141
135 // Helper used by ApplyAuth(). Adds either the proxy auth header, or the 142 // Helper used by ApplyAuth(). Adds either the proxy auth header, or the
136 // origin server auth header, as specified by |target| 143 // origin server auth header, as specified by |target|
137 void AddAuthorizationHeader(HttpAuth::Target target); 144 void AddAuthorizationHeader(HttpAuth::Target target);
138 145
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 // The number of bytes by which the header buffer is grown when it reaches 245 // The number of bytes by which the header buffer is grown when it reaches
239 // capacity. 246 // capacity.
240 enum { kHeaderBufInitialSize = 4096 }; 247 enum { kHeaderBufInitialSize = 4096 };
241 248
242 // |kMaxHeaderBufSize| is the number of bytes that the response headers can 249 // |kMaxHeaderBufSize| is the number of bytes that the response headers can
243 // grow to. If the body start is not found within this range of the 250 // grow to. If the body start is not found within this range of the
244 // response, the transaction will fail with ERR_RESPONSE_HEADERS_TOO_BIG. 251 // response, the transaction will fail with ERR_RESPONSE_HEADERS_TOO_BIG.
245 // Note: |kMaxHeaderBufSize| should be a multiple of |kHeaderBufInitialSize|. 252 // Note: |kMaxHeaderBufSize| should be a multiple of |kHeaderBufInitialSize|.
246 enum { kMaxHeaderBufSize = 32768 }; // 32 kilobytes. 253 enum { kMaxHeaderBufSize = 32768 }; // 32 kilobytes.
247 254
255 // The size in bytes of the buffer we use to drain the response body that
256 // we want to throw away. The response body is typically a small error
257 // page just a few hundred bytes long.
258 enum { kDrainBodyBufferSize = 1024 };
259
248 // The position where status line starts; -1 if not found yet. 260 // The position where status line starts; -1 if not found yet.
249 int header_buf_http_offset_; 261 int header_buf_http_offset_;
250 262
251 // Indicates the content length remaining to read. If this value is less 263 // Indicates the content length remaining to read. If this value is less
252 // than zero (and chunked_decoder_ is null), then we read until the server 264 // than zero (and chunked_decoder_ is null), then we read until the server
253 // closes the connection. 265 // closes the connection.
254 int64 content_length_; 266 int64 content_length_;
255 267
256 // Keeps track of the number of response body bytes read so far. 268 // Keeps track of the number of response body bytes read so far.
257 int64 content_read_; 269 int64 content_read_;
(...skipping 16 matching lines...) Expand all
274 STATE_SSL_CONNECT_OVER_TUNNEL, 286 STATE_SSL_CONNECT_OVER_TUNNEL,
275 STATE_SSL_CONNECT_OVER_TUNNEL_COMPLETE, 287 STATE_SSL_CONNECT_OVER_TUNNEL_COMPLETE,
276 STATE_WRITE_HEADERS, 288 STATE_WRITE_HEADERS,
277 STATE_WRITE_HEADERS_COMPLETE, 289 STATE_WRITE_HEADERS_COMPLETE,
278 STATE_WRITE_BODY, 290 STATE_WRITE_BODY,
279 STATE_WRITE_BODY_COMPLETE, 291 STATE_WRITE_BODY_COMPLETE,
280 STATE_READ_HEADERS, 292 STATE_READ_HEADERS,
281 STATE_READ_HEADERS_COMPLETE, 293 STATE_READ_HEADERS_COMPLETE,
282 STATE_READ_BODY, 294 STATE_READ_BODY,
283 STATE_READ_BODY_COMPLETE, 295 STATE_READ_BODY_COMPLETE,
296 STATE_DRAIN_BODY_FOR_AUTH_RESTART,
297 STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE,
284 STATE_NONE 298 STATE_NONE
285 }; 299 };
286 State next_state_; 300 State next_state_;
287 }; 301 };
288 302
289 } // namespace net 303 } // namespace net
290 304
291 #endif // NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ 305 #endif // NET_HTTP_HTTP_NETWORK_TRANSACTION_H_
292 306
OLDNEW
« no previous file with comments | « no previous file | net/http/http_network_transaction.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698