buffer_append_c(parser->value_buf, ' ');
parser->state = HTTP_HEADER_PARSE_STATE_OWS;
break;
- }
+ }
/* next header line */
parser->state = HTTP_HEADER_PARSE_STATE_INIT;
return 1;
if (parser->state != HTTP_HEADER_PARSE_STATE_EOH) {
data = buffer_get_data(parser->value_buf, &size);
-
+
/* trim trailing OWS */
while (size > 0 &&
(data[size-1] == ' ' || data[size-1] == '\t'))
struct http_request_parser {
struct http_message_parser parser;
pool_t pool;
-
+
enum http_request_parser_state state;
struct http_url *default_base_url;
}
parser->state = HTTP_REQUEST_PARSE_STATE_INIT;
break;
- case HTTP_REQUEST_PARSE_STATE_HEADER:
- default:
- i_unreached();
+ case HTTP_REQUEST_PARSE_STATE_HEADER:
+ default:
+ i_unreached();
}
}
http_parse_ows(&hparser);
if (hparser.cur >= hparser.end)
break;
-
+
if (*hparser.cur == '=') {
hparser.cur++;
http_parse_ows(&hparser);
parse_error = TRUE;
break;
}
-
+
if (parser->error_code == HTTP_REQUEST_PARSE_ERROR_NONE) {
parser->error_code = HTTP_REQUEST_PARSE_ERROR_EXPECTATION_FAILED;
_parser->error = t_strdup_printf
}
}
if (parse_error)
- break;
+ break;
}
http_parse_ows(&hparser);
if (hparser.cur >= hparser.end || *hparser.cur != ',')
{
const ARRAY_TYPE(http_header_field) *hdrs;
const struct http_header_field *hdr;
-
+
hdrs = http_header_get_fields(parser->parser.msg.header);
array_foreach(hdrs, hdr) {
int ret = 0;
return ret;
/* RFC 7230, Section 3:
-
+
HTTP-message = start-line
*( header-field CRLF )
CRLF
/* assign early for error reporting */
request->method = parser->request_method;
- request->target_raw = parser->request_target;
+ request->target_raw = parser->request_target;
request->version_major = parser->parser.msg.version_major;
request->version_minor = parser->parser.msg.version_minor;
http_response_parser_restart(parser);
/* RFC 7230, Section 3:
-
+
HTTP-message = start-line
*( header-field CRLF )
CRLF
*error_r = parser->parser.error;
return ret;
}
- }
+ }
if ((ret = http_message_parse_headers(&parser->parser)) <= 0) {
*error_r = parser->parser.error;
return ret;
/* [ message-body ] */
if (http_message_parse_body(&parser->parser, FALSE) < 0) {
*error_r = parser->parser.error;
- return -1;
+ return -1;
}
}
/* RFC 7231, Section 7.1.3: Retry-After
-
+
Servers send the "Retry-After" header field to indicate how long the
user agent ought to wait before making a follow-up request. When
sent with a 503 (Service Unavailable) response, Retry-After indicates
the minimum time that the user agent is asked to wait before issuing
the redirected request.
*/
- if (parser->response_status == 503 || (parser->response_status / 100) == 3) {
+ if (parser->response_status == 503 || (parser->response_status / 100) == 3) {
hdrval = http_header_field_get(parser->parser.msg.header, "Retry-After");
if (hdrval != NULL) {
(void)http_response_parse_retry_after
case HTTP_CHUNKED_PARSE_STATE_FINISHED:
tcstream->istream.istream.eof = TRUE;
return -1;
- case HTTP_CHUNKED_PARSE_STATE_DATA:
+ case HTTP_CHUNKED_PARSE_STATE_DATA:
ret = http_transfer_chunked_istream_read_data(tcstream);
if (ret != 0)
return ret;