summaryrefslogtreecommitdiff
path: root/deps/http_parser/http_parser.c
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2009-10-15 19:18:18 +0200
committerRyan Dahl <ry@tinyclouds.org>2009-10-15 19:18:18 +0200
commitb893859c34f05db5c45f416949ebc0eee665cca6 (patch)
treead3737318766874da4132b6d04b81a9e6b67700c /deps/http_parser/http_parser.c
parent3456a16f711cdcace89687ebab6416d77f9aff9a (diff)
downloadnode-new-b893859c34f05db5c45f416949ebc0eee665cca6.tar.gz
Upgrade http parser, change node as needed.
The latest version of http-parser is a bit more stringent EOF semantics.
Diffstat (limited to 'deps/http_parser/http_parser.c')
-rw-r--r--deps/http_parser/http_parser.c5489
1 files changed, 2771 insertions, 2718 deletions
diff --git a/deps/http_parser/http_parser.c b/deps/http_parser/http_parser.c
index b0e4b564e5..ecb699c677 100644
--- a/deps/http_parser/http_parser.c
+++ b/deps/http_parser/http_parser.c
@@ -3,7 +3,7 @@
* Based on Zed Shaw's Mongrel, copyright (c) Zed A. Shaw
*
* All rights reserved.
- *
+ *
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
@@ -11,22 +11,28 @@
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
- *
+ *
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "http_parser.h"
#include <limits.h>
#include <assert.h>
+/* parser->flags */
+#define EATING 0x01
+#define ERROR 0x02
+#define CHUNKED 0x04
+#define EAT_FOREVER 0x10
+
static int unhex[] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
@@ -36,12 +42,14 @@ static int unhex[] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
};
-#define TRUE 1
-#define FALSE 0
-#define MIN(a,b) (a < b ? a : b)
-#define NULL (void*)(0)
-#define MAX_FIELD_SIZE 80*1024
+#undef MIN
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+#undef NULL
+#define NULL ((void*)(0))
+
+#define MAX_FIELD_SIZE (80*1024)
#define REMAINING (unsigned long)(pe - p)
#define CALLBACK(FOR) \
@@ -49,34 +57,36 @@ do { \
if (parser->FOR##_mark) { \
parser->FOR##_size += p - parser->FOR##_mark; \
if (parser->FOR##_size > MAX_FIELD_SIZE) { \
- parser->error = TRUE; \
- return 0; \
+ parser->flags |= ERROR; \
+ return; \
} \
if (parser->on_##FOR) { \
callback_return_value = parser->on_##FOR(parser, \
parser->FOR##_mark, \
p - parser->FOR##_mark); \
} \
+ if (callback_return_value != 0) { \
+ parser->flags |= ERROR; \
+ return; \
+ } \
} \
} while(0)
#define RESET_PARSER(parser) \
- parser->chunk_size = 0; \
- parser->eating = 0; \
- parser->header_field_mark = NULL; \
- parser->header_value_mark = NULL; \
- parser->query_string_mark = NULL; \
- parser->path_mark = NULL; \
- parser->uri_mark = NULL; \
- parser->fragment_mark = NULL; \
- parser->status_code = 0; \
- parser->method = 0; \
- parser->transfer_encoding = HTTP_IDENTITY; \
- parser->version_major = 0; \
- parser->version_minor = 0; \
- parser->keep_alive = -1; \
- parser->content_length = 0; \
- parser->body_read = 0;
+ parser->chunk_size = 0; \
+ parser->flags = 0; \
+ parser->header_field_mark = NULL; \
+ parser->header_value_mark = NULL; \
+ parser->query_string_mark = NULL; \
+ parser->path_mark = NULL; \
+ parser->uri_mark = NULL; \
+ parser->fragment_mark = NULL; \
+ parser->status_code = 0; \
+ parser->method = 0; \
+ parser->version = HTTP_VERSION_OTHER; \
+ parser->keep_alive = -1; \
+ parser->content_length = -1; \
+ parser->body_read = 0
#define END_REQUEST \
do { \
@@ -98,46 +108,45 @@ do { \
parser->body_read += tmp; \
parser->chunk_size -= tmp; \
if (0 == parser->chunk_size) { \
- parser->eating = FALSE; \
- if (parser->transfer_encoding == HTTP_IDENTITY) { \
+ parser->flags &= ~EATING; \
+ if (!(parser->flags & CHUNKED)) { \
END_REQUEST; \
} \
} else { \
- parser->eating = TRUE; \
+ parser->flags |= EATING; \
} \
} \
} while (0)
-#line 413 "http_parser.rl"
+#line 411 "http_parser.rl"
-#line 116 "http_parser.c"
+#line 126 "http_parser.c"
static const int http_parser_start = 1;
-static const int http_parser_first_final = 266;
+static const int http_parser_first_final = 280;
static const int http_parser_error = 0;
static const int http_parser_en_ChunkedBody = 2;
-static const int http_parser_en_ChunkedBody_chunk_chunk_end = 12;
-static const int http_parser_en_Requests = 268;
-static const int http_parser_en_Responses = 269;
+static const int http_parser_en_ChunkedBody_chunk_chunk_end = 13;
+static const int http_parser_en_Requests = 282;
+static const int http_parser_en_Responses = 283;
static const int http_parser_en_main = 1;
-#line 416 "http_parser.rl"
+#line 414 "http_parser.rl"
void
-http_parser_init (http_parser *parser, enum http_parser_type type)
+http_parser_init (http_parser *parser, enum http_parser_type type)
{
int cs = 0;
-#line 134 "http_parser.c"
+#line 144 "http_parser.c"
{
cs = http_parser_start;
}
-#line 422 "http_parser.rl"
+#line 420 "http_parser.rl"
parser->cs = cs;
parser->type = type;
- parser->error = 0;
parser->on_message_begin = NULL;
parser->on_path = NULL;
@@ -154,23 +163,39 @@ http_parser_init (http_parser *parser, enum http_parser_type type)
}
/** exec **/
-size_t
+void
http_parser_execute (http_parser *parser, const char *buffer, size_t len)
{
size_t tmp; // REMOVE ME this is extremely hacky
int callback_return_value = 0;
- const char *p, *pe;
+ const char *p, *pe, *eof;
int cs = parser->cs;
p = buffer;
pe = buffer+len;
+ eof = len ? NULL : pe;
- if (0 < parser->chunk_size && parser->eating) {
+ if (parser->flags & EAT_FOREVER) {
+ if (len == 0) {
+ if (parser->on_message_complete) {
+ callback_return_value = parser->on_message_complete(parser);
+ if (callback_return_value != 0) parser->flags |= ERROR;
+ }
+ } else {
+ if (parser->on_body) {
+ callback_return_value = parser->on_body(parser, p, len);
+ if (callback_return_value != 0) parser->flags |= ERROR;
+ }
+ }
+ return;
+ }
+
+ if (0 < parser->chunk_size && (parser->flags & EATING)) {
/* eat body */
SKIP_BODY(MIN(len, parser->chunk_size));
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
@@ -182,7 +207,7 @@ http_parser_execute (http_parser *parser, const char *buffer, size_t len)
if (parser->uri_mark) parser->uri_mark = buffer;
-#line 186 "http_parser.c"
+#line 211 "http_parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -191,14 +216,14 @@ http_parser_execute (http_parser *parser, const char *buffer, size_t len)
_again:
switch ( cs ) {
case 1: goto st1;
- case 266: goto st266;
+ case 280: goto st280;
case 0: goto st0;
case 2: goto st2;
case 3: goto st3;
case 4: goto st4;
case 5: goto st5;
case 6: goto st6;
- case 267: goto st267;
+ case 281: goto st281;
case 7: goto st7;
case 8: goto st8;
case 9: goto st9;
@@ -212,9 +237,9 @@ _again:
case 17: goto st17;
case 18: goto st18;
case 19: goto st19;
- case 268: goto st268;
case 20: goto st20;
case 21: goto st21;
+ case 282: goto st282;
case 22: goto st22;
case 23: goto st23;
case 24: goto st24;
@@ -375,7 +400,6 @@ _again:
case 179: goto st179;
case 180: goto st180;
case 181: goto st181;
- case 269: goto st269;
case 182: goto st182;
case 183: goto st183;
case 184: goto st184;
@@ -384,6 +408,7 @@ _again:
case 187: goto st187;
case 188: goto st188;
case 189: goto st189;
+ case 283: goto st283;
case 190: goto st190;
case 191: goto st191;
case 192: goto st192;
@@ -460,6 +485,20 @@ _again:
case 263: goto st263;
case 264: goto st264;
case 265: goto st265;
+ case 266: goto st266;
+ case 267: goto st267;
+ case 268: goto st268;
+ case 269: goto st269;
+ case 270: goto st270;
+ case 271: goto st271;
+ case 272: goto st272;
+ case 273: goto st273;
+ case 274: goto st274;
+ case 275: goto st275;
+ case 276: goto st276;
+ case 277: goto st277;
+ case 278: goto st278;
+ case 279: goto st279;
default: break;
}
@@ -474,21 +513,21 @@ st1:
case 1:
goto tr0;
tr0:
-#line 404 "http_parser.rl"
+#line 402 "http_parser.rl"
{
p--;
if (parser->type == HTTP_REQUEST) {
- {goto st268;}
+ {goto st282;}
} else {
- {goto st269;}
+ {goto st283;}
}
}
- goto st266;
-st266:
+ goto st280;
+st280:
if ( ++p == pe )
- goto _test_eof266;
-case 266:
-#line 492 "http_parser.c"
+ goto _test_eof280;
+case 280:
+#line 531 "http_parser.c"
goto st0;
st0:
cs = 0;
@@ -509,7 +548,7 @@ case 2:
goto tr3;
goto st0;
tr1:
-#line 253 "http_parser.rl"
+#line 233 "http_parser.rl"
{
parser->chunk_size *= 16;
parser->chunk_size += unhex[(int)*p];
@@ -519,11 +558,12 @@ st3:
if ( ++p == pe )
goto _test_eof3;
case 3:
-#line 523 "http_parser.c"
+#line 562 "http_parser.c"
switch( (*p) ) {
case 13: goto st4;
+ case 32: goto st9;
case 48: goto tr1;
- case 59: goto st17;
+ case 59: goto st19;
}
if ( (*p) < 65 ) {
if ( 49 <= (*p) && (*p) <= 57 )
@@ -574,25 +614,25 @@ st6:
goto _test_eof6;
case 6:
if ( (*p) == 10 )
- goto tr9;
+ goto tr10;
goto st0;
-tr9:
- cs = 267;
-#line 273 "http_parser.rl"
+tr10:
+ cs = 281;
+#line 253 "http_parser.rl"
{
END_REQUEST;
if (parser->type == HTTP_REQUEST) {
- cs = 268;
+ cs = 282;
} else {
- cs = 269;
+ cs = 283;
}
}
goto _again;
-st267:
+st281:
if ( ++p == pe )
- goto _test_eof267;
-case 267:
-#line 596 "http_parser.c"
+ goto _test_eof281;
+case 281:
+#line 636 "http_parser.c"
goto st0;
st7:
if ( ++p == pe )
@@ -629,21 +669,31 @@ case 8:
if ( (*p) == 13 )
goto st4;
goto st8;
+st9:
+ if ( ++p == pe )
+ goto _test_eof9;
+case 9:
+ switch( (*p) ) {
+ case 13: goto st4;
+ case 32: goto st9;
+ }
+ goto st0;
tr3:
-#line 253 "http_parser.rl"
+#line 233 "http_parser.rl"
{
parser->chunk_size *= 16;
parser->chunk_size += unhex[(int)*p];
}
- goto st9;
-st9:
+ goto st10;
+st10:
if ( ++p == pe )
- goto _test_eof9;
-case 9:
-#line 644 "http_parser.c"
+ goto _test_eof10;
+case 10:
+#line 693 "http_parser.c"
switch( (*p) ) {
- case 13: goto st10;
- case 59: goto st14;
+ case 13: goto st11;
+ case 32: goto st15;
+ case 59: goto st16;
}
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
@@ -654,256 +704,279 @@ case 9:
} else
goto tr3;
goto st0;
-st10:
- if ( ++p == pe )
- goto _test_eof10;
-case 10:
- if ( (*p) == 10 )
- goto st11;
- goto st0;
st11:
if ( ++p == pe )
goto _test_eof11;
case 11:
- goto tr14;
-tr14:
-#line 258 "http_parser.rl"
+ if ( (*p) == 10 )
+ goto st12;
+ goto st0;
+st12:
+ if ( ++p == pe )
+ goto _test_eof12;
+case 12:
+ goto tr16;
+tr16:
+#line 238 "http_parser.rl"
{
SKIP_BODY(MIN(parser->chunk_size, REMAINING));
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
- p--;
+ p--;
if (parser->chunk_size > REMAINING) {
- {p++; cs = 12; goto _out;}
+ {p++; cs = 13; goto _out;}
} else {
- {goto st12;}
+ {goto st13;}
}
}
- goto st12;
-st12:
- if ( ++p == pe )
- goto _test_eof12;
-case 12:
-#line 691 "http_parser.c"
- if ( (*p) == 13 )
- goto st13;
- goto st0;
+ goto st13;
st13:
if ( ++p == pe )
goto _test_eof13;
case 13:
- if ( (*p) == 10 )
- goto st2;
+#line 741 "http_parser.c"
+ if ( (*p) == 13 )
+ goto st14;
goto st0;
st14:
if ( ++p == pe )
goto _test_eof14;
case 14:
+ if ( (*p) == 10 )
+ goto st2;
+ goto st0;
+st15:
+ if ( ++p == pe )
+ goto _test_eof15;
+case 15:
switch( (*p) ) {
- case 13: goto st10;
- case 32: goto st14;
- case 33: goto st15;
- case 59: goto st14;
- case 61: goto st16;
- case 124: goto st15;
- case 126: goto st15;
+ case 13: goto st11;
+ case 32: goto st15;
+ }
+ goto st0;
+st16:
+ if ( ++p == pe )
+ goto _test_eof16;
+case 16:
+ switch( (*p) ) {
+ case 13: goto st11;
+ case 32: goto st16;
+ case 33: goto st17;
+ case 59: goto st16;
+ case 61: goto st18;
+ case 124: goto st17;
+ case 126: goto st17;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st15;
+ goto st17;
} else if ( (*p) >= 35 )
- goto st15;
+ goto st17;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st15;
+ goto st17;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st15;
+ goto st17;
} else
- goto st15;
+ goto st17;
} else
- goto st15;
+ goto st17;
goto st0;
-st15:
+st17:
if ( ++p == pe )
- goto _test_eof15;
-case 15:
+ goto _test_eof17;
+case 17:
switch( (*p) ) {
- case 13: goto st10;
- case 33: goto st15;
- case 59: goto st14;
- case 61: goto st16;
- case 124: goto st15;
- case 126: goto st15;
+ case 13: goto st11;
+ case 33: goto st17;
+ case 59: goto st16;
+ case 61: goto st18;
+ case 124: goto st17;
+ case 126: goto st17;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st15;
+ goto st17;
} else if ( (*p) >= 35 )
- goto st15;
+ goto st17;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st15;
+ goto st17;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st15;
+ goto st17;
} else
- goto st15;
+ goto st17;
} else
- goto st15;
+ goto st17;
goto st0;
-st16:
+st18:
if ( ++p == pe )
- goto _test_eof16;
-case 16:
+ goto _test_eof18;
+case 18:
switch( (*p) ) {
- case 13: goto st10;
- case 33: goto st16;
- case 59: goto st14;
- case 124: goto st16;
- case 126: goto st16;
+ case 13: goto st11;
+ case 33: goto st18;
+ case 59: goto st16;
+ case 124: goto st18;
+ case 126: goto st18;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st16;
+ goto st18;
} else if ( (*p) >= 35 )
- goto st16;
+ goto st18;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st16;
+ goto st18;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st16;
+ goto st18;
} else
- goto st16;
+ goto st18;
} else
- goto st16;
+ goto st18;
goto st0;
-st17:
+st19:
if ( ++p == pe )
- goto _test_eof17;
-case 17:
+ goto _test_eof19;
+case 19:
switch( (*p) ) {
case 13: goto st4;
- case 32: goto st17;
- case 33: goto st18;
- case 59: goto st17;
- case 61: goto st19;
- case 124: goto st18;
- case 126: goto st18;
+ case 32: goto st19;
+ case 33: goto st20;
+ case 59: goto st19;
+ case 61: goto st21;
+ case 124: goto st20;
+ case 126: goto st20;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st18;
+ goto st20;
} else if ( (*p) >= 35 )
- goto st18;
+ goto st20;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st18;
+ goto st20;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st18;
+ goto st20;
} else
- goto st18;
+ goto st20;
} else
- goto st18;
+ goto st20;
goto st0;
-st18:
+st20:
if ( ++p == pe )
- goto _test_eof18;
-case 18:
+ goto _test_eof20;
+case 20:
switch( (*p) ) {
case 13: goto st4;
- case 33: goto st18;
- case 59: goto st17;
- case 61: goto st19;
- case 124: goto st18;
- case 126: goto st18;
+ case 33: goto st20;
+ case 59: goto st19;
+ case 61: goto st21;
+ case 124: goto st20;
+ case 126: goto st20;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st18;
+ goto st20;
} else if ( (*p) >= 35 )
- goto st18;
+ goto st20;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st18;
+ goto st20;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st18;
+ goto st20;
} else
- goto st18;
+ goto st20;
} else
- goto st18;
+ goto st20;
goto st0;
-st19:
+st21:
if ( ++p == pe )
- goto _test_eof19;
-case 19:
+ goto _test_eof21;
+case 21:
switch( (*p) ) {
case 13: goto st4;
- case 33: goto st19;
- case 59: goto st17;
- case 124: goto st19;
- case 126: goto st19;
+ case 33: goto st21;
+ case 59: goto st19;
+ case 124: goto st21;
+ case 126: goto st21;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st19;
+ goto st21;
} else if ( (*p) >= 35 )
- goto st19;
+ goto st21;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st19;
+ goto st21;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st19;
+ goto st21;
} else
- goto st19;
+ goto st21;
} else
- goto st19;
+ goto st21;
goto st0;
-tr45:
- cs = 268;
-#line 203 "http_parser.rl"
+tr50:
+ cs = 282;
+#line 189 "http_parser.rl"
{
if(parser->on_headers_complete) {
callback_return_value = parser->on_headers_complete(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
-#line 282 "http_parser.rl"
+#line 262 "http_parser.rl"
{
- if (parser->transfer_encoding == HTTP_CHUNKED) {
+ if (parser->flags & CHUNKED) {
cs = 2;
} else {
- /* this is pretty stupid. i'd prefer to combine this with skip_chunk_data */
- parser->chunk_size = parser->content_length;
- p += 1;
+ /* this is pretty stupid. i'd prefer to combine this with
+ * skip_chunk_data */
+ if (parser->content_length < 0) {
+ /* If we didn't get a content length; if not keep-alive
+ * just read body until EOF */
+ if (!http_parser_should_keep_alive(parser)) {
+ parser->flags |= EAT_FOREVER;
+ parser->chunk_size = REMAINING;
+ } else {
+ /* Otherwise, if keep-alive, then assume the message
+ * has no body. */
+ parser->chunk_size = parser->content_length = 0;
+ }
+ } else {
+ parser->chunk_size = parser->content_length;
+ }
+ p += 1;
- SKIP_BODY(MIN(REMAINING, parser->content_length));
+ SKIP_BODY(MIN(REMAINING, parser->chunk_size));
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
p--;
@@ -913,2571 +986,2438 @@ tr45:
}
}
goto _again;
-st268:
- if ( ++p == pe )
- goto _test_eof268;
-case 268:
-#line 921 "http_parser.c"
- switch( (*p) ) {
- case 67: goto tr310;
- case 68: goto tr311;
- case 71: goto tr312;
- case 72: goto tr313;
- case 76: goto tr314;
- case 77: goto tr315;
- case 79: goto tr316;
- case 80: goto tr317;
- case 84: goto tr318;
- case 85: goto tr319;
- }
- goto st0;
-tr310:
-#line 213 "http_parser.rl"
+st282:
+ if ( ++p == pe )
+ goto _test_eof282;
+case 282:
+#line 994 "http_parser.c"
+ switch( (*p) ) {
+ case 67: goto tr330;
+ case 68: goto tr331;
+ case 71: goto tr332;
+ case 72: goto tr333;
+ case 76: goto tr334;
+ case 77: goto tr335;
+ case 79: goto tr336;
+ case 80: goto tr337;
+ case 84: goto tr338;
+ case 85: goto tr339;
+ }
+ goto st0;
+tr330:
+#line 199 "http_parser.rl"
{
if(parser->on_message_begin) {
callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
- goto st20;
-st20:
- if ( ++p == pe )
- goto _test_eof20;
-case 20:
-#line 951 "http_parser.c"
- if ( (*p) == 79 )
- goto st21;
- goto st0;
-st21:
- if ( ++p == pe )
- goto _test_eof21;
-case 21:
- if ( (*p) == 80 )
- goto st22;
- goto st0;
+ goto st22;
st22:
if ( ++p == pe )
goto _test_eof22;
case 22:
- if ( (*p) == 89 )
+#line 1024 "http_parser.c"
+ if ( (*p) == 79 )
goto st23;
goto st0;
st23:
if ( ++p == pe )
goto _test_eof23;
case 23:
+ if ( (*p) == 80 )
+ goto st24;
+ goto st0;
+st24:
+ if ( ++p == pe )
+ goto _test_eof24;
+case 24:
+ if ( (*p) == 89 )
+ goto st25;
+ goto st0;
+st25:
+ if ( ++p == pe )
+ goto _test_eof25;
+case 25:
if ( (*p) == 32 )
- goto tr24;
+ goto tr26;
goto st0;
-tr24:
-#line 329 "http_parser.rl"
+tr26:
+#line 323 "http_parser.rl"
{ parser->method = HTTP_COPY; }
- goto st24;
-tr154:
-#line 330 "http_parser.rl"
+ goto st26;
+tr165:
+#line 324 "http_parser.rl"
{ parser->method = HTTP_DELETE; }
- goto st24;
-tr157:
-#line 331 "http_parser.rl"
+ goto st26;
+tr168:
+#line 325 "http_parser.rl"
{ parser->method = HTTP_GET; }
- goto st24;
-tr161:
-#line 332 "http_parser.rl"
+ goto st26;
+tr172:
+#line 326 "http_parser.rl"
{ parser->method = HTTP_HEAD; }
- goto st24;
-tr165:
-#line 333 "http_parser.rl"
+ goto st26;
+tr176:
+#line 327 "http_parser.rl"
{ parser->method = HTTP_LOCK; }
- goto st24;
-tr171:
-#line 334 "http_parser.rl"
+ goto st26;
+tr182:
+#line 328 "http_parser.rl"
{ parser->method = HTTP_MKCOL; }
- goto st24;
-tr174:
-#line 335 "http_parser.rl"
+ goto st26;
+tr185:
+#line 329 "http_parser.rl"
{ parser->method = HTTP_MOVE; }
- goto st24;
-tr181:
-#line 336 "http_parser.rl"
+ goto st26;
+tr192:
+#line 330 "http_parser.rl"
{ parser->method = HTTP_OPTIONS; }
- goto st24;
-tr187:
-#line 337 "http_parser.rl"
+ goto st26;
+tr198:
+#line 331 "http_parser.rl"
{ parser->method = HTTP_POST; }
- goto st24;
-tr195:
-#line 338 "http_parser.rl"
+ goto st26;
+tr206:
+#line 332 "http_parser.rl"
{ parser->method = HTTP_PROPFIND; }
- goto st24;
-tr200:
-#line 339 "http_parser.rl"
+ goto st26;
+tr211:
+#line 333 "http_parser.rl"
{ parser->method = HTTP_PROPPATCH; }
- goto st24;
-tr202:
-#line 340 "http_parser.rl"
+ goto st26;
+tr213:
+#line 334 "http_parser.rl"
{ parser->method = HTTP_PUT; }
- goto st24;
-tr207:
-#line 341 "http_parser.rl"
+ goto st26;
+tr218:
+#line 335 "http_parser.rl"
{ parser->method = HTTP_TRACE; }
- goto st24;
-tr213:
-#line 342 "http_parser.rl"
+ goto st26;
+tr224:
+#line 336 "http_parser.rl"
{ parser->method = HTTP_UNLOCK; }
- goto st24;
-st24:
+ goto st26;
+st26:
if ( ++p == pe )
- goto _test_eof24;
-case 24:
-#line 1036 "http_parser.c"
+ goto _test_eof26;
+case 26:
+#line 1109 "http_parser.c"
switch( (*p) ) {
- case 42: goto tr25;
- case 43: goto tr26;
- case 47: goto tr27;
- case 58: goto tr28;
+ case 42: goto tr27;
+ case 43: goto tr28;
+ case 47: goto tr29;
+ case 58: goto tr30;
}
if ( (*p) < 65 ) {
if ( 45 <= (*p) && (*p) <= 57 )
- goto tr26;
+ goto tr28;
} else if ( (*p) > 90 ) {
if ( 97 <= (*p) && (*p) <= 122 )
- goto tr26;
+ goto tr28;
} else
- goto tr26;
+ goto tr28;
goto st0;
-tr25:
-#line 138 "http_parser.rl"
+tr27:
+#line 148 "http_parser.rl"
{
parser->uri_mark = p;
parser->uri_size = 0;
}
- goto st25;
-st25:
+ goto st27;
+st27:
if ( ++p == pe )
- goto _test_eof25;
-case 25:
-#line 1063 "http_parser.c"
+ goto _test_eof27;
+case 27:
+#line 1136 "http_parser.c"
switch( (*p) ) {
- case 32: goto tr29;
- case 35: goto tr30;
+ case 32: goto tr31;
+ case 35: goto tr32;
}
goto st0;
-tr29:
-#line 163 "http_parser.rl"
- {
+tr31:
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st26;
-tr124:
-#line 123 "http_parser.rl"
+ goto st28;
+tr135:
+#line 133 "http_parser.rl"
{
parser->fragment_mark = p;
parser->fragment_size = 0;
}
-#line 173 "http_parser.rl"
- {
+#line 171 "http_parser.rl"
+ {
CALLBACK(fragment);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->fragment_mark = NULL;
parser->fragment_size = 0;
}
- goto st26;
-tr127:
-#line 173 "http_parser.rl"
- {
+ goto st28;
+tr138:
+#line 171 "http_parser.rl"
+ {
CALLBACK(fragment);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->fragment_mark = NULL;
parser->fragment_size = 0;
}
- goto st26;
-tr135:
-#line 193 "http_parser.rl"
+ goto st28;
+tr146:
+#line 183 "http_parser.rl"
{
CALLBACK(path);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->path_mark = NULL;
parser->path_size = 0;
}
-#line 163 "http_parser.rl"
- {
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st26;
-tr141:
-#line 128 "http_parser.rl"
+ goto st28;
+tr152:
+#line 138 "http_parser.rl"
{
parser->query_string_mark = p;
parser->query_string_size = 0;
}
-#line 183 "http_parser.rl"
- {
+#line 177 "http_parser.rl"
+ {
CALLBACK(query_string);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->query_string_mark = NULL;
parser->query_string_size = 0;
}
-#line 163 "http_parser.rl"
- {
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st26;
-tr145:
-#line 183 "http_parser.rl"
- {
+ goto st28;
+tr156:
+#line 177 "http_parser.rl"
+ {
CALLBACK(query_string);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->query_string_mark = NULL;
parser->query_string_size = 0;
}
-#line 163 "http_parser.rl"
- {
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st26;
-st26:
- if ( ++p == pe )
- goto _test_eof26;
-case 26:
-#line 1185 "http_parser.c"
- if ( (*p) == 72 )
- goto st27;
- goto st0;
-st27:
- if ( ++p == pe )
- goto _test_eof27;
-case 27:
- if ( (*p) == 84 )
- goto st28;
- goto st0;
+ goto st28;
st28:
if ( ++p == pe )
goto _test_eof28;
case 28:
- if ( (*p) == 84 )
+#line 1222 "http_parser.c"
+ if ( (*p) == 72 )
goto st29;
goto st0;
st29:
if ( ++p == pe )
goto _test_eof29;
case 29:
- if ( (*p) == 80 )
+ if ( (*p) == 84 )
goto st30;
goto st0;
st30:
if ( ++p == pe )
goto _test_eof30;
case 30:
- if ( (*p) == 47 )
+ if ( (*p) == 84 )
goto st31;
goto st0;
st31:
if ( ++p == pe )
goto _test_eof31;
case 31:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr36;
+ if ( (*p) == 80 )
+ goto st32;
goto st0;
-tr36:
-#line 243 "http_parser.rl"
- {
- parser->version_major *= 10;
- parser->version_major += *p - '0';
- }
- goto st32;
st32:
if ( ++p == pe )
goto _test_eof32;
case 32:
-#line 1235 "http_parser.c"
- if ( (*p) == 46 )
+ if ( (*p) == 47 )
goto st33;
goto st0;
st33:
if ( ++p == pe )
goto _test_eof33;
case 33:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr38;
+ switch( (*p) ) {
+ case 48: goto st34;
+ case 49: goto st108;
+ }
+ if ( 50 <= (*p) && (*p) <= 57 )
+ goto st112;
goto st0;
-tr38:
-#line 248 "http_parser.rl"
- {
- parser->version_minor *= 10;
- parser->version_minor += *p - '0';
- }
- goto st34;
st34:
if ( ++p == pe )
goto _test_eof34;
case 34:
-#line 1257 "http_parser.c"
- if ( (*p) == 13 )
+ if ( (*p) == 46 )
goto st35;
goto st0;
-tr49:
-#line 118 "http_parser.rl"
+st35:
+ if ( ++p == pe )
+ goto _test_eof35;
+case 35:
+ if ( (*p) == 57 )
+ goto st107;
+ if ( 48 <= (*p) && (*p) <= 56 )
+ goto st36;
+ goto st0;
+st36:
+ if ( ++p == pe )
+ goto _test_eof36;
+case 36:
+ if ( (*p) == 13 )
+ goto st37;
+ goto st0;
+tr54:
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
-#line 153 "http_parser.rl"
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st35;
-tr52:
-#line 153 "http_parser.rl"
+ goto st37;
+tr57:
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st35;
-tr71:
-#line 241 "http_parser.rl"
- { parser->keep_alive = FALSE; }
-#line 153 "http_parser.rl"
+ goto st37;
+tr76:
+#line 227 "http_parser.rl"
+ { parser->keep_alive = 0; }
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st35;
-tr81:
-#line 240 "http_parser.rl"
- { parser->keep_alive = TRUE; }
-#line 153 "http_parser.rl"
+ goto st37;
+tr86:
+#line 226 "http_parser.rl"
+ { parser->keep_alive = 1; }
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st35;
-tr122:
-#line 237 "http_parser.rl"
- { parser->transfer_encoding = HTTP_IDENTITY; }
-#line 153 "http_parser.rl"
+ goto st37;
+tr126:
+#line 224 "http_parser.rl"
+ { parser->flags |= CHUNKED; }
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st35;
-st35:
+ goto st37;
+tr127:
+#line 231 "http_parser.rl"
+ { parser->version = HTTP_VERSION_09; }
+ goto st37;
+tr131:
+#line 230 "http_parser.rl"
+ { parser->version = HTTP_VERSION_10; }
+ goto st37;
+tr132:
+#line 229 "http_parser.rl"
+ { parser->version = HTTP_VERSION_11; }
+ goto st37;
+st37:
if ( ++p == pe )
- goto _test_eof35;
-case 35:
-#line 1336 "http_parser.c"
+ goto _test_eof37;
+case 37:
+#line 1355 "http_parser.c"
if ( (*p) == 10 )
- goto st36;
+ goto st38;
goto st0;
-st36:
+st38:
if ( ++p == pe )
- goto _test_eof36;
-case 36:
+ goto _test_eof38;
+case 38:
switch( (*p) ) {
- case 13: goto st37;
- case 33: goto tr42;
- case 67: goto tr43;
- case 84: goto tr44;
- case 99: goto tr43;
- case 116: goto tr44;
- case 124: goto tr42;
- case 126: goto tr42;
+ case 13: goto st39;
+ case 33: goto tr47;
+ case 67: goto tr48;
+ case 84: goto tr49;
+ case 99: goto tr48;
+ case 116: goto tr49;
+ case 124: goto tr47;
+ case 126: goto tr47;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto tr42;
+ goto tr47;
} else if ( (*p) >= 35 )
- goto tr42;
+ goto tr47;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr42;
+ goto tr47;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto tr42;
+ goto tr47;
} else
- goto tr42;
+ goto tr47;
} else
- goto tr42;
+ goto tr47;
goto st0;
-st37:
+st39:
if ( ++p == pe )
- goto _test_eof37;
-case 37:
+ goto _test_eof39;
+case 39:
if ( (*p) == 10 )
- goto tr45;
+ goto tr50;
goto st0;
-tr42:
-#line 113 "http_parser.rl"
+tr47:
+#line 123 "http_parser.rl"
{
parser->header_field_mark = p;
parser->header_field_size = 0;
}
- goto st38;
-st38:
+ goto st40;
+st40:
if ( ++p == pe )
- goto _test_eof38;
-case 38:
-#line 1390 "http_parser.c"
+ goto _test_eof40;
+case 40:
+#line 1409 "http_parser.c"
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-tr47:
-#line 143 "http_parser.rl"
+tr52:
+#line 153 "http_parser.rl"
{
CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_field_mark = NULL;
parser->header_field_size = 0;
}
- goto st39;
-st39:
+ goto st41;
+st41:
if ( ++p == pe )
- goto _test_eof39;
-case 39:
-#line 1431 "http_parser.c"
+ goto _test_eof41;
+case 41:
+#line 1446 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr49;
- case 32: goto st39;
+ case 13: goto tr54;
+ case 32: goto st41;
}
- goto tr48;
-tr48:
-#line 118 "http_parser.rl"
+ goto tr53;
+tr53:
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
- goto st40;
-st40:
+ goto st42;
+st42:
if ( ++p == pe )
- goto _test_eof40;
-case 40:
-#line 1448 "http_parser.c"
+ goto _test_eof42;
+case 42:
+#line 1463 "http_parser.c"
if ( (*p) == 13 )
- goto tr52;
- goto st40;
-tr43:
-#line 113 "http_parser.rl"
+ goto tr57;
+ goto st42;
+tr48:
+#line 123 "http_parser.rl"
{
parser->header_field_mark = p;
parser->header_field_size = 0;
}
- goto st41;
-st41:
+ goto st43;
+st43:
if ( ++p == pe )
- goto _test_eof41;
-case 41:
-#line 1463 "http_parser.c"
+ goto _test_eof43;
+case 43:
+#line 1478 "http_parser.c"
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 79: goto st42;
- case 111: goto st42;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 79: goto st44;
+ case 111: goto st44;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st42:
+st44:
if ( ++p == pe )
- goto _test_eof42;
-case 42:
+ goto _test_eof44;
+case 44:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st43;
- case 110: goto st43;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st45;
+ case 110: goto st45;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st43:
+st45:
if ( ++p == pe )
- goto _test_eof43;
-case 43:
+ goto _test_eof45;
+case 45:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st44;
- case 84: goto st67;
- case 110: goto st44;
- case 116: goto st67;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st46;
+ case 84: goto st69;
+ case 110: goto st46;
+ case 116: goto st69;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st44:
+st46:
if ( ++p == pe )
- goto _test_eof44;
-case 44:
+ goto _test_eof46;
+case 46:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 69: goto st45;
- case 101: goto st45;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 69: goto st47;
+ case 101: goto st47;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st45:
+st47:
if ( ++p == pe )
- goto _test_eof45;
-case 45:
+ goto _test_eof47;
+case 47:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 67: goto st46;
- case 99: goto st46;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 67: goto st48;
+ case 99: goto st48;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st46:
+st48:
if ( ++p == pe )
- goto _test_eof46;
-case 46:
+ goto _test_eof48;
+case 48:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 84: goto st47;
- case 116: goto st47;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 84: goto st49;
+ case 116: goto st49;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st47:
+st49:
if ( ++p == pe )
- goto _test_eof47;
-case 47:
+ goto _test_eof49;
+case 49:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 73: goto st48;
- case 105: goto st48;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 73: goto st50;
+ case 105: goto st50;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st48:
+st50:
if ( ++p == pe )
- goto _test_eof48;
-case 48:
+ goto _test_eof50;
+case 50:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 79: goto st49;
- case 111: goto st49;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 79: goto st51;
+ case 111: goto st51;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st49:
+st51:
if ( ++p == pe )
- goto _test_eof49;
-case 49:
+ goto _test_eof51;
+case 51:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st50;
- case 110: goto st50;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st52;
+ case 110: goto st52;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st50:
+st52:
if ( ++p == pe )
- goto _test_eof50;
-case 50:
+ goto _test_eof52;
+case 52:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr63;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr68;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-tr63:
-#line 143 "http_parser.rl"
+tr68:
+#line 153 "http_parser.rl"
{
CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_field_mark = NULL;
parser->header_field_size = 0;
}
- goto st51;
-st51:
- if ( ++p == pe )
- goto _test_eof51;
-case 51:
-#line 1776 "http_parser.c"
- switch( (*p) ) {
- case 13: goto tr49;
- case 32: goto st51;
- case 67: goto tr65;
- case 75: goto tr66;
- case 99: goto tr65;
- case 107: goto tr66;
- }
- goto tr48;
-tr65:
-#line 118 "http_parser.rl"
- {
- parser->header_value_mark = p;
- parser->header_value_size = 0;
- }
- goto st52;
-st52:
- if ( ++p == pe )
- goto _test_eof52;
-case 52:
-#line 1797 "http_parser.c"
- switch( (*p) ) {
- case 13: goto tr52;
- case 76: goto st53;
- case 108: goto st53;
- }
- goto st40;
+ goto st53;
st53:
if ( ++p == pe )
goto _test_eof53;
case 53:
+#line 1787 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr52;
- case 79: goto st54;
- case 111: goto st54;
+ case 13: goto tr54;
+ case 32: goto st53;
+ case 67: goto tr70;
+ case 75: goto tr71;
+ case 99: goto tr70;
+ case 107: goto tr71;
}
- goto st40;
+ goto tr53;
+tr70:
+#line 128 "http_parser.rl"
+ {
+ parser->header_value_mark = p;
+ parser->header_value_size = 0;
+ }
+ goto st54;
st54:
if ( ++p == pe )
goto _test_eof54;
case 54:
+#line 1808 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr52;
- case 83: goto st55;
- case 115: goto st55;
+ case 13: goto tr57;
+ case 76: goto st55;
+ case 108: goto st55;
}
- goto st40;
+ goto st42;
st55:
if ( ++p == pe )
goto _test_eof55;
case 55:
switch( (*p) ) {
- case 13: goto tr52;
- case 69: goto st56;
- case 101: goto st56;
+ case 13: goto tr57;
+ case 79: goto st56;
+ case 111: goto st56;
}
- goto st40;
+ goto st42;
st56:
if ( ++p == pe )
goto _test_eof56;
case 56:
- if ( (*p) == 13 )
- goto tr71;
- goto st40;
-tr66:
-#line 118 "http_parser.rl"
- {
- parser->header_value_mark = p;
- parser->header_value_size = 0;
- }
- goto st57;
+ switch( (*p) ) {
+ case 13: goto tr57;
+ case 83: goto st57;
+ case 115: goto st57;
+ }
+ goto st42;
st57:
if ( ++p == pe )
goto _test_eof57;
case 57:
-#line 1852 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr52;
+ case 13: goto tr57;
case 69: goto st58;
case 101: goto st58;
}
- goto st40;
+ goto st42;
st58:
if ( ++p == pe )
goto _test_eof58;
case 58:
- switch( (*p) ) {
- case 13: goto tr52;
- case 69: goto st59;
- case 101: goto st59;
- }
- goto st40;
+ if ( (*p) == 13 )
+ goto tr76;
+ goto st42;
+tr71:
+#line 128 "http_parser.rl"
+ {
+ parser->header_value_mark = p;
+ parser->header_value_size = 0;
+ }
+ goto st59;
st59:
if ( ++p == pe )
goto _test_eof59;
case 59:
+#line 1863 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr52;
- case 80: goto st60;
- case 112: goto st60;
+ case 13: goto tr57;
+ case 69: goto st60;
+ case 101: goto st60;
}
- goto st40;
+ goto st42;
st60:
if ( ++p == pe )
goto _test_eof60;
case 60:
switch( (*p) ) {
- case 13: goto tr52;
- case 45: goto st61;
+ case 13: goto tr57;
+ case 69: goto st61;
+ case 101: goto st61;
}
- goto st40;
+ goto st42;
st61:
if ( ++p == pe )
goto _test_eof61;
case 61:
switch( (*p) ) {
- case 13: goto tr52;
- case 65: goto st62;
- case 97: goto st62;
+ case 13: goto tr57;
+ case 80: goto st62;
+ case 112: goto st62;
}
- goto st40;
+ goto st42;
st62:
if ( ++p == pe )
goto _test_eof62;
case 62:
switch( (*p) ) {
- case 13: goto tr52;
- case 76: goto st63;
- case 108: goto st63;
+ case 13: goto tr57;
+ case 45: goto st63;
}
- goto st40;
+ goto st42;
st63:
if ( ++p == pe )
goto _test_eof63;
case 63:
switch( (*p) ) {
- case 13: goto tr52;
- case 73: goto st64;
- case 105: goto st64;
+ case 13: goto tr57;
+ case 65: goto st64;
+ case 97: goto st64;
}
- goto st40;
+ goto st42;
st64:
if ( ++p == pe )
goto _test_eof64;
case 64:
switch( (*p) ) {
- case 13: goto tr52;
- case 86: goto st65;
- case 118: goto st65;
+ case 13: goto tr57;
+ case 76: goto st65;
+ case 108: goto st65;
}
- goto st40;
+ goto st42;
st65:
if ( ++p == pe )
goto _test_eof65;
case 65:
switch( (*p) ) {
- case 13: goto tr52;
- case 69: goto st66;
- case 101: goto st66;
+ case 13: goto tr57;
+ case 73: goto st66;
+ case 105: goto st66;
}
- goto st40;
+ goto st42;
st66:
if ( ++p == pe )
goto _test_eof66;
case 66:
- if ( (*p) == 13 )
- goto tr81;
- goto st40;
+ switch( (*p) ) {
+ case 13: goto tr57;
+ case 86: goto st67;
+ case 118: goto st67;
+ }
+ goto st42;
st67:
if ( ++p == pe )
goto _test_eof67;
case 67:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
+ case 13: goto tr57;
case 69: goto st68;
case 101: goto st68;
- case 124: goto st38;
- case 126: goto st38;
+ }
+ goto st42;
+st68:
+ if ( ++p == pe )
+ goto _test_eof68;
+case 68:
+ if ( (*p) == 13 )
+ goto tr86;
+ goto st42;
+st69:
+ if ( ++p == pe )
+ goto _test_eof69;
+case 69:
+ switch( (*p) ) {
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 69: goto st70;
+ case 101: goto st70;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st68:
+st70:
if ( ++p == pe )
- goto _test_eof68;
-case 68:
+ goto _test_eof70;
+case 70:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st69;
- case 110: goto st69;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st71;
+ case 110: goto st71;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st69:
+st71:
if ( ++p == pe )
- goto _test_eof69;
-case 69:
+ goto _test_eof71;
+case 71:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 84: goto st70;
- case 116: goto st70;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 84: goto st72;
+ case 116: goto st72;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st70:
+st72:
if ( ++p == pe )
- goto _test_eof70;
-case 70:
+ goto _test_eof72;
+case 72:
switch( (*p) ) {
- case 33: goto st38;
- case 45: goto st71;
- case 46: goto st38;
- case 58: goto tr47;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 45: goto st73;
+ case 46: goto st40;
+ case 58: goto tr52;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 48 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 57 ) {
if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 65 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st71:
+st73:
if ( ++p == pe )
- goto _test_eof71;
-case 71:
+ goto _test_eof73;
+case 73:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 76: goto st72;
- case 108: goto st72;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 76: goto st74;
+ case 108: goto st74;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st72:
+st74:
if ( ++p == pe )
- goto _test_eof72;
-case 72:
+ goto _test_eof74;
+case 74:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 69: goto st73;
- case 101: goto st73;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 69: goto st75;
+ case 101: goto st75;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st73:
+st75:
if ( ++p == pe )
- goto _test_eof73;
-case 73:
+ goto _test_eof75;
+case 75:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st74;
- case 110: goto st74;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st76;
+ case 110: goto st76;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st74:
+st76:
if ( ++p == pe )
- goto _test_eof74;
-case 74:
+ goto _test_eof76;
+case 76:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 71: goto st75;
- case 103: goto st75;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 71: goto st77;
+ case 103: goto st77;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st75:
+st77:
if ( ++p == pe )
- goto _test_eof75;
-case 75:
+ goto _test_eof77;
+case 77:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 84: goto st76;
- case 116: goto st76;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 84: goto st78;
+ case 116: goto st78;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st76:
+st78:
if ( ++p == pe )
- goto _test_eof76;
-case 76:
+ goto _test_eof78;
+case 78:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 72: goto st77;
- case 104: goto st77;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 72: goto st79;
+ case 104: goto st79;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-st77:
+st79:
if ( ++p == pe )
- goto _test_eof77;
-case 77:
+ goto _test_eof79;
+case 79:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr92;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr97;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-tr92:
-#line 143 "http_parser.rl"
+tr97:
+#line 153 "http_parser.rl"
{
CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_field_mark = NULL;
parser->header_field_size = 0;
}
- goto st78;
-st78:
+ goto st80;
+st80:
if ( ++p == pe )
- goto _test_eof78;
-case 78:
-#line 2286 "http_parser.c"
+ goto _test_eof80;
+case 80:
+#line 2293 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr49;
- case 32: goto st78;
+ case 13: goto tr54;
+ case 32: goto st80;
}
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr94;
- goto tr48;
-tr94:
-#line 223 "http_parser.rl"
+ goto tr99;
+ goto tr53;
+tr99:
+#line 209 "http_parser.rl"
{
+ if (parser->content_length == -1) parser->content_length = 0;
if (parser->content_length > INT_MAX) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
parser->content_length *= 10;
parser->content_length += *p - '0';
}
-#line 118 "http_parser.rl"
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
- goto st79;
-tr95:
-#line 223 "http_parser.rl"
+ goto st81;
+tr100:
+#line 209 "http_parser.rl"
{
+ if (parser->content_length == -1) parser->content_length = 0;
if (parser->content_length > INT_MAX) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
parser->content_length *= 10;
parser->content_length += *p - '0';
}
- goto st79;
-st79:
+ goto st81;
+st81:
if ( ++p == pe )
- goto _test_eof79;
-case 79:
-#line 2325 "http_parser.c"
+ goto _test_eof81;
+case 81:
+#line 2334 "http_parser.c"
if ( (*p) == 13 )
- goto tr52;
+ goto tr57;
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr95;
- goto st40;
-tr44:
-#line 113 "http_parser.rl"
+ goto tr100;
+ goto st42;
+tr49:
+#line 123 "http_parser.rl"
{
parser->header_field_mark = p;
parser->header_field_size = 0;
}
- goto st80;
-st80:
- if ( ++p == pe )
- goto _test_eof80;
-case 80:
-#line 2342 "http_parser.c"
- switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 82: goto st81;
- case 114: goto st81;
- case 124: goto st38;
- case 126: goto st38;
- }
- if ( (*p) < 45 ) {
- if ( (*p) > 39 ) {
- if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
- } else if ( (*p) >= 35 )
- goto st38;
- } else if ( (*p) > 46 ) {
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
- } else if ( (*p) > 90 ) {
- if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
- } else
- goto st38;
- } else
- goto st38;
- goto st0;
-st81:
- if ( ++p == pe )
- goto _test_eof81;
-case 81:
- switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 65: goto st82;
- case 97: goto st82;
- case 124: goto st38;
- case 126: goto st38;
- }
- if ( (*p) < 45 ) {
- if ( (*p) > 39 ) {
- if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
- } else if ( (*p) >= 35 )
- goto st38;
- } else if ( (*p) > 46 ) {
- if ( (*p) < 66 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
- } else if ( (*p) > 90 ) {
- if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
- } else
- goto st38;
- } else
- goto st38;
- goto st0;
+ goto st82;
st82:
if ( ++p == pe )
goto _test_eof82;
case 82:
+#line 2351 "http_parser.c"
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st83;
- case 110: goto st83;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 82: goto st83;
+ case 114: goto st83;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st83:
if ( ++p == pe )
goto _test_eof83;
case 83:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 83: goto st84;
- case 115: goto st84;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 65: goto st84;
+ case 97: goto st84;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
- if ( (*p) < 65 ) {
+ if ( (*p) < 66 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st84:
if ( ++p == pe )
goto _test_eof84;
case 84:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 70: goto st85;
- case 102: goto st85;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st85;
+ case 110: goto st85;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st85:
if ( ++p == pe )
goto _test_eof85;
case 85:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 69: goto st86;
- case 101: goto st86;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 83: goto st86;
+ case 115: goto st86;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st86:
if ( ++p == pe )
goto _test_eof86;
case 86:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 82: goto st87;
- case 114: goto st87;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 70: goto st87;
+ case 102: goto st87;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st87:
if ( ++p == pe )
goto _test_eof87;
case 87:
switch( (*p) ) {
- case 33: goto st38;
- case 45: goto st88;
- case 46: goto st38;
- case 58: goto tr47;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 69: goto st88;
+ case 101: goto st88;
+ case 124: goto st40;
+ case 126: goto st40;
}
- if ( (*p) < 48 ) {
+ if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
- } else if ( (*p) > 57 ) {
- if ( (*p) > 90 ) {
+ goto st40;
+ } else if ( (*p) > 46 ) {
+ if ( (*p) < 65 ) {
+ if ( 48 <= (*p) && (*p) <= 57 )
+ goto st40;
+ } else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
- } else if ( (*p) >= 65 )
- goto st38;
+ goto st40;
+ } else
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st88:
if ( ++p == pe )
goto _test_eof88;
case 88:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 69: goto st89;
- case 101: goto st89;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 82: goto st89;
+ case 114: goto st89;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st89:
if ( ++p == pe )
goto _test_eof89;
case 89:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st90;
- case 110: goto st90;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 45: goto st90;
+ case 46: goto st40;
+ case 58: goto tr52;
+ case 124: goto st40;
+ case 126: goto st40;
}
- if ( (*p) < 45 ) {
+ if ( (*p) < 48 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
- } else if ( (*p) > 46 ) {
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
- } else if ( (*p) > 90 ) {
+ goto st40;
+ } else if ( (*p) > 57 ) {
+ if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
- } else
- goto st38;
+ goto st40;
+ } else if ( (*p) >= 65 )
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st90:
if ( ++p == pe )
goto _test_eof90;
case 90:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 67: goto st91;
- case 99: goto st91;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 69: goto st91;
+ case 101: goto st91;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st91:
if ( ++p == pe )
goto _test_eof91;
case 91:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 79: goto st92;
- case 111: goto st92;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st92;
+ case 110: goto st92;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st92:
if ( ++p == pe )
goto _test_eof92;
case 92:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 68: goto st93;
- case 100: goto st93;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 67: goto st93;
+ case 99: goto st93;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st93:
if ( ++p == pe )
goto _test_eof93;
case 93:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 73: goto st94;
- case 105: goto st94;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 79: goto st94;
+ case 111: goto st94;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st94:
if ( ++p == pe )
goto _test_eof94;
case 94:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 78: goto st95;
- case 110: goto st95;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 68: goto st95;
+ case 100: goto st95;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st95:
if ( ++p == pe )
goto _test_eof95;
case 95:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr47;
- case 71: goto st96;
- case 103: goto st96;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 73: goto st96;
+ case 105: goto st96;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
st96:
if ( ++p == pe )
goto _test_eof96;
case 96:
switch( (*p) ) {
- case 33: goto st38;
- case 58: goto tr112;
- case 124: goto st38;
- case 126: goto st38;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 78: goto st97;
+ case 110: goto st97;
+ case 124: goto st40;
+ case 126: goto st40;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st38;
+ goto st40;
} else if ( (*p) >= 35 )
- goto st38;
+ goto st40;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st38;
+ goto st40;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
} else
- goto st38;
+ goto st40;
goto st0;
-tr112:
-#line 238 "http_parser.rl"
- { parser->transfer_encoding = HTTP_CHUNKED; }
-#line 143 "http_parser.rl"
- {
- CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
- parser->header_field_mark = NULL;
- parser->header_field_size = 0;
- }
- goto st97;
st97:
if ( ++p == pe )
goto _test_eof97;
case 97:
-#line 2862 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr49;
- case 32: goto st97;
- case 105: goto tr114;
+ case 33: goto st40;
+ case 58: goto tr52;
+ case 71: goto st98;
+ case 103: goto st98;
+ case 124: goto st40;
+ case 126: goto st40;
}
- goto tr48;
-tr114:
-#line 118 "http_parser.rl"
- {
- parser->header_value_mark = p;
- parser->header_value_size = 0;
- }
- goto st98;
+ if ( (*p) < 45 ) {
+ if ( (*p) > 39 ) {
+ if ( 42 <= (*p) && (*p) <= 43 )
+ goto st40;
+ } else if ( (*p) >= 35 )
+ goto st40;
+ } else if ( (*p) > 46 ) {
+ if ( (*p) < 65 ) {
+ if ( 48 <= (*p) && (*p) <= 57 )
+ goto st40;
+ } else if ( (*p) > 90 ) {
+ if ( 94 <= (*p) && (*p) <= 122 )
+ goto st40;
+ } else
+ goto st40;
+ } else
+ goto st40;
+ goto st0;
st98:
if ( ++p == pe )
goto _test_eof98;
case 98:
-#line 2880 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr52;
- case 100: goto st99;
+ case 33: goto st40;
+ case 58: goto tr117;
+ case 124: goto st40;
+ case 126: goto st40;
}
- goto st40;
+ if ( (*p) < 45 ) {
+ if ( (*p) > 39 ) {
+ if ( 42 <= (*p) && (*p) <= 43 )
+ goto st40;
+ } else if ( (*p) >= 35 )
+ goto st40;
+ } else if ( (*p) > 46 ) {
+ if ( (*p) < 65 ) {
+ if ( 48 <= (*p) && (*p) <= 57 )
+ goto st40;
+ } else if ( (*p) > 90 ) {
+ if ( 94 <= (*p) && (*p) <= 122 )
+ goto st40;
+ } else
+ goto st40;
+ } else
+ goto st40;
+ goto st0;
+tr117:
+#line 153 "http_parser.rl"
+ {
+ CALLBACK(header_field);
+ parser->header_field_mark = NULL;
+ parser->header_field_size = 0;
+ }
+ goto st99;
st99:
if ( ++p == pe )
goto _test_eof99;
case 99:
+#line 2865 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr52;
- case 101: goto st100;
+ case 13: goto tr54;
+ case 32: goto st99;
+ case 67: goto tr119;
+ case 99: goto tr119;
}
- goto st40;
+ goto tr53;
+tr119:
+#line 128 "http_parser.rl"
+ {
+ parser->header_value_mark = p;
+ parser->header_value_size = 0;
+ }
+ goto st100;
st100:
if ( ++p == pe )
goto _test_eof100;
case 100:
+#line 2884 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr52;
- case 110: goto st101;
+ case 13: goto tr57;
+ case 72: goto st101;
+ case 104: goto st101;
}
- goto st40;
+ goto st42;
st101:
if ( ++p == pe )
goto _test_eof101;
case 101:
switch( (*p) ) {
- case 13: goto tr52;
- case 116: goto st102;
+ case 13: goto tr57;
+ case 85: goto st102;
+ case 117: goto st102;
}
- goto st40;
+ goto st42;
st102:
if ( ++p == pe )
goto _test_eof102;
case 102:
switch( (*p) ) {
- case 13: goto tr52;
- case 105: goto st103;
+ case 13: goto tr57;
+ case 78: goto st103;
+ case 110: goto st103;
}
- goto st40;
+ goto st42;
st103:
if ( ++p == pe )
goto _test_eof103;
case 103:
switch( (*p) ) {
- case 13: goto tr52;
- case 116: goto st104;
+ case 13: goto tr57;
+ case 75: goto st104;
+ case 107: goto st104;
}
- goto st40;
+ goto st42;
st104:
if ( ++p == pe )
goto _test_eof104;
case 104:
switch( (*p) ) {
- case 13: goto tr52;
- case 121: goto st105;
+ case 13: goto tr57;
+ case 69: goto st105;
+ case 101: goto st105;
}
- goto st40;
+ goto st42;
st105:
if ( ++p == pe )
goto _test_eof105;
case 105:
+ switch( (*p) ) {
+ case 13: goto tr57;
+ case 68: goto st106;
+ case 100: goto st106;
+ }
+ goto st42;
+st106:
+ if ( ++p == pe )
+ goto _test_eof106;
+case 106:
if ( (*p) == 13 )
- goto tr122;
- goto st40;
-tr30:
-#line 163 "http_parser.rl"
- {
+ goto tr126;
+ goto st42;
+st107:
+ if ( ++p == pe )
+ goto _test_eof107;
+case 107:
+ if ( (*p) == 13 )
+ goto tr127;
+ goto st0;
+st108:
+ if ( ++p == pe )
+ goto _test_eof108;
+case 108:
+ if ( (*p) == 46 )
+ goto st109;
+ goto st0;
+st109:
+ if ( ++p == pe )
+ goto _test_eof109;
+case 109:
+ switch( (*p) ) {
+ case 48: goto st110;
+ case 49: goto st111;
+ }
+ if ( 50 <= (*p) && (*p) <= 57 )
+ goto st36;
+ goto st0;
+st110:
+ if ( ++p == pe )
+ goto _test_eof110;
+case 110:
+ if ( (*p) == 13 )
+ goto tr131;
+ goto st0;
+st111:
+ if ( ++p == pe )
+ goto _test_eof111;
+case 111:
+ if ( (*p) == 13 )
+ goto tr132;
+ goto st0;
+st112:
+ if ( ++p == pe )
+ goto _test_eof112;
+case 112:
+ if ( (*p) == 46 )
+ goto st113;
+ goto st0;
+st113:
+ if ( ++p == pe )
+ goto _test_eof113;
+case 113:
+ if ( 48 <= (*p) && (*p) <= 57 )
+ goto st36;
+ goto st0;
+tr32:
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st106;
-tr136:
-#line 193 "http_parser.rl"
+ goto st114;
+tr147:
+#line 183 "http_parser.rl"
{
CALLBACK(path);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->path_mark = NULL;
parser->path_size = 0;
}
-#line 163 "http_parser.rl"
- {
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st106;
-tr142:
-#line 128 "http_parser.rl"
+ goto st114;
+tr153:
+#line 138 "http_parser.rl"
{
parser->query_string_mark = p;
parser->query_string_size = 0;
}
-#line 183 "http_parser.rl"
- {
+#line 177 "http_parser.rl"
+ {
CALLBACK(query_string);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->query_string_mark = NULL;
parser->query_string_size = 0;
}
-#line 163 "http_parser.rl"
- {
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st106;
-tr146:
-#line 183 "http_parser.rl"
- {
+ goto st114;
+tr157:
+#line 177 "http_parser.rl"
+ {
CALLBACK(query_string);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->query_string_mark = NULL;
parser->query_string_size = 0;
}
-#line 163 "http_parser.rl"
- {
+#line 165 "http_parser.rl"
+ {
CALLBACK(uri);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->uri_mark = NULL;
parser->uri_size = 0;
}
- goto st106;
-st106:
+ goto st114;
+st114:
if ( ++p == pe )
- goto _test_eof106;
-case 106:
-#line 3034 "http_parser.c"
+ goto _test_eof114;
+case 114:
+#line 3060 "http_parser.c"
switch( (*p) ) {
- case 32: goto tr124;
+ case 32: goto tr135;
case 35: goto st0;
- case 37: goto tr125;
+ case 37: goto tr136;
case 60: goto st0;
case 62: goto st0;
case 127: goto st0;
}
if ( 0 <= (*p) && (*p) <= 31 )
goto st0;
- goto tr123;
-tr123:
-#line 123 "http_parser.rl"
+ goto tr134;
+tr134:
+#line 133 "http_parser.rl"
{
parser->fragment_mark = p;
parser->fragment_size = 0;
}
- goto st107;
-st107:
+ goto st115;
+st115:
if ( ++p == pe )
- goto _test_eof107;
-case 107:
-#line 3057 "http_parser.c"
+ goto _test_eof115;
+case 115:
+#line 3083 "http_parser.c"
switch( (*p) ) {
- case 32: goto tr127;
+ case 32: goto tr138;
case 35: goto st0;
- case 37: goto st108;
+ case 37: goto st116;
case 60: goto st0;
case 62: goto st0;
case 127: goto st0;
}
if ( 0 <= (*p) && (*p) <= 31 )
goto st0;
- goto st107;
-tr125:
-#line 123 "http_parser.rl"
+ goto st115;
+tr136:
+#line 133 "http_parser.rl"
{
parser->fragment_mark = p;
parser->fragment_size = 0;
}
- goto st108;
-st108:
+ goto st116;
+st116:
if ( ++p == pe )
- goto _test_eof108;
-case 108:
-#line 3080 "http_parser.c"
+ goto _test_eof116;
+case 116:
+#line 3106 "http_parser.c"
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st109;
+ goto st117;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st109;
+ goto st117;
} else
- goto st109;
+ goto st117;
goto st0;
-st109:
+st117:
if ( ++p == pe )
- goto _test_eof109;
-case 109:
+ goto _test_eof117;
+case 117:
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st107;
+ goto st115;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st107;
+ goto st115;
} else
- goto st107;
+ goto st115;
goto st0;
-tr26:
-#line 138 "http_parser.rl"
+tr28:
+#line 148 "http_parser.rl"
{
parser->uri_mark = p;
parser->uri_size = 0;
}
- goto st110;
-st110:
+ goto st118;
+st118:
if ( ++p == pe )
- goto _test_eof110;
-case 110:
-#line 3114 "http_parser.c"
+ goto _test_eof118;
+case 118:
+#line 3140 "http_parser.c"
switch( (*p) ) {
- case 43: goto st110;
- case 58: goto st111;
+ case 43: goto st118;
+ case 58: goto st119;
}
if ( (*p) < 48 ) {
if ( 45 <= (*p) && (*p) <= 46 )
- goto st110;
+ goto st118;
} else if ( (*p) > 57 ) {
if ( (*p) > 90 ) {
if ( 97 <= (*p) && (*p) <= 122 )
- goto st110;
+ goto st118;
} else if ( (*p) >= 65 )
- goto st110;
+ goto st118;
} else
- goto st110;
+ goto st118;
goto st0;
-tr28:
-#line 138 "http_parser.rl"
+tr30:
+#line 148 "http_parser.rl"
{
parser->uri_mark = p;
parser->uri_size = 0;
}
- goto st111;
-st111:
+ goto st119;
+st119:
if ( ++p == pe )
- goto _test_eof111;
-case 111:
-#line 3142 "http_parser.c"
+ goto _test_eof119;
+case 119:
+#line 3168 "http_parser.c"
switch( (*p) ) {
- case 32: goto tr29;
- case 35: goto tr30;
- case 37: goto st112;
+ case 32: goto tr31;
+ case 35: goto tr32;
+ case 37: goto st120;
case 60: goto st0;
case 62: goto st0;
case 127: goto st0;
}
if ( 0 <= (*p) && (*p) <= 31 )
goto st0;
- goto st111;
-st112:
+ goto st119;
+st120:
if ( ++p == pe )
- goto _test_eof112;
-case 112:
+ goto _test_eof120;
+case 120:
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st113;
+ goto st121;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st113;
+ goto st121;
} else
- goto st113;
+ goto st121;
goto st0;
-st113:
+st121:
if ( ++p == pe )
- goto _test_eof113;
-case 113:
+ goto _test_eof121;
+case 121:
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st111;
+ goto st119;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st111;
+ goto st119;
} else
- goto st111;
+ goto st119;
goto st0;
-tr27:
-#line 138 "http_parser.rl"
+tr29:
+#line 148 "http_parser.rl"
{
parser->uri_mark = p;
parser->uri_size = 0;
}
-#line 133 "http_parser.rl"
+#line 143 "http_parser.rl"
{
parser->path_mark = p;
parser->path_size = 0;
}
- goto st114;
-st114:
+ goto st122;
+st122:
if ( ++p == pe )
- goto _test_eof114;
-case 114:
-#line 3196 "http_parser.c"
+ goto _test_eof122;
+case 122:
+#line 3222 "http_parser.c"
switch( (*p) ) {
- case 32: goto tr135;
- case 35: goto tr136;
- case 37: goto st115;
+ case 32: goto tr146;
+ case 35: goto tr147;
+ case 37: goto st123;
case 60: goto st0;
case 62: goto st0;
- case 63: goto tr138;
+ case 63: goto tr149;
case 127: goto st0;
}
if ( 0 <= (*p) && (*p) <= 31 )
goto st0;
- goto st114;
-st115:
+ goto st122;
+st123:
if ( ++p == pe )
- goto _test_eof115;
-case 115:
+ goto _test_eof123;
+case 123:
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st116;
+ goto st124;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st116;
+ goto st124;
} else
- goto st116;
+ goto st124;
goto st0;
-st116:
+st124:
if ( ++p == pe )
- goto _test_eof116;
-case 116:
+ goto _test_eof124;
+case 124:
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st114;
+ goto st122;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st114;
+ goto st122;
} else
- goto st114;
+ goto st122;
goto st0;
-tr138:
-#line 193 "http_parser.rl"
+tr149:
+#line 183 "http_parser.rl"
{
CALLBACK(path);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->path_mark = NULL;
parser->path_size = 0;
}
- goto st117;
-st117:
+ goto st125;
+st125:
if ( ++p == pe )
- goto _test_eof117;
-case 117:
-#line 3251 "http_parser.c"
+ goto _test_eof125;
+case 125:
+#line 3273 "http_parser.c"
switch( (*p) ) {
- case 32: goto tr141;
- case 35: goto tr142;
- case 37: goto tr143;
+ case 32: goto tr152;
+ case 35: goto tr153;
+ case 37: goto tr154;
case 60: goto st0;
case 62: goto st0;
case 127: goto st0;
}
if ( 0 <= (*p) && (*p) <= 31 )
goto st0;
- goto tr140;
-tr140:
-#line 128 "http_parser.rl"
+ goto tr151;
+tr151:
+#line 138 "http_parser.rl"
{
parser->query_string_mark = p;
parser->query_string_size = 0;
}
- goto st118;
-st118:
+ goto st126;
+st126:
if ( ++p == pe )
- goto _test_eof118;
-case 118:
-#line 3274 "http_parser.c"
+ goto _test_eof126;
+case 126:
+#line 3296 "http_parser.c"
switch( (*p) ) {
- case 32: goto tr145;
- case 35: goto tr146;
- case 37: goto st119;
+ case 32: goto tr156;
+ case 35: goto tr157;
+ case 37: goto st127;
case 60: goto st0;
case 62: goto st0;
case 127: goto st0;
}
if ( 0 <= (*p) && (*p) <= 31 )
goto st0;
- goto st118;
-tr143:
-#line 128 "http_parser.rl"
+ goto st126;
+tr154:
+#line 138 "http_parser.rl"
{
parser->query_string_mark = p;
parser->query_string_size = 0;
}
- goto st119;
-st119:
+ goto st127;
+st127:
if ( ++p == pe )
- goto _test_eof119;
-case 119:
-#line 3297 "http_parser.c"
+ goto _test_eof127;
+case 127:
+#line 3319 "http_parser.c"
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st120;
+ goto st128;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st120;
+ goto st128;
} else
- goto st120;
+ goto st128;
goto st0;
-st120:
+st128:
if ( ++p == pe )
- goto _test_eof120;
-case 120:
+ goto _test_eof128;
+case 128:
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st118;
+ goto st126;
} else if ( (*p) > 70 ) {
if ( 97 <= (*p) && (*p) <= 102 )
- goto st118;
+ goto st126;
} else
- goto st118;
- goto st0;
-tr311:
-#line 213 "http_parser.rl"
- {
- if(parser->on_message_begin) {
- callback_return_value = parser->on_message_begin(parser);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
- }
- }
- goto st121;
-st121:
- if ( ++p == pe )
- goto _test_eof121;
-case 121:
-#line 3336 "http_parser.c"
- if ( (*p) == 69 )
- goto st122;
- goto st0;
-st122:
- if ( ++p == pe )
- goto _test_eof122;
-case 122:
- if ( (*p) == 76 )
- goto st123;
- goto st0;
-st123:
- if ( ++p == pe )
- goto _test_eof123;
-case 123:
- if ( (*p) == 69 )
- goto st124;
- goto st0;
-st124:
- if ( ++p == pe )
- goto _test_eof124;
-case 124:
- if ( (*p) == 84 )
- goto st125;
- goto st0;
-st125:
- if ( ++p == pe )
- goto _test_eof125;
-case 125:
- if ( (*p) == 69 )
goto st126;
goto st0;
-st126:
- if ( ++p == pe )
- goto _test_eof126;
-case 126:
- if ( (*p) == 32 )
- goto tr154;
- goto st0;
-tr312:
-#line 213 "http_parser.rl"
+tr331:
+#line 199 "http_parser.rl"
{
if(parser->on_message_begin) {
callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
- goto st127;
-st127:
- if ( ++p == pe )
- goto _test_eof127;
-case 127:
-#line 3391 "http_parser.c"
- if ( (*p) == 69 )
- goto st128;
- goto st0;
-st128:
- if ( ++p == pe )
- goto _test_eof128;
-case 128:
- if ( (*p) == 84 )
- goto st129;
- goto st0;
+ goto st129;
st129:
if ( ++p == pe )
goto _test_eof129;
case 129:
- if ( (*p) == 32 )
- goto tr157;
+#line 3358 "http_parser.c"
+ if ( (*p) == 69 )
+ goto st130;
goto st0;
-tr313:
-#line 213 "http_parser.rl"
- {
- if(parser->on_message_begin) {
- callback_return_value = parser->on_message_begin(parser);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
- }
- }
- goto st130;
st130:
if ( ++p == pe )
goto _test_eof130;
case 130:
-#line 3425 "http_parser.c"
- if ( (*p) == 69 )
+ if ( (*p) == 76 )
goto st131;
goto st0;
st131:
if ( ++p == pe )
goto _test_eof131;
case 131:
- if ( (*p) == 65 )
+ if ( (*p) == 69 )
goto st132;
goto st0;
st132:
if ( ++p == pe )
goto _test_eof132;
case 132:
- if ( (*p) == 68 )
+ if ( (*p) == 84 )
goto st133;
goto st0;
st133:
if ( ++p == pe )
goto _test_eof133;
case 133:
+ if ( (*p) == 69 )
+ goto st134;
+ goto st0;
+st134:
+ if ( ++p == pe )
+ goto _test_eof134;
+case 134:
if ( (*p) == 32 )
- goto tr161;
+ goto tr165;
goto st0;
-tr314:
-#line 213 "http_parser.rl"
+tr332:
+#line 199 "http_parser.rl"
{
if(parser->on_message_begin) {
callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
- goto st134;
-st134:
- if ( ++p == pe )
- goto _test_eof134;
-case 134:
-#line 3466 "http_parser.c"
- if ( (*p) == 79 )
- goto st135;
- goto st0;
+ goto st135;
st135:
if ( ++p == pe )
goto _test_eof135;
case 135:
- if ( (*p) == 67 )
+#line 3413 "http_parser.c"
+ if ( (*p) == 69 )
goto st136;
goto st0;
st136:
if ( ++p == pe )
goto _test_eof136;
case 136:
- if ( (*p) == 75 )
+ if ( (*p) == 84 )
goto st137;
goto st0;
st137:
@@ -3485,16 +3425,16 @@ st137:
goto _test_eof137;
case 137:
if ( (*p) == 32 )
- goto tr165;
+ goto tr168;
goto st0;
-tr315:
-#line 213 "http_parser.rl"
+tr333:
+#line 199 "http_parser.rl"
{
if(parser->on_message_begin) {
callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
@@ -3503,52 +3443,63 @@ st138:
if ( ++p == pe )
goto _test_eof138;
case 138:
-#line 3507 "http_parser.c"
- switch( (*p) ) {
- case 75: goto st139;
- case 79: goto st143;
- }
+#line 3447 "http_parser.c"
+ if ( (*p) == 69 )
+ goto st139;
goto st0;
st139:
if ( ++p == pe )
goto _test_eof139;
case 139:
- if ( (*p) == 67 )
+ if ( (*p) == 65 )
goto st140;
goto st0;
st140:
if ( ++p == pe )
goto _test_eof140;
case 140:
- if ( (*p) == 79 )
+ if ( (*p) == 68 )
goto st141;
goto st0;
st141:
if ( ++p == pe )
goto _test_eof141;
case 141:
- if ( (*p) == 76 )
- goto st142;
+ if ( (*p) == 32 )
+ goto tr172;
goto st0;
+tr334:
+#line 199 "http_parser.rl"
+ {
+ if(parser->on_message_begin) {
+ callback_return_value = parser->on_message_begin(parser);
+ if (callback_return_value != 0) {
+ parser->flags |= ERROR;
+ return;
+ }
+ }
+ }
+ goto st142;
st142:
if ( ++p == pe )
goto _test_eof142;
case 142:
- if ( (*p) == 32 )
- goto tr171;
+#line 3488 "http_parser.c"
+ if ( (*p) == 79 )
+ goto st143;
goto st0;
st143:
if ( ++p == pe )
goto _test_eof143;
case 143:
- if ( (*p) == 86 )
+ if ( (*p) == 67 )
goto st144;
goto st0;
st144:
if ( ++p == pe )
goto _test_eof144;
case 144:
- if ( (*p) == 69 )
+ if ( (*p) == 75 )
goto st145;
goto st0;
st145:
@@ -3556,16 +3507,16 @@ st145:
goto _test_eof145;
case 145:
if ( (*p) == 32 )
- goto tr174;
+ goto tr176;
goto st0;
-tr316:
-#line 213 "http_parser.rl"
+tr335:
+#line 199 "http_parser.rl"
{
if(parser->on_message_begin) {
callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
@@ -3574,80 +3525,79 @@ st146:
if ( ++p == pe )
goto _test_eof146;
case 146:
-#line 3578 "http_parser.c"
- if ( (*p) == 80 )
- goto st147;
+#line 3529 "http_parser.c"
+ switch( (*p) ) {
+ case 75: goto st147;
+ case 79: goto st151;
+ }
goto st0;
st147:
if ( ++p == pe )
goto _test_eof147;
case 147:
- if ( (*p) == 84 )
+ if ( (*p) == 67 )
goto st148;
goto st0;
st148:
if ( ++p == pe )
goto _test_eof148;
case 148:
- if ( (*p) == 73 )
+ if ( (*p) == 79 )
goto st149;
goto st0;
st149:
if ( ++p == pe )
goto _test_eof149;
case 149:
- if ( (*p) == 79 )
+ if ( (*p) == 76 )
goto st150;
goto st0;
st150:
if ( ++p == pe )
goto _test_eof150;
case 150:
- if ( (*p) == 78 )
- goto st151;
+ if ( (*p) == 32 )
+ goto tr182;
goto st0;
st151:
if ( ++p == pe )
goto _test_eof151;
case 151:
- if ( (*p) == 83 )
+ if ( (*p) == 86 )
goto st152;
goto st0;
st152:
if ( ++p == pe )
goto _test_eof152;
case 152:
+ if ( (*p) == 69 )
+ goto st153;
+ goto st0;
+st153:
+ if ( ++p == pe )
+ goto _test_eof153;
+case 153:
if ( (*p) == 32 )
- goto tr181;
+ goto tr185;
goto st0;
-tr317:
-#line 213 "http_parser.rl"
+tr336:
+#line 199 "http_parser.rl"
{
if(parser->on_message_begin) {
callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
- goto st153;
-st153:
- if ( ++p == pe )
- goto _test_eof153;
-case 153:
-#line 3640 "http_parser.c"
- switch( (*p) ) {
- case 79: goto st154;
- case 82: goto st157;
- case 85: goto st169;
- }
- goto st0;
+ goto st154;
st154:
if ( ++p == pe )
goto _test_eof154;
case 154:
- if ( (*p) == 83 )
+#line 3600 "http_parser.c"
+ if ( (*p) == 80 )
goto st155;
goto st0;
st155:
@@ -3661,8 +3611,8 @@ st156:
if ( ++p == pe )
goto _test_eof156;
case 156:
- if ( (*p) == 32 )
- goto tr187;
+ if ( (*p) == 73 )
+ goto st157;
goto st0;
st157:
if ( ++p == pe )
@@ -3675,114 +3625,117 @@ st158:
if ( ++p == pe )
goto _test_eof158;
case 158:
- if ( (*p) == 80 )
+ if ( (*p) == 78 )
goto st159;
goto st0;
st159:
if ( ++p == pe )
goto _test_eof159;
case 159:
- switch( (*p) ) {
- case 70: goto st160;
- case 80: goto st164;
- }
+ if ( (*p) == 83 )
+ goto st160;
goto st0;
st160:
if ( ++p == pe )
goto _test_eof160;
case 160:
- if ( (*p) == 73 )
- goto st161;
+ if ( (*p) == 32 )
+ goto tr192;
goto st0;
+tr337:
+#line 199 "http_parser.rl"
+ {
+ if(parser->on_message_begin) {
+ callback_return_value = parser->on_message_begin(parser);
+ if (callback_return_value != 0) {
+ parser->flags |= ERROR;
+ return;
+ }
+ }
+ }
+ goto st161;
st161:
if ( ++p == pe )
goto _test_eof161;
case 161:
- if ( (*p) == 78 )
- goto st162;
+#line 3662 "http_parser.c"
+ switch( (*p) ) {
+ case 79: goto st162;
+ case 82: goto st165;
+ case 85: goto st177;
+ }
goto st0;
st162:
if ( ++p == pe )
goto _test_eof162;
case 162:
- if ( (*p) == 68 )
+ if ( (*p) == 83 )
goto st163;
goto st0;
st163:
if ( ++p == pe )
goto _test_eof163;
case 163:
- if ( (*p) == 32 )
- goto tr195;
+ if ( (*p) == 84 )
+ goto st164;
goto st0;
st164:
if ( ++p == pe )
goto _test_eof164;
case 164:
- if ( (*p) == 65 )
- goto st165;
+ if ( (*p) == 32 )
+ goto tr198;
goto st0;
st165:
if ( ++p == pe )
goto _test_eof165;
case 165:
- if ( (*p) == 84 )
+ if ( (*p) == 79 )
goto st166;
goto st0;
st166:
if ( ++p == pe )
goto _test_eof166;
case 166:
- if ( (*p) == 67 )
+ if ( (*p) == 80 )
goto st167;
goto st0;
st167:
if ( ++p == pe )
goto _test_eof167;
case 167:
- if ( (*p) == 72 )
- goto st168;
+ switch( (*p) ) {
+ case 70: goto st168;
+ case 80: goto st172;
+ }
goto st0;
st168:
if ( ++p == pe )
goto _test_eof168;
case 168:
- if ( (*p) == 32 )
- goto tr200;
+ if ( (*p) == 73 )
+ goto st169;
goto st0;
st169:
if ( ++p == pe )
goto _test_eof169;
case 169:
- if ( (*p) == 84 )
+ if ( (*p) == 78 )
goto st170;
goto st0;
st170:
if ( ++p == pe )
goto _test_eof170;
case 170:
- if ( (*p) == 32 )
- goto tr202;
+ if ( (*p) == 68 )
+ goto st171;
goto st0;
-tr318:
-#line 213 "http_parser.rl"
- {
- if(parser->on_message_begin) {
- callback_return_value = parser->on_message_begin(parser);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
- }
- }
- goto st171;
st171:
if ( ++p == pe )
goto _test_eof171;
case 171:
-#line 3784 "http_parser.c"
- if ( (*p) == 82 )
- goto st172;
+ if ( (*p) == 32 )
+ goto tr206;
goto st0;
st172:
if ( ++p == pe )
@@ -3795,104 +3748,187 @@ st173:
if ( ++p == pe )
goto _test_eof173;
case 173:
- if ( (*p) == 67 )
+ if ( (*p) == 84 )
goto st174;
goto st0;
st174:
if ( ++p == pe )
goto _test_eof174;
case 174:
- if ( (*p) == 69 )
+ if ( (*p) == 67 )
goto st175;
goto st0;
st175:
if ( ++p == pe )
goto _test_eof175;
case 175:
- if ( (*p) == 32 )
- goto tr207;
+ if ( (*p) == 72 )
+ goto st176;
goto st0;
-tr319:
-#line 213 "http_parser.rl"
- {
- if(parser->on_message_begin) {
- callback_return_value = parser->on_message_begin(parser);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
- }
- }
- goto st176;
st176:
if ( ++p == pe )
goto _test_eof176;
case 176:
-#line 3832 "http_parser.c"
- if ( (*p) == 78 )
- goto st177;
+ if ( (*p) == 32 )
+ goto tr211;
goto st0;
st177:
if ( ++p == pe )
goto _test_eof177;
case 177:
- if ( (*p) == 76 )
+ if ( (*p) == 84 )
goto st178;
goto st0;
st178:
if ( ++p == pe )
goto _test_eof178;
case 178:
- if ( (*p) == 79 )
- goto st179;
+ if ( (*p) == 32 )
+ goto tr213;
goto st0;
+tr338:
+#line 199 "http_parser.rl"
+ {
+ if(parser->on_message_begin) {
+ callback_return_value = parser->on_message_begin(parser);
+ if (callback_return_value != 0) {
+ parser->flags |= ERROR;
+ return;
+ }
+ }
+ }
+ goto st179;
st179:
if ( ++p == pe )
goto _test_eof179;
case 179:
- if ( (*p) == 67 )
+#line 3806 "http_parser.c"
+ if ( (*p) == 82 )
goto st180;
goto st0;
st180:
if ( ++p == pe )
goto _test_eof180;
case 180:
- if ( (*p) == 75 )
+ if ( (*p) == 65 )
goto st181;
goto st0;
st181:
if ( ++p == pe )
goto _test_eof181;
case 181:
+ if ( (*p) == 67 )
+ goto st182;
+ goto st0;
+st182:
+ if ( ++p == pe )
+ goto _test_eof182;
+case 182:
+ if ( (*p) == 69 )
+ goto st183;
+ goto st0;
+st183:
+ if ( ++p == pe )
+ goto _test_eof183;
+case 183:
if ( (*p) == 32 )
- goto tr213;
+ goto tr218;
+ goto st0;
+tr339:
+#line 199 "http_parser.rl"
+ {
+ if(parser->on_message_begin) {
+ callback_return_value = parser->on_message_begin(parser);
+ if (callback_return_value != 0) {
+ parser->flags |= ERROR;
+ return;
+ }
+ }
+ }
+ goto st184;
+st184:
+ if ( ++p == pe )
+ goto _test_eof184;
+case 184:
+#line 3854 "http_parser.c"
+ if ( (*p) == 78 )
+ goto st185;
+ goto st0;
+st185:
+ if ( ++p == pe )
+ goto _test_eof185;
+case 185:
+ if ( (*p) == 76 )
+ goto st186;
+ goto st0;
+st186:
+ if ( ++p == pe )
+ goto _test_eof186;
+case 186:
+ if ( (*p) == 79 )
+ goto st187;
+ goto st0;
+st187:
+ if ( ++p == pe )
+ goto _test_eof187;
+case 187:
+ if ( (*p) == 67 )
+ goto st188;
goto st0;
-tr232:
- cs = 269;
-#line 203 "http_parser.rl"
+st188:
+ if ( ++p == pe )
+ goto _test_eof188;
+case 188:
+ if ( (*p) == 75 )
+ goto st189;
+ goto st0;
+st189:
+ if ( ++p == pe )
+ goto _test_eof189;
+case 189:
+ if ( (*p) == 32 )
+ goto tr224;
+ goto st0;
+tr246:
+ cs = 283;
+#line 189 "http_parser.rl"
{
if(parser->on_headers_complete) {
callback_return_value = parser->on_headers_complete(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
-#line 282 "http_parser.rl"
+#line 262 "http_parser.rl"
{
- if (parser->transfer_encoding == HTTP_CHUNKED) {
+ if (parser->flags & CHUNKED) {
cs = 2;
} else {
- /* this is pretty stupid. i'd prefer to combine this with skip_chunk_data */
- parser->chunk_size = parser->content_length;
- p += 1;
+ /* this is pretty stupid. i'd prefer to combine this with
+ * skip_chunk_data */
+ if (parser->content_length < 0) {
+ /* If we didn't get a content length; if not keep-alive
+ * just read body until EOF */
+ if (!http_parser_should_keep_alive(parser)) {
+ parser->flags |= EAT_FOREVER;
+ parser->chunk_size = REMAINING;
+ } else {
+ /* Otherwise, if keep-alive, then assume the message
+ * has no body. */
+ parser->chunk_size = parser->content_length = 0;
+ }
+ } else {
+ parser->chunk_size = parser->content_length;
+ }
+ p += 1;
- SKIP_BODY(MIN(REMAINING, parser->content_length));
+ SKIP_BODY(MIN(REMAINING, parser->chunk_size));
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
p--;
@@ -3902,1860 +3938,1878 @@ tr232:
}
}
goto _again;
-st269:
+st283:
if ( ++p == pe )
- goto _test_eof269;
-case 269:
-#line 3910 "http_parser.c"
+ goto _test_eof283;
+case 283:
+#line 3946 "http_parser.c"
if ( (*p) == 72 )
- goto tr320;
+ goto tr340;
goto st0;
-tr320:
-#line 213 "http_parser.rl"
+tr340:
+#line 199 "http_parser.rl"
{
if(parser->on_message_begin) {
callback_return_value = parser->on_message_begin(parser);
if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
}
}
- goto st182;
-st182:
+ goto st190;
+st190:
if ( ++p == pe )
- goto _test_eof182;
-case 182:
-#line 3930 "http_parser.c"
+ goto _test_eof190;
+case 190:
+#line 3966 "http_parser.c"
if ( (*p) == 84 )
- goto st183;
+ goto st191;
goto st0;
-st183:
+st191:
if ( ++p == pe )
- goto _test_eof183;
-case 183:
+ goto _test_eof191;
+case 191:
if ( (*p) == 84 )
- goto st184;
+ goto st192;
goto st0;
-st184:
+st192:
if ( ++p == pe )
- goto _test_eof184;
-case 184:
+ goto _test_eof192;
+case 192:
if ( (*p) == 80 )
- goto st185;
+ goto st193;
goto st0;
-st185:
+st193:
if ( ++p == pe )
- goto _test_eof185;
-case 185:
+ goto _test_eof193;
+case 193:
if ( (*p) == 47 )
- goto st186;
+ goto st194;
goto st0;
-st186:
+st194:
if ( ++p == pe )
- goto _test_eof186;
-case 186:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr218;
+ goto _test_eof194;
+case 194:
+ switch( (*p) ) {
+ case 48: goto st195;
+ case 49: goto st274;
+ }
+ if ( 50 <= (*p) && (*p) <= 57 )
+ goto st278;
goto st0;
-tr218:
-#line 243 "http_parser.rl"
- {
- parser->version_major *= 10;
- parser->version_major += *p - '0';
- }
- goto st187;
-st187:
+st195:
if ( ++p == pe )
- goto _test_eof187;
-case 187:
-#line 3973 "http_parser.c"
+ goto _test_eof195;
+case 195:
if ( (*p) == 46 )
- goto st188;
+ goto st196;
goto st0;
-st188:
+st196:
if ( ++p == pe )
- goto _test_eof188;
-case 188:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr220;
+ goto _test_eof196;
+case 196:
+ if ( (*p) == 57 )
+ goto st273;
+ if ( 48 <= (*p) && (*p) <= 56 )
+ goto st197;
goto st0;
-tr220:
-#line 248 "http_parser.rl"
- {
- parser->version_minor *= 10;
- parser->version_minor += *p - '0';
- }
- goto st189;
-st189:
+st197:
if ( ++p == pe )
- goto _test_eof189;
-case 189:
-#line 3995 "http_parser.c"
+ goto _test_eof197;
+case 197:
if ( (*p) == 32 )
- goto st190;
+ goto st198;
goto st0;
-st190:
+tr323:
+#line 231 "http_parser.rl"
+ { parser->version = HTTP_VERSION_09; }
+ goto st198;
+tr327:
+#line 230 "http_parser.rl"
+ { parser->version = HTTP_VERSION_10; }
+ goto st198;
+tr328:
+#line 229 "http_parser.rl"
+ { parser->version = HTTP_VERSION_11; }
+ goto st198;
+st198:
if ( ++p == pe )
- goto _test_eof190;
-case 190:
+ goto _test_eof198;
+case 198:
+#line 4041 "http_parser.c"
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr222;
+ goto tr236;
goto st0;
-tr222:
-#line 232 "http_parser.rl"
+tr236:
+#line 219 "http_parser.rl"
{
parser->status_code *= 10;
parser->status_code += *p - '0';
}
- goto st191;
-st191:
+ goto st199;
+st199:
if ( ++p == pe )
- goto _test_eof191;
-case 191:
-#line 4017 "http_parser.c"
+ goto _test_eof199;
+case 199:
+#line 4056 "http_parser.c"
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr223;
+ goto tr237;
goto st0;
-tr223:
-#line 232 "http_parser.rl"
+tr237:
+#line 219 "http_parser.rl"
{
parser->status_code *= 10;
parser->status_code += *p - '0';
}
- goto st192;
-st192:
+ goto st200;
+st200:
if ( ++p == pe )
- goto _test_eof192;
-case 192:
-#line 4032 "http_parser.c"
+ goto _test_eof200;
+case 200:
+#line 4071 "http_parser.c"
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr224;
+ goto tr238;
goto st0;
-tr224:
-#line 232 "http_parser.rl"
+tr238:
+#line 219 "http_parser.rl"
{
parser->status_code *= 10;
parser->status_code += *p - '0';
}
- goto st193;
-st193:
+ goto st201;
+st201:
if ( ++p == pe )
- goto _test_eof193;
-case 193:
-#line 4047 "http_parser.c"
+ goto _test_eof201;
+case 201:
+#line 4086 "http_parser.c"
switch( (*p) ) {
- case 13: goto st194;
- case 32: goto st265;
+ case 13: goto st202;
+ case 32: goto st272;
}
goto st0;
-tr236:
-#line 118 "http_parser.rl"
+tr250:
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
-#line 153 "http_parser.rl"
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st194;
-tr239:
-#line 153 "http_parser.rl"
+ goto st202;
+tr253:
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st194;
-tr258:
-#line 241 "http_parser.rl"
- { parser->keep_alive = FALSE; }
-#line 153 "http_parser.rl"
+ goto st202;
+tr272:
+#line 227 "http_parser.rl"
+ { parser->keep_alive = 0; }
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st194;
-tr268:
-#line 240 "http_parser.rl"
- { parser->keep_alive = TRUE; }
-#line 153 "http_parser.rl"
+ goto st202;
+tr282:
+#line 226 "http_parser.rl"
+ { parser->keep_alive = 1; }
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st194;
-tr309:
-#line 237 "http_parser.rl"
- { parser->transfer_encoding = HTTP_IDENTITY; }
-#line 153 "http_parser.rl"
+ goto st202;
+tr322:
+#line 224 "http_parser.rl"
+ { parser->flags |= CHUNKED; }
+#line 159 "http_parser.rl"
{
CALLBACK(header_value);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_value_mark = NULL;
parser->header_value_size = 0;
}
- goto st194;
-st194:
+ goto st202;
+st202:
if ( ++p == pe )
- goto _test_eof194;
-case 194:
-#line 4128 "http_parser.c"
+ goto _test_eof202;
+case 202:
+#line 4147 "http_parser.c"
if ( (*p) == 10 )
- goto st195;
+ goto st203;
goto st0;
-st195:
+st203:
if ( ++p == pe )
- goto _test_eof195;
-case 195:
+ goto _test_eof203;
+case 203:
switch( (*p) ) {
- case 13: goto st196;
- case 33: goto tr229;
- case 67: goto tr230;
- case 84: goto tr231;
- case 99: goto tr230;
- case 116: goto tr231;
- case 124: goto tr229;
- case 126: goto tr229;
+ case 13: goto st204;
+ case 33: goto tr243;
+ case 67: goto tr244;
+ case 84: goto tr245;
+ case 99: goto tr244;
+ case 116: goto tr245;
+ case 124: goto tr243;
+ case 126: goto tr243;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto tr229;
+ goto tr243;
} else if ( (*p) >= 35 )
- goto tr229;
+ goto tr243;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr229;
+ goto tr243;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto tr229;
+ goto tr243;
} else
- goto tr229;
+ goto tr243;
} else
- goto tr229;
+ goto tr243;
goto st0;
-st196:
+st204:
if ( ++p == pe )
- goto _test_eof196;
-case 196:
+ goto _test_eof204;
+case 204:
if ( (*p) == 10 )
- goto tr232;
+ goto tr246;
goto st0;
-tr229:
-#line 113 "http_parser.rl"
+tr243:
+#line 123 "http_parser.rl"
{
parser->header_field_mark = p;
parser->header_field_size = 0;
}
- goto st197;
-st197:
+ goto st205;
+st205:
if ( ++p == pe )
- goto _test_eof197;
-case 197:
-#line 4182 "http_parser.c"
+ goto _test_eof205;
+case 205:
+#line 4201 "http_parser.c"
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-tr234:
-#line 143 "http_parser.rl"
+tr248:
+#line 153 "http_parser.rl"
{
CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_field_mark = NULL;
parser->header_field_size = 0;
}
- goto st198;
-st198:
+ goto st206;
+st206:
if ( ++p == pe )
- goto _test_eof198;
-case 198:
-#line 4223 "http_parser.c"
+ goto _test_eof206;
+case 206:
+#line 4238 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr236;
- case 32: goto st198;
+ case 13: goto tr250;
+ case 32: goto st206;
}
- goto tr235;
-tr235:
-#line 118 "http_parser.rl"
+ goto tr249;
+tr249:
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
- goto st199;
-st199:
+ goto st207;
+st207:
if ( ++p == pe )
- goto _test_eof199;
-case 199:
-#line 4240 "http_parser.c"
+ goto _test_eof207;
+case 207:
+#line 4255 "http_parser.c"
if ( (*p) == 13 )
- goto tr239;
- goto st199;
-tr230:
-#line 113 "http_parser.rl"
+ goto tr253;
+ goto st207;
+tr244:
+#line 123 "http_parser.rl"
{
parser->header_field_mark = p;
parser->header_field_size = 0;
}
- goto st200;
-st200:
+ goto st208;
+st208:
if ( ++p == pe )
- goto _test_eof200;
-case 200:
-#line 4255 "http_parser.c"
+ goto _test_eof208;
+case 208:
+#line 4270 "http_parser.c"
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 79: goto st201;
- case 111: goto st201;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 79: goto st209;
+ case 111: goto st209;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st201:
+st209:
if ( ++p == pe )
- goto _test_eof201;
-case 201:
+ goto _test_eof209;
+case 209:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st202;
- case 110: goto st202;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st210;
+ case 110: goto st210;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st202:
+st210:
if ( ++p == pe )
- goto _test_eof202;
-case 202:
+ goto _test_eof210;
+case 210:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st203;
- case 84: goto st226;
- case 110: goto st203;
- case 116: goto st226;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st211;
+ case 84: goto st234;
+ case 110: goto st211;
+ case 116: goto st234;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st203:
+st211:
if ( ++p == pe )
- goto _test_eof203;
-case 203:
+ goto _test_eof211;
+case 211:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 69: goto st204;
- case 101: goto st204;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 69: goto st212;
+ case 101: goto st212;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st204:
+st212:
if ( ++p == pe )
- goto _test_eof204;
-case 204:
+ goto _test_eof212;
+case 212:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 67: goto st205;
- case 99: goto st205;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 67: goto st213;
+ case 99: goto st213;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st205:
+st213:
if ( ++p == pe )
- goto _test_eof205;
-case 205:
+ goto _test_eof213;
+case 213:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 84: goto st206;
- case 116: goto st206;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 84: goto st214;
+ case 116: goto st214;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st206:
+st214:
if ( ++p == pe )
- goto _test_eof206;
-case 206:
+ goto _test_eof214;
+case 214:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 73: goto st207;
- case 105: goto st207;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 73: goto st215;
+ case 105: goto st215;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st207:
+st215:
if ( ++p == pe )
- goto _test_eof207;
-case 207:
+ goto _test_eof215;
+case 215:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 79: goto st208;
- case 111: goto st208;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 79: goto st216;
+ case 111: goto st216;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st208:
+st216:
if ( ++p == pe )
- goto _test_eof208;
-case 208:
+ goto _test_eof216;
+case 216:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st209;
- case 110: goto st209;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st217;
+ case 110: goto st217;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st209:
+st217:
if ( ++p == pe )
- goto _test_eof209;
-case 209:
+ goto _test_eof217;
+case 217:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr250;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr264;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-tr250:
-#line 143 "http_parser.rl"
+tr264:
+#line 153 "http_parser.rl"
{
CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_field_mark = NULL;
parser->header_field_size = 0;
}
- goto st210;
-st210:
+ goto st218;
+st218:
if ( ++p == pe )
- goto _test_eof210;
-case 210:
-#line 4568 "http_parser.c"
- switch( (*p) ) {
- case 13: goto tr236;
- case 32: goto st210;
- case 67: goto tr252;
- case 75: goto tr253;
- case 99: goto tr252;
- case 107: goto tr253;
- }
- goto tr235;
-tr252:
-#line 118 "http_parser.rl"
+ goto _test_eof218;
+case 218:
+#line 4579 "http_parser.c"
+ switch( (*p) ) {
+ case 13: goto tr250;
+ case 32: goto st218;
+ case 67: goto tr266;
+ case 75: goto tr267;
+ case 99: goto tr266;
+ case 107: goto tr267;
+ }
+ goto tr249;
+tr266:
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
- goto st211;
-st211:
+ goto st219;
+st219:
if ( ++p == pe )
- goto _test_eof211;
-case 211:
-#line 4589 "http_parser.c"
+ goto _test_eof219;
+case 219:
+#line 4600 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr239;
- case 76: goto st212;
- case 108: goto st212;
+ case 13: goto tr253;
+ case 76: goto st220;
+ case 108: goto st220;
}
- goto st199;
-st212:
+ goto st207;
+st220:
if ( ++p == pe )
- goto _test_eof212;
-case 212:
+ goto _test_eof220;
+case 220:
switch( (*p) ) {
- case 13: goto tr239;
- case 79: goto st213;
- case 111: goto st213;
+ case 13: goto tr253;
+ case 79: goto st221;
+ case 111: goto st221;
}
- goto st199;
-st213:
+ goto st207;
+st221:
if ( ++p == pe )
- goto _test_eof213;
-case 213:
+ goto _test_eof221;
+case 221:
switch( (*p) ) {
- case 13: goto tr239;
- case 83: goto st214;
- case 115: goto st214;
+ case 13: goto tr253;
+ case 83: goto st222;
+ case 115: goto st222;
}
- goto st199;
-st214:
+ goto st207;
+st222:
if ( ++p == pe )
- goto _test_eof214;
-case 214:
+ goto _test_eof222;
+case 222:
switch( (*p) ) {
- case 13: goto tr239;
- case 69: goto st215;
- case 101: goto st215;
+ case 13: goto tr253;
+ case 69: goto st223;
+ case 101: goto st223;
}
- goto st199;
-st215:
+ goto st207;
+st223:
if ( ++p == pe )
- goto _test_eof215;
-case 215:
+ goto _test_eof223;
+case 223:
if ( (*p) == 13 )
- goto tr258;
- goto st199;
-tr253:
-#line 118 "http_parser.rl"
+ goto tr272;
+ goto st207;
+tr267:
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
- goto st216;
-st216:
+ goto st224;
+st224:
if ( ++p == pe )
- goto _test_eof216;
-case 216:
-#line 4644 "http_parser.c"
+ goto _test_eof224;
+case 224:
+#line 4655 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr239;
- case 69: goto st217;
- case 101: goto st217;
+ case 13: goto tr253;
+ case 69: goto st225;
+ case 101: goto st225;
}
- goto st199;
-st217:
+ goto st207;
+st225:
if ( ++p == pe )
- goto _test_eof217;
-case 217:
+ goto _test_eof225;
+case 225:
switch( (*p) ) {
- case 13: goto tr239;
- case 69: goto st218;
- case 101: goto st218;
+ case 13: goto tr253;
+ case 69: goto st226;
+ case 101: goto st226;
}
- goto st199;
-st218:
+ goto st207;
+st226:
if ( ++p == pe )
- goto _test_eof218;
-case 218:
+ goto _test_eof226;
+case 226:
switch( (*p) ) {
- case 13: goto tr239;
- case 80: goto st219;
- case 112: goto st219;
+ case 13: goto tr253;
+ case 80: goto st227;
+ case 112: goto st227;
}
- goto st199;
-st219:
+ goto st207;
+st227:
if ( ++p == pe )
- goto _test_eof219;
-case 219:
+ goto _test_eof227;
+case 227:
switch( (*p) ) {
- case 13: goto tr239;
- case 45: goto st220;
+ case 13: goto tr253;
+ case 45: goto st228;
}
- goto st199;
-st220:
+ goto st207;
+st228:
if ( ++p == pe )
- goto _test_eof220;
-case 220:
+ goto _test_eof228;
+case 228:
switch( (*p) ) {
- case 13: goto tr239;
- case 65: goto st221;
- case 97: goto st221;
+ case 13: goto tr253;
+ case 65: goto st229;
+ case 97: goto st229;
}
- goto st199;
-st221:
+ goto st207;
+st229:
if ( ++p == pe )
- goto _test_eof221;
-case 221:
+ goto _test_eof229;
+case 229:
switch( (*p) ) {
- case 13: goto tr239;
- case 76: goto st222;
- case 108: goto st222;
+ case 13: goto tr253;
+ case 76: goto st230;
+ case 108: goto st230;
}
- goto st199;
-st222:
+ goto st207;
+st230:
if ( ++p == pe )
- goto _test_eof222;
-case 222:
+ goto _test_eof230;
+case 230:
switch( (*p) ) {
- case 13: goto tr239;
- case 73: goto st223;
- case 105: goto st223;
+ case 13: goto tr253;
+ case 73: goto st231;
+ case 105: goto st231;
}
- goto st199;
-st223:
+ goto st207;
+st231:
if ( ++p == pe )
- goto _test_eof223;
-case 223:
+ goto _test_eof231;
+case 231:
switch( (*p) ) {
- case 13: goto tr239;
- case 86: goto st224;
- case 118: goto st224;
+ case 13: goto tr253;
+ case 86: goto st232;
+ case 118: goto st232;
}
- goto st199;
-st224:
+ goto st207;
+st232:
if ( ++p == pe )
- goto _test_eof224;
-case 224:
+ goto _test_eof232;
+case 232:
switch( (*p) ) {
- case 13: goto tr239;
- case 69: goto st225;
- case 101: goto st225;
+ case 13: goto tr253;
+ case 69: goto st233;
+ case 101: goto st233;
}
- goto st199;
-st225:
+ goto st207;
+st233:
if ( ++p == pe )
- goto _test_eof225;
-case 225:
+ goto _test_eof233;
+case 233:
if ( (*p) == 13 )
- goto tr268;
- goto st199;
-st226:
+ goto tr282;
+ goto st207;
+st234:
if ( ++p == pe )
- goto _test_eof226;
-case 226:
+ goto _test_eof234;
+case 234:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 69: goto st227;
- case 101: goto st227;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 69: goto st235;
+ case 101: goto st235;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st227:
+st235:
if ( ++p == pe )
- goto _test_eof227;
-case 227:
+ goto _test_eof235;
+case 235:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st228;
- case 110: goto st228;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st236;
+ case 110: goto st236;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st228:
+st236:
if ( ++p == pe )
- goto _test_eof228;
-case 228:
+ goto _test_eof236;
+case 236:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 84: goto st229;
- case 116: goto st229;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 84: goto st237;
+ case 116: goto st237;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st229:
+st237:
if ( ++p == pe )
- goto _test_eof229;
-case 229:
+ goto _test_eof237;
+case 237:
switch( (*p) ) {
- case 33: goto st197;
- case 45: goto st230;
- case 46: goto st197;
- case 58: goto tr234;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 45: goto st238;
+ case 46: goto st205;
+ case 58: goto tr248;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 48 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 57 ) {
if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 65 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st230:
+st238:
if ( ++p == pe )
- goto _test_eof230;
-case 230:
+ goto _test_eof238;
+case 238:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 76: goto st231;
- case 108: goto st231;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 76: goto st239;
+ case 108: goto st239;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st231:
+st239:
if ( ++p == pe )
- goto _test_eof231;
-case 231:
+ goto _test_eof239;
+case 239:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 69: goto st232;
- case 101: goto st232;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 69: goto st240;
+ case 101: goto st240;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st232:
+st240:
if ( ++p == pe )
- goto _test_eof232;
-case 232:
+ goto _test_eof240;
+case 240:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st233;
- case 110: goto st233;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st241;
+ case 110: goto st241;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st233:
+st241:
if ( ++p == pe )
- goto _test_eof233;
-case 233:
+ goto _test_eof241;
+case 241:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 71: goto st234;
- case 103: goto st234;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 71: goto st242;
+ case 103: goto st242;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st234:
+st242:
if ( ++p == pe )
- goto _test_eof234;
-case 234:
+ goto _test_eof242;
+case 242:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 84: goto st235;
- case 116: goto st235;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 84: goto st243;
+ case 116: goto st243;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st235:
+st243:
if ( ++p == pe )
- goto _test_eof235;
-case 235:
+ goto _test_eof243;
+case 243:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 72: goto st236;
- case 104: goto st236;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 72: goto st244;
+ case 104: goto st244;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st236:
+st244:
if ( ++p == pe )
- goto _test_eof236;
-case 236:
+ goto _test_eof244;
+case 244:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr279;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr293;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-tr279:
-#line 143 "http_parser.rl"
+tr293:
+#line 153 "http_parser.rl"
{
CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_field_mark = NULL;
parser->header_field_size = 0;
}
- goto st237;
-st237:
+ goto st245;
+st245:
if ( ++p == pe )
- goto _test_eof237;
-case 237:
-#line 5078 "http_parser.c"
+ goto _test_eof245;
+case 245:
+#line 5085 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr236;
- case 32: goto st237;
+ case 13: goto tr250;
+ case 32: goto st245;
}
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr281;
- goto tr235;
-tr281:
-#line 223 "http_parser.rl"
+ goto tr295;
+ goto tr249;
+tr295:
+#line 209 "http_parser.rl"
{
+ if (parser->content_length == -1) parser->content_length = 0;
if (parser->content_length > INT_MAX) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
parser->content_length *= 10;
parser->content_length += *p - '0';
}
-#line 118 "http_parser.rl"
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
- goto st238;
-tr282:
-#line 223 "http_parser.rl"
+ goto st246;
+tr296:
+#line 209 "http_parser.rl"
{
+ if (parser->content_length == -1) parser->content_length = 0;
if (parser->content_length > INT_MAX) {
- parser->error = TRUE;
- return 0;
+ parser->flags |= ERROR;
+ return;
}
parser->content_length *= 10;
parser->content_length += *p - '0';
}
- goto st238;
-st238:
+ goto st246;
+st246:
if ( ++p == pe )
- goto _test_eof238;
-case 238:
-#line 5117 "http_parser.c"
+ goto _test_eof246;
+case 246:
+#line 5126 "http_parser.c"
if ( (*p) == 13 )
- goto tr239;
+ goto tr253;
if ( 48 <= (*p) && (*p) <= 57 )
- goto tr282;
- goto st199;
-tr231:
-#line 113 "http_parser.rl"
+ goto tr296;
+ goto st207;
+tr245:
+#line 123 "http_parser.rl"
{
parser->header_field_mark = p;
parser->header_field_size = 0;
}
- goto st239;
-st239:
+ goto st247;
+st247:
if ( ++p == pe )
- goto _test_eof239;
-case 239:
-#line 5134 "http_parser.c"
+ goto _test_eof247;
+case 247:
+#line 5143 "http_parser.c"
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 82: goto st240;
- case 114: goto st240;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 82: goto st248;
+ case 114: goto st248;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st240:
+st248:
if ( ++p == pe )
- goto _test_eof240;
-case 240:
+ goto _test_eof248;
+case 248:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 65: goto st241;
- case 97: goto st241;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 65: goto st249;
+ case 97: goto st249;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 66 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st241:
+st249:
if ( ++p == pe )
- goto _test_eof241;
-case 241:
+ goto _test_eof249;
+case 249:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st242;
- case 110: goto st242;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st250;
+ case 110: goto st250;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st242:
+st250:
if ( ++p == pe )
- goto _test_eof242;
-case 242:
+ goto _test_eof250;
+case 250:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 83: goto st243;
- case 115: goto st243;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 83: goto st251;
+ case 115: goto st251;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st243:
+st251:
if ( ++p == pe )
- goto _test_eof243;
-case 243:
+ goto _test_eof251;
+case 251:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 70: goto st244;
- case 102: goto st244;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 70: goto st252;
+ case 102: goto st252;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st244:
+st252:
if ( ++p == pe )
- goto _test_eof244;
-case 244:
+ goto _test_eof252;
+case 252:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 69: goto st245;
- case 101: goto st245;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 69: goto st253;
+ case 101: goto st253;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st245:
+st253:
if ( ++p == pe )
- goto _test_eof245;
-case 245:
+ goto _test_eof253;
+case 253:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 82: goto st246;
- case 114: goto st246;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 82: goto st254;
+ case 114: goto st254;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st246:
+st254:
if ( ++p == pe )
- goto _test_eof246;
-case 246:
+ goto _test_eof254;
+case 254:
switch( (*p) ) {
- case 33: goto st197;
- case 45: goto st247;
- case 46: goto st197;
- case 58: goto tr234;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 45: goto st255;
+ case 46: goto st205;
+ case 58: goto tr248;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 48 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 57 ) {
if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 65 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st247:
+st255:
if ( ++p == pe )
- goto _test_eof247;
-case 247:
+ goto _test_eof255;
+case 255:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 69: goto st248;
- case 101: goto st248;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 69: goto st256;
+ case 101: goto st256;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st248:
+st256:
if ( ++p == pe )
- goto _test_eof248;
-case 248:
+ goto _test_eof256;
+case 256:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st249;
- case 110: goto st249;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st257;
+ case 110: goto st257;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st249:
+st257:
if ( ++p == pe )
- goto _test_eof249;
-case 249:
+ goto _test_eof257;
+case 257:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 67: goto st250;
- case 99: goto st250;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 67: goto st258;
+ case 99: goto st258;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st250:
+st258:
if ( ++p == pe )
- goto _test_eof250;
-case 250:
+ goto _test_eof258;
+case 258:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 79: goto st251;
- case 111: goto st251;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 79: goto st259;
+ case 111: goto st259;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st251:
+st259:
if ( ++p == pe )
- goto _test_eof251;
-case 251:
+ goto _test_eof259;
+case 259:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 68: goto st252;
- case 100: goto st252;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 68: goto st260;
+ case 100: goto st260;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st252:
+st260:
if ( ++p == pe )
- goto _test_eof252;
-case 252:
+ goto _test_eof260;
+case 260:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 73: goto st253;
- case 105: goto st253;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 73: goto st261;
+ case 105: goto st261;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st253:
+st261:
if ( ++p == pe )
- goto _test_eof253;
-case 253:
+ goto _test_eof261;
+case 261:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 78: goto st254;
- case 110: goto st254;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 78: goto st262;
+ case 110: goto st262;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st254:
+st262:
if ( ++p == pe )
- goto _test_eof254;
-case 254:
+ goto _test_eof262;
+case 262:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr234;
- case 71: goto st255;
- case 103: goto st255;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr248;
+ case 71: goto st263;
+ case 103: goto st263;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-st255:
+st263:
if ( ++p == pe )
- goto _test_eof255;
-case 255:
+ goto _test_eof263;
+case 263:
switch( (*p) ) {
- case 33: goto st197;
- case 58: goto tr299;
- case 124: goto st197;
- case 126: goto st197;
+ case 33: goto st205;
+ case 58: goto tr313;
+ case 124: goto st205;
+ case 126: goto st205;
}
if ( (*p) < 45 ) {
if ( (*p) > 39 ) {
if ( 42 <= (*p) && (*p) <= 43 )
- goto st197;
+ goto st205;
} else if ( (*p) >= 35 )
- goto st197;
+ goto st205;
} else if ( (*p) > 46 ) {
if ( (*p) < 65 ) {
if ( 48 <= (*p) && (*p) <= 57 )
- goto st197;
+ goto st205;
} else if ( (*p) > 90 ) {
if ( 94 <= (*p) && (*p) <= 122 )
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
} else
- goto st197;
+ goto st205;
goto st0;
-tr299:
-#line 238 "http_parser.rl"
- { parser->transfer_encoding = HTTP_CHUNKED; }
-#line 143 "http_parser.rl"
+tr313:
+#line 153 "http_parser.rl"
{
CALLBACK(header_field);
- if (callback_return_value != 0) {
- parser->error = TRUE;
- return 0;
- }
parser->header_field_mark = NULL;
parser->header_field_size = 0;
}
- goto st256;
-st256:
+ goto st264;
+st264:
if ( ++p == pe )
- goto _test_eof256;
-case 256:
-#line 5654 "http_parser.c"
+ goto _test_eof264;
+case 264:
+#line 5657 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr236;
- case 32: goto st256;
- case 105: goto tr301;
+ case 13: goto tr250;
+ case 32: goto st264;
+ case 67: goto tr315;
+ case 99: goto tr315;
}
- goto tr235;
-tr301:
-#line 118 "http_parser.rl"
+ goto tr249;
+tr315:
+#line 128 "http_parser.rl"
{
parser->header_value_mark = p;
parser->header_value_size = 0;
}
- goto st257;
-st257:
- if ( ++p == pe )
- goto _test_eof257;
-case 257:
-#line 5672 "http_parser.c"
- switch( (*p) ) {
- case 13: goto tr239;
- case 100: goto st258;
- }
- goto st199;
-st258:
+ goto st265;
+st265:
if ( ++p == pe )
- goto _test_eof258;
-case 258:
+ goto _test_eof265;
+case 265:
+#line 5676 "http_parser.c"
switch( (*p) ) {
- case 13: goto tr239;
- case 101: goto st259;
+ case 13: goto tr253;
+ case 72: goto st266;
+ case 104: goto st266;
}
- goto st199;
-st259:
+ goto st207;
+st266:
if ( ++p == pe )
- goto _test_eof259;
-case 259:
+ goto _test_eof266;
+case 266:
switch( (*p) ) {
- case 13: goto tr239;
- case 110: goto st260;
+ case 13: goto tr253;
+ case 85: goto st267;
+ case 117: goto st267;
}
- goto st199;
-st260:
+ goto st207;
+st267:
if ( ++p == pe )
- goto _test_eof260;
-case 260:
+ goto _test_eof267;
+case 267:
switch( (*p) ) {
- case 13: goto tr239;
- case 116: goto st261;
+ case 13: goto tr253;
+ case 78: goto st268;
+ case 110: goto st268;
}
- goto st199;
-st261:
+ goto st207;
+st268:
if ( ++p == pe )
- goto _test_eof261;
-case 261:
+ goto _test_eof268;
+case 268:
switch( (*p) ) {
- case 13: goto tr239;
- case 105: goto st262;
+ case 13: goto tr253;
+ case 75: goto st269;
+ case 107: goto st269;
}
- goto st199;
-st262:
+ goto st207;
+st269:
if ( ++p == pe )
- goto _test_eof262;
-case 262:
+ goto _test_eof269;
+case 269:
switch( (*p) ) {
- case 13: goto tr239;
- case 116: goto st263;
+ case 13: goto tr253;
+ case 69: goto st270;
+ case 101: goto st270;
}
- goto st199;
-st263:
+ goto st207;
+st270:
if ( ++p == pe )
- goto _test_eof263;
-case 263:
+ goto _test_eof270;
+case 270:
switch( (*p) ) {
- case 13: goto tr239;
- case 121: goto st264;
+ case 13: goto tr253;
+ case 68: goto st271;
+ case 100: goto st271;
}
- goto st199;
-st264:
+ goto st207;
+st271:
if ( ++p == pe )
- goto _test_eof264;
-case 264:
+ goto _test_eof271;
+case 271:
if ( (*p) == 13 )
- goto tr309;
- goto st199;
-st265:
+ goto tr322;
+ goto st207;
+st272:
if ( ++p == pe )
- goto _test_eof265;
-case 265:
+ goto _test_eof272;
+case 272:
if ( (*p) == 13 )
- goto st194;
+ goto st202;
if ( (*p) > 9 ) {
if ( 11 <= (*p) )
- goto st265;
+ goto st272;
} else if ( (*p) >= 0 )
- goto st265;
+ goto st272;
+ goto st0;
+st273:
+ if ( ++p == pe )
+ goto _test_eof273;
+case 273:
+ if ( (*p) == 32 )
+ goto tr323;
+ goto st0;
+st274:
+ if ( ++p == pe )
+ goto _test_eof274;
+case 274:
+ if ( (*p) == 46 )
+ goto st275;
+ goto st0;
+st275:
+ if ( ++p == pe )
+ goto _test_eof275;
+case 275:
+ switch( (*p) ) {
+ case 48: goto st276;
+ case 49: goto st277;
+ }
+ if ( 50 <= (*p) && (*p) <= 57 )
+ goto st197;
+ goto st0;
+st276:
+ if ( ++p == pe )
+ goto _test_eof276;
+case 276:
+ if ( (*p) == 32 )
+ goto tr327;
+ goto st0;
+st277:
+ if ( ++p == pe )
+ goto _test_eof277;
+case 277:
+ if ( (*p) == 32 )
+ goto tr328;
+ goto st0;
+st278:
+ if ( ++p == pe )
+ goto _test_eof278;
+case 278:
+ if ( (*p) == 46 )
+ goto st279;
+ goto st0;
+st279:
+ if ( ++p == pe )
+ goto _test_eof279;
+case 279:
+ if ( 48 <= (*p) && (*p) <= 57 )
+ goto st197;
goto st0;
}
_test_eof1: cs = 1; goto _test_eof;
- _test_eof266: cs = 266; goto _test_eof;
+ _test_eof280: cs = 280; goto _test_eof;
_test_eof2: cs = 2; goto _test_eof;
_test_eof3: cs = 3; goto _test_eof;
_test_eof4: cs = 4; goto _test_eof;
_test_eof5: cs = 5; goto _test_eof;
_test_eof6: cs = 6; goto _test_eof;
- _test_eof267: cs = 267; goto _test_eof;
+ _test_eof281: cs = 281; goto _test_eof;
_test_eof7: cs = 7; goto _test_eof;
_test_eof8: cs = 8; goto _test_eof;
_test_eof9: cs = 9; goto _test_eof;
@@ -5769,9 +5823,9 @@ case 265:
_test_eof17: cs = 17; goto _test_eof;
_test_eof18: cs = 18; goto _test_eof;
_test_eof19: cs = 19; goto _test_eof;
- _test_eof268: cs = 268; goto _test_eof;
_test_eof20: cs = 20; goto _test_eof;
_test_eof21: cs = 21; goto _test_eof;
+ _test_eof282: cs = 282; goto _test_eof;
_test_eof22: cs = 22; goto _test_eof;
_test_eof23: cs = 23; goto _test_eof;
_test_eof24: cs = 24; goto _test_eof;
@@ -5932,7 +5986,6 @@ case 265:
_test_eof179: cs = 179; goto _test_eof;
_test_eof180: cs = 180; goto _test_eof;
_test_eof181: cs = 181; goto _test_eof;
- _test_eof269: cs = 269; goto _test_eof;
_test_eof182: cs = 182; goto _test_eof;
_test_eof183: cs = 183; goto _test_eof;
_test_eof184: cs = 184; goto _test_eof;
@@ -5941,6 +5994,7 @@ case 265:
_test_eof187: cs = 187; goto _test_eof;
_test_eof188: cs = 188; goto _test_eof;
_test_eof189: cs = 189; goto _test_eof;
+ _test_eof283: cs = 283; goto _test_eof;
_test_eof190: cs = 190; goto _test_eof;
_test_eof191: cs = 191; goto _test_eof;
_test_eof192: cs = 192; goto _test_eof;
@@ -6017,11 +6071,25 @@ case 265:
_test_eof263: cs = 263; goto _test_eof;
_test_eof264: cs = 264; goto _test_eof;
_test_eof265: cs = 265; goto _test_eof;
+ _test_eof266: cs = 266; goto _test_eof;
+ _test_eof267: cs = 267; goto _test_eof;
+ _test_eof268: cs = 268; goto _test_eof;
+ _test_eof269: cs = 269; goto _test_eof;
+ _test_eof270: cs = 270; goto _test_eof;
+ _test_eof271: cs = 271; goto _test_eof;
+ _test_eof272: cs = 272; goto _test_eof;
+ _test_eof273: cs = 273; goto _test_eof;
+ _test_eof274: cs = 274; goto _test_eof;
+ _test_eof275: cs = 275; goto _test_eof;
+ _test_eof276: cs = 276; goto _test_eof;
+ _test_eof277: cs = 277; goto _test_eof;
+ _test_eof278: cs = 278; goto _test_eof;
+ _test_eof279: cs = 279; goto _test_eof;
_test_eof: {}
_out: {}
}
-#line 469 "http_parser.rl"
+#line 482 "http_parser.rl"
parser->cs = cs;
@@ -6033,26 +6101,11 @@ case 265:
CALLBACK(uri);
assert(p <= pe && "buffer overflow after parsing execute");
- return(p - buffer);
}
int
-http_parser_has_error (http_parser *parser)
+http_parser_has_error (http_parser *parser)
{
- if (parser->error) return TRUE;
+ if (parser->flags & ERROR) return 1;
return parser->cs == http_parser_error;
}
-
-int
-http_parser_should_keep_alive (http_parser *parser)
-{
- if (parser->keep_alive == -1)
- if (parser->version_major == 1)
- return (parser->version_minor != 0);
- else if (parser->version_major == 0)
- return FALSE;
- else
- return TRUE;
- else
- return parser->keep_alive;
-}