 Chromium Code Reviews
 Chromium Code Reviews Issue 1166953002:
  Use net's response header parser for parsing multipart headers.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1166953002:
  Use net's response header parser for parsing multipart headers.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| OLD | NEW | 
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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_ | 
| OLD | NEW |