API Change: Return void from http_parser_execute().

event_stream
Ryan 16 years ago
parent 65c61e6eb8
commit dbbc73c16f

@ -123,7 +123,7 @@ struct http_parser {
*/ */
void http_parser_init (http_parser *parser, enum http_parser_type); void http_parser_init (http_parser *parser, enum http_parser_type);
size_t http_parser_execute (http_parser *parser, const char *data, size_t len); void http_parser_execute (http_parser *parser, const char *data, size_t len);
int http_parser_has_error (http_parser *parser); int http_parser_has_error (http_parser *parser);

@ -57,7 +57,7 @@ do { \
parser->FOR##_size += p - parser->FOR##_mark; \ parser->FOR##_size += p - parser->FOR##_mark; \
if (parser->FOR##_size > MAX_FIELD_SIZE) { \ if (parser->FOR##_size > MAX_FIELD_SIZE) { \
parser->flags |= ERROR; \ parser->flags |= ERROR; \
return 0; \ return; \
} \ } \
if (parser->on_##FOR) { \ if (parser->on_##FOR) { \
callback_return_value = parser->on_##FOR(parser, \ callback_return_value = parser->on_##FOR(parser, \
@ -66,7 +66,7 @@ do { \
} \ } \
if (callback_return_value != 0) { \ if (callback_return_value != 0) { \
parser->flags |= ERROR; \ parser->flags |= ERROR; \
return 0; \ return; \
} \ } \
} \ } \
} while(0) } while(0)
@ -191,7 +191,7 @@ do { \
callback_return_value = parser->on_headers_complete(parser); callback_return_value = parser->on_headers_complete(parser);
if (callback_return_value != 0) { if (callback_return_value != 0) {
parser->flags |= ERROR; parser->flags |= ERROR;
return 0; return;
} }
} }
} }
@ -201,7 +201,7 @@ do { \
callback_return_value = parser->on_message_begin(parser); callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) { if (callback_return_value != 0) {
parser->flags |= ERROR; parser->flags |= ERROR;
return 0; return;
} }
} }
} }
@ -210,7 +210,7 @@ do { \
if (parser->content_length == -1) parser->content_length = 0; if (parser->content_length == -1) parser->content_length = 0;
if (parser->content_length > INT_MAX) { if (parser->content_length > INT_MAX) {
parser->flags |= ERROR; parser->flags |= ERROR;
return 0; return;
} }
parser->content_length *= 10; parser->content_length *= 10;
parser->content_length += *p - '0'; parser->content_length += *p - '0';
@ -239,7 +239,7 @@ do { \
SKIP_BODY(MIN(parser->chunk_size, REMAINING)); SKIP_BODY(MIN(parser->chunk_size, REMAINING));
if (callback_return_value != 0) { if (callback_return_value != 0) {
parser->flags |= ERROR; parser->flags |= ERROR;
return 0; return;
} }
fhold; fhold;
@ -285,7 +285,7 @@ do { \
if (callback_return_value != 0) { if (callback_return_value != 0) {
parser->flags |= ERROR; parser->flags |= ERROR;
return 0; return;
} }
fhold; fhold;
@ -435,7 +435,7 @@ http_parser_init (http_parser *parser, enum http_parser_type type)
} }
/** exec **/ /** exec **/
size_t void
http_parser_execute (http_parser *parser, const char *buffer, size_t len) http_parser_execute (http_parser *parser, const char *buffer, size_t len)
{ {
size_t tmp; // REMOVE ME this is extremely hacky size_t tmp; // REMOVE ME this is extremely hacky
@ -459,7 +459,7 @@ http_parser_execute (http_parser *parser, const char *buffer, size_t len)
if (callback_return_value != 0) parser->flags |= ERROR; if (callback_return_value != 0) parser->flags |= ERROR;
} }
} }
return len; return;
} }
if (0 < parser->chunk_size && (parser->flags & EATING)) { if (0 < parser->chunk_size && (parser->flags & EATING)) {
@ -467,7 +467,7 @@ http_parser_execute (http_parser *parser, const char *buffer, size_t len)
SKIP_BODY(MIN(len, parser->chunk_size)); SKIP_BODY(MIN(len, parser->chunk_size));
if (callback_return_value != 0) { if (callback_return_value != 0) {
parser->flags |= ERROR; parser->flags |= ERROR;
return 0; return;
} }
} }
@ -490,7 +490,6 @@ http_parser_execute (http_parser *parser, const char *buffer, size_t len)
CALLBACK(uri); CALLBACK(uri);
assert(p <= pe && "buffer overflow after parsing execute"); assert(p <= pe && "buffer overflow after parsing execute");
return(p - buffer);
} }
int int

@ -594,13 +594,12 @@ parse_messages (int message_count, const struct message *input_messages[])
} }
// Parse the stream // Parse the stream
size_t traversed = 0;
parser_init(HTTP_REQUEST); parser_init(HTTP_REQUEST);
traversed = http_parser_execute(&parser, total, length); http_parser_execute(&parser, total, length);
assert(!http_parser_has_error(&parser)); assert(!http_parser_has_error(&parser));
traversed = http_parser_execute(&parser, NULL, 0); http_parser_execute(&parser, NULL, 0);
assert(!http_parser_has_error(&parser)); assert(!http_parser_has_error(&parser));
assert(num_messages == message_count); assert(num_messages == message_count);
@ -614,13 +613,12 @@ parse_messages (int message_count, const struct message *input_messages[])
void void
test_message (const struct message *message) test_message (const struct message *message)
{ {
size_t traversed = 0;
parser_init(message->type); parser_init(message->type);
traversed = http_parser_execute(&parser, message->raw, strlen(message->raw)); http_parser_execute(&parser, message->raw, strlen(message->raw));
assert(!http_parser_has_error(&parser)); assert(!http_parser_has_error(&parser));
traversed = http_parser_execute(&parser, NULL, 0); http_parser_execute(&parser, NULL, 0);
assert(!http_parser_has_error(&parser)); assert(!http_parser_has_error(&parser));
assert(num_messages == 1); assert(num_messages == 1);
@ -631,11 +629,10 @@ test_message (const struct message *message)
void void
test_error (const char *buf) test_error (const char *buf)
{ {
size_t traversed = 0;
parser_init(HTTP_REQUEST); parser_init(HTTP_REQUEST);
traversed = http_parser_execute(&parser, buf, strlen(buf)); http_parser_execute(&parser, buf, strlen(buf));
traversed = http_parser_execute(&parser, NULL, 0); http_parser_execute(&parser, NULL, 0);
assert(http_parser_has_error(&parser)); assert(http_parser_has_error(&parser));
} }
@ -654,13 +651,12 @@ test_multiple3 (const struct message *r1, const struct message *r2, const struct
strcat(total, r2->raw); strcat(total, r2->raw);
strcat(total, r3->raw); strcat(total, r3->raw);
size_t traversed = 0;
parser_init(HTTP_REQUEST); parser_init(HTTP_REQUEST);
traversed = http_parser_execute(&parser, total, strlen(total)); http_parser_execute(&parser, total, strlen(total));
assert(!http_parser_has_error(&parser) ); assert(!http_parser_has_error(&parser) );
traversed = http_parser_execute(&parser, NULL, 0); http_parser_execute(&parser, NULL, 0);
assert(!http_parser_has_error(&parser) ); assert(!http_parser_has_error(&parser) );
assert(num_messages == 3); assert(num_messages == 3);

Loading…
Cancel
Save