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

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

Issue 1166953002: Use net's response header parser for parsing multipart headers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed Matt's comments Created 5 years, 6 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
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 #ifndef NET_HTTP_HTTP_UTIL_H_ 5 #ifndef NET_HTTP_HTTP_UTIL_H_
6 #define NET_HTTP_HTTP_UTIL_H_ 6 #define NET_HTTP_HTTP_UTIL_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 140
141 // Returns the start of the status line, or -1 if no status line was found. 141 // Returns the start of the status line, or -1 if no status line was found.
142 // This allows for 4 bytes of junk to precede the status line (which is what 142 // This allows for 4 bytes of junk to precede the status line (which is what
143 // mozilla does too). 143 // mozilla does too).
144 static int LocateStartOfStatusLine(const char* buf, int buf_len); 144 static int LocateStartOfStatusLine(const char* buf, int buf_len);
145 145
146 // Returns index beyond the end-of-headers marker or -1 if not found. RFC 146 // Returns index beyond the end-of-headers marker or -1 if not found. RFC
147 // 2616 defines the end-of-headers marker as a double CRLF; however, some 147 // 2616 defines the end-of-headers marker as a double CRLF; however, some
148 // servers only send back LFs (e.g., Unix-based CGI scripts written using the 148 // servers only send back LFs (e.g., Unix-based CGI scripts written using the
149 // ASIS Apache module). This function therefore accepts the pattern LF[CR]LF 149 // ASIS Apache module). This function therefore accepts the pattern LF[CR]LF
150 // as end-of-headers (just like Mozilla). 150 // as end-of-headers (just like Mozilla).
mmenke 2015/06/09 20:23:37 Maybe add: "The first line of |buf| is considered
haavardm 2015/06/10 11:54:01 Done.
151 // The parameter |i| is the offset within |buf| to begin searching from. 151 // The parameter |i| is the offset within |buf| to begin searching from.
152 static int LocateEndOfHeaders(const char* buf, int buf_len, int i = 0); 152 static int LocateEndOfHeaders(const char* buf, int buf_len, int i = 0);
153 153
154 // Same as |LocateEndOfHeaders| with the difference that it detects
155 // an empty header list if |buf| starts with a single [CR]LF.
mmenke 2015/06/09 20:23:37 Suggest focusing on what it's used for, rather tha
haavardm 2015/06/10 11:54:02 Agree. I didn't take the http status into the equa
156 static int LocateEndOfAdditionalHeaders(const char* buf,
157 int buf_len,
158 int i = 0);
159
154 // Assemble "raw headers" in the format required by HttpResponseHeaders. 160 // Assemble "raw headers" in the format required by HttpResponseHeaders.
155 // This involves normalizing line terminators, converting [CR]LF to \0 and 161 // This involves normalizing line terminators, converting [CR]LF to \0 and
156 // handling HTTP line continuations (i.e., lines starting with LWS are 162 // handling HTTP line continuations (i.e., lines starting with LWS are
157 // continuations of the previous line). |buf_len| indicates the position of 163 // continuations of the previous line). |buf_len| indicates the position of
158 // the end-of-headers marker as defined by LocateEndOfHeaders. 164 // the end-of-headers marker as defined by LocateEndOfHeaders.
159 // If a \0 appears within the headers themselves, it will be stripped. This 165 // If a \0 appears within the headers themselves, it will be stripped. This
160 // is a workaround to avoid later code from incorrectly interpreting it as 166 // is a workaround to avoid later code from incorrectly interpreting it as
161 // a line terminator. 167 // a line terminator.
162 // 168 //
163 // TODO(eroman): we should use \n as the canonical line separator rather than 169 // TODO(eroman): we should use \n as the canonical line separator rather than
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 // into the original's unquoted_value_ member. 369 // into the original's unquoted_value_ member.
364 std::string unquoted_value_; 370 std::string unquoted_value_;
365 371
366 bool value_is_quoted_; 372 bool value_is_quoted_;
367 }; 373 };
368 }; 374 };
369 375
370 } // namespace net 376 } // namespace net
371 377
372 #endif // NET_HTTP_HTTP_UTIL_H_ 378 #endif // NET_HTTP_HTTP_UTIL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698