mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
almost working
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@675 19e92222-5c0b-0410-8929-a290d50e31e9
This commit is contained in:
parent
594f6fe42c
commit
954d96c7e8
5 changed files with 79 additions and 73 deletions
6
Rakefile
6
Rakefile
|
@ -53,10 +53,10 @@ task :ragel do
|
||||||
sh "ragel http11_parser.rl | rlgen-cd -G2 -o #{target}"
|
sh "ragel http11_parser.rl | rlgen-cd -G2 -o #{target}"
|
||||||
raise "Failed to build C source" unless File.exist? target
|
raise "Failed to build C source" unless File.exist? target
|
||||||
end
|
end
|
||||||
Dir.chdir "ext/http11_java" do
|
Dir.chdir "ext/http11" do
|
||||||
target = "org/jruby/mongrel/Http11Parser.java"
|
target = "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
|
||||||
File.unlink target if File.exist? target
|
File.unlink target if File.exist? target
|
||||||
sh "ragel -J http11_parser.rl | rlgen-java -o #{target}"
|
sh "ragel -J http11_parser.java.rl | rlgen-java -o #{target}"
|
||||||
raise "Failed to build Java source" unless File.exist? target
|
raise "Failed to build Java source" unless File.exist? target
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,29 +14,30 @@
|
||||||
#define MARK(M,FPC) (parser->M = (FPC) - buffer)
|
#define MARK(M,FPC) (parser->M = (FPC) - buffer)
|
||||||
#define PTR_TO(F) (buffer + parser->F)
|
#define PTR_TO(F) (buffer + parser->F)
|
||||||
|
|
||||||
/** machine **/
|
/** Machine **/
|
||||||
#line 119 "http11_parser.rl"
|
|
||||||
|
#line 74 "http11_parser.rl"
|
||||||
|
|
||||||
|
|
||||||
/** Data **/
|
/** Data **/
|
||||||
|
|
||||||
#line 24 "http11_parser.c"
|
#line 25 "http11_parser.c"
|
||||||
static const int http_parser_start = 1;
|
static const int http_parser_start = 1;
|
||||||
static const int http_parser_first_final = 57;
|
static const int http_parser_first_final = 57;
|
||||||
static const int http_parser_error = 0;
|
static const int http_parser_error = 0;
|
||||||
|
|
||||||
static const int http_parser_en_main = 1;
|
static const int http_parser_en_main = 1;
|
||||||
|
|
||||||
#line 123 "http11_parser.rl"
|
#line 78 "http11_parser.rl"
|
||||||
|
|
||||||
int http_parser_init(http_parser *parser) {
|
int http_parser_init(http_parser *parser) {
|
||||||
int cs = 0;
|
int cs = 0;
|
||||||
|
|
||||||
#line 36 "http11_parser.c"
|
#line 37 "http11_parser.c"
|
||||||
{
|
{
|
||||||
cs = http_parser_start;
|
cs = http_parser_start;
|
||||||
}
|
}
|
||||||
#line 127 "http11_parser.rl"
|
#line 82 "http11_parser.rl"
|
||||||
parser->cs = cs;
|
parser->cs = cs;
|
||||||
parser->body_start = 0;
|
parser->body_start = 0;
|
||||||
parser->content_len = 0;
|
parser->content_len = 0;
|
||||||
|
@ -64,7 +65,7 @@ size_t http_parser_execute(http_parser *parser, const char *buffer, size_t len,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#line 68 "http11_parser.c"
|
#line 69 "http11_parser.c"
|
||||||
{
|
{
|
||||||
if ( p == pe )
|
if ( p == pe )
|
||||||
goto _out;
|
goto _out;
|
||||||
|
@ -87,14 +88,14 @@ case 1:
|
||||||
st0:
|
st0:
|
||||||
goto _out0;
|
goto _out0;
|
||||||
tr0:
|
tr0:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st2;
|
goto st2;
|
||||||
st2:
|
st2:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out2;
|
goto _out2;
|
||||||
case 2:
|
case 2:
|
||||||
#line 98 "http11_parser.c"
|
#line 99 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr2;
|
case 32: goto tr2;
|
||||||
case 36: goto st38;
|
case 36: goto st38;
|
||||||
|
@ -110,7 +111,7 @@ case 2:
|
||||||
goto st38;
|
goto st38;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr2:
|
tr2:
|
||||||
#line 34 "http11_parser.rl"
|
#line 36 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_method != NULL)
|
if(parser->request_method != NULL)
|
||||||
parser->request_method(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_method(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
|
@ -120,7 +121,7 @@ st3:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out3;
|
goto _out3;
|
||||||
case 3:
|
case 3:
|
||||||
#line 124 "http11_parser.c"
|
#line 125 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 42: goto tr4;
|
case 42: goto tr4;
|
||||||
case 43: goto tr5;
|
case 43: goto tr5;
|
||||||
|
@ -137,66 +138,66 @@ case 3:
|
||||||
goto tr5;
|
goto tr5;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr4:
|
tr4:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st4;
|
goto st4;
|
||||||
st4:
|
st4:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out4;
|
goto _out4;
|
||||||
case 4:
|
case 4:
|
||||||
#line 148 "http11_parser.c"
|
#line 149 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr8;
|
case 32: goto tr8;
|
||||||
case 35: goto tr9;
|
case 35: goto tr9;
|
||||||
}
|
}
|
||||||
goto st0;
|
goto st0;
|
||||||
tr8:
|
tr8:
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st5;
|
goto st5;
|
||||||
tr30:
|
tr30:
|
||||||
#line 42 "http11_parser.rl"
|
#line 44 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->fragment != NULL)
|
if(parser->fragment != NULL)
|
||||||
parser->fragment(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->fragment(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st5;
|
goto st5;
|
||||||
tr40:
|
tr40:
|
||||||
#line 58 "http11_parser.rl"
|
#line 60 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_path != NULL)
|
if(parser->request_path != NULL)
|
||||||
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
||||||
}
|
}
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st5;
|
goto st5;
|
||||||
tr51:
|
tr51:
|
||||||
#line 47 "http11_parser.rl"
|
#line 49 "http11_parser.rl"
|
||||||
{MARK(query_start, p); }
|
{MARK(query_start, p); }
|
||||||
#line 48 "http11_parser.rl"
|
#line 50 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->query_string != NULL)
|
if(parser->query_string != NULL)
|
||||||
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
||||||
}
|
}
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st5;
|
goto st5;
|
||||||
tr55:
|
tr55:
|
||||||
#line 48 "http11_parser.rl"
|
#line 50 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->query_string != NULL)
|
if(parser->query_string != NULL)
|
||||||
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
||||||
}
|
}
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
|
@ -206,19 +207,19 @@ st5:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out5;
|
goto _out5;
|
||||||
case 5:
|
case 5:
|
||||||
#line 210 "http11_parser.c"
|
#line 211 "http11_parser.c"
|
||||||
if ( (*p) == 72 )
|
if ( (*p) == 72 )
|
||||||
goto tr10;
|
goto tr10;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr10:
|
tr10:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st6;
|
goto st6;
|
||||||
st6:
|
st6:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out6;
|
goto _out6;
|
||||||
case 6:
|
case 6:
|
||||||
#line 222 "http11_parser.c"
|
#line 223 "http11_parser.c"
|
||||||
if ( (*p) == 84 )
|
if ( (*p) == 84 )
|
||||||
goto st7;
|
goto st7;
|
||||||
goto st0;
|
goto st0;
|
||||||
|
@ -276,14 +277,14 @@ case 13:
|
||||||
goto st13;
|
goto st13;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr18:
|
tr18:
|
||||||
#line 53 "http11_parser.rl"
|
#line 55 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->http_version != NULL)
|
if(parser->http_version != NULL)
|
||||||
parser->http_version(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->http_version(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st14;
|
goto st14;
|
||||||
tr26:
|
tr26:
|
||||||
#line 29 "http11_parser.rl"
|
#line 31 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->http_field != NULL) {
|
if(parser->http_field != NULL) {
|
||||||
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
||||||
|
@ -294,7 +295,7 @@ st14:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out14;
|
goto _out14;
|
||||||
case 14:
|
case 14:
|
||||||
#line 298 "http11_parser.c"
|
#line 299 "http11_parser.c"
|
||||||
if ( (*p) == 10 )
|
if ( (*p) == 10 )
|
||||||
goto st15;
|
goto st15;
|
||||||
goto st0;
|
goto st0;
|
||||||
|
@ -334,7 +335,7 @@ case 16:
|
||||||
goto tr22;
|
goto tr22;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr22:
|
tr22:
|
||||||
#line 63 "http11_parser.rl"
|
#line 65 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
parser->body_start = p - buffer + 1;
|
parser->body_start = p - buffer + 1;
|
||||||
if(parser->header_done != NULL)
|
if(parser->header_done != NULL)
|
||||||
|
@ -346,17 +347,17 @@ st57:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out57;
|
goto _out57;
|
||||||
case 57:
|
case 57:
|
||||||
#line 350 "http11_parser.c"
|
#line 351 "http11_parser.c"
|
||||||
goto st0;
|
goto st0;
|
||||||
tr21:
|
tr21:
|
||||||
#line 23 "http11_parser.rl"
|
#line 25 "http11_parser.rl"
|
||||||
{ MARK(field_start, p); }
|
{ MARK(field_start, p); }
|
||||||
goto st17;
|
goto st17;
|
||||||
st17:
|
st17:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out17;
|
goto _out17;
|
||||||
case 17:
|
case 17:
|
||||||
#line 360 "http11_parser.c"
|
#line 361 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 33: goto st17;
|
case 33: goto st17;
|
||||||
case 58: goto tr24;
|
case 58: goto tr24;
|
||||||
|
@ -382,77 +383,77 @@ case 17:
|
||||||
goto st17;
|
goto st17;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr24:
|
tr24:
|
||||||
#line 24 "http11_parser.rl"
|
#line 26 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
parser->field_len = LEN(field_start, p);
|
parser->field_len = LEN(field_start, p);
|
||||||
}
|
}
|
||||||
goto st18;
|
goto st18;
|
||||||
tr27:
|
tr27:
|
||||||
#line 28 "http11_parser.rl"
|
#line 30 "http11_parser.rl"
|
||||||
{ MARK(mark, p); }
|
{ MARK(mark, p); }
|
||||||
goto st18;
|
goto st18;
|
||||||
st18:
|
st18:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out18;
|
goto _out18;
|
||||||
case 18:
|
case 18:
|
||||||
#line 399 "http11_parser.c"
|
#line 400 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 13: goto tr26;
|
case 13: goto tr26;
|
||||||
case 32: goto tr27;
|
case 32: goto tr27;
|
||||||
}
|
}
|
||||||
goto tr25;
|
goto tr25;
|
||||||
tr25:
|
tr25:
|
||||||
#line 28 "http11_parser.rl"
|
#line 30 "http11_parser.rl"
|
||||||
{ MARK(mark, p); }
|
{ MARK(mark, p); }
|
||||||
goto st19;
|
goto st19;
|
||||||
st19:
|
st19:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out19;
|
goto _out19;
|
||||||
case 19:
|
case 19:
|
||||||
#line 413 "http11_parser.c"
|
#line 414 "http11_parser.c"
|
||||||
if ( (*p) == 13 )
|
if ( (*p) == 13 )
|
||||||
goto tr26;
|
goto tr26;
|
||||||
goto st19;
|
goto st19;
|
||||||
tr9:
|
tr9:
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st20;
|
goto st20;
|
||||||
tr41:
|
tr41:
|
||||||
#line 58 "http11_parser.rl"
|
#line 60 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_path != NULL)
|
if(parser->request_path != NULL)
|
||||||
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
||||||
}
|
}
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st20;
|
goto st20;
|
||||||
tr52:
|
tr52:
|
||||||
#line 47 "http11_parser.rl"
|
#line 49 "http11_parser.rl"
|
||||||
{MARK(query_start, p); }
|
{MARK(query_start, p); }
|
||||||
#line 48 "http11_parser.rl"
|
#line 50 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->query_string != NULL)
|
if(parser->query_string != NULL)
|
||||||
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
||||||
}
|
}
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
}
|
}
|
||||||
goto st20;
|
goto st20;
|
||||||
tr56:
|
tr56:
|
||||||
#line 48 "http11_parser.rl"
|
#line 50 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->query_string != NULL)
|
if(parser->query_string != NULL)
|
||||||
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
parser->query_string(parser->data, PTR_TO(query_start), LEN(query_start, p));
|
||||||
}
|
}
|
||||||
#line 38 "http11_parser.rl"
|
#line 40 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_uri != NULL)
|
if(parser->request_uri != NULL)
|
||||||
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
parser->request_uri(parser->data, PTR_TO(mark), LEN(mark, p));
|
||||||
|
@ -462,7 +463,7 @@ st20:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out20;
|
goto _out20;
|
||||||
case 20:
|
case 20:
|
||||||
#line 466 "http11_parser.c"
|
#line 467 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr30;
|
case 32: goto tr30;
|
||||||
case 37: goto tr31;
|
case 37: goto tr31;
|
||||||
|
@ -477,14 +478,14 @@ case 20:
|
||||||
goto st0;
|
goto st0;
|
||||||
goto tr29;
|
goto tr29;
|
||||||
tr29:
|
tr29:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st21;
|
goto st21;
|
||||||
st21:
|
st21:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out21;
|
goto _out21;
|
||||||
case 21:
|
case 21:
|
||||||
#line 488 "http11_parser.c"
|
#line 489 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr30;
|
case 32: goto tr30;
|
||||||
case 37: goto st22;
|
case 37: goto st22;
|
||||||
|
@ -499,14 +500,14 @@ case 21:
|
||||||
goto st0;
|
goto st0;
|
||||||
goto st21;
|
goto st21;
|
||||||
tr31:
|
tr31:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st22;
|
goto st22;
|
||||||
st22:
|
st22:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out22;
|
goto _out22;
|
||||||
case 22:
|
case 22:
|
||||||
#line 510 "http11_parser.c"
|
#line 511 "http11_parser.c"
|
||||||
if ( (*p) < 65 ) {
|
if ( (*p) < 65 ) {
|
||||||
if ( 48 <= (*p) && (*p) <= 57 )
|
if ( 48 <= (*p) && (*p) <= 57 )
|
||||||
goto st23;
|
goto st23;
|
||||||
|
@ -530,14 +531,14 @@ case 23:
|
||||||
goto st21;
|
goto st21;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr5:
|
tr5:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st24;
|
goto st24;
|
||||||
st24:
|
st24:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out24;
|
goto _out24;
|
||||||
case 24:
|
case 24:
|
||||||
#line 541 "http11_parser.c"
|
#line 542 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 43: goto st24;
|
case 43: goto st24;
|
||||||
case 58: goto st25;
|
case 58: goto st25;
|
||||||
|
@ -555,14 +556,14 @@ case 24:
|
||||||
goto st24;
|
goto st24;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr7:
|
tr7:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st25;
|
goto st25;
|
||||||
st25:
|
st25:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out25;
|
goto _out25;
|
||||||
case 25:
|
case 25:
|
||||||
#line 566 "http11_parser.c"
|
#line 567 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr8;
|
case 32: goto tr8;
|
||||||
case 34: goto st0;
|
case 34: goto st0;
|
||||||
|
@ -602,14 +603,14 @@ case 27:
|
||||||
goto st25;
|
goto st25;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr6:
|
tr6:
|
||||||
#line 20 "http11_parser.rl"
|
#line 22 "http11_parser.rl"
|
||||||
{MARK(mark, p); }
|
{MARK(mark, p); }
|
||||||
goto st28;
|
goto st28;
|
||||||
st28:
|
st28:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out28;
|
goto _out28;
|
||||||
case 28:
|
case 28:
|
||||||
#line 613 "http11_parser.c"
|
#line 614 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr40;
|
case 32: goto tr40;
|
||||||
case 34: goto st0;
|
case 34: goto st0;
|
||||||
|
@ -651,7 +652,7 @@ case 30:
|
||||||
goto st28;
|
goto st28;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr43:
|
tr43:
|
||||||
#line 58 "http11_parser.rl"
|
#line 60 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_path != NULL)
|
if(parser->request_path != NULL)
|
||||||
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
||||||
|
@ -661,7 +662,7 @@ st31:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out31;
|
goto _out31;
|
||||||
case 31:
|
case 31:
|
||||||
#line 665 "http11_parser.c"
|
#line 666 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr8;
|
case 32: goto tr8;
|
||||||
case 34: goto st0;
|
case 34: goto st0;
|
||||||
|
@ -702,7 +703,7 @@ case 33:
|
||||||
goto st31;
|
goto st31;
|
||||||
goto st0;
|
goto st0;
|
||||||
tr44:
|
tr44:
|
||||||
#line 58 "http11_parser.rl"
|
#line 60 "http11_parser.rl"
|
||||||
{
|
{
|
||||||
if(parser->request_path != NULL)
|
if(parser->request_path != NULL)
|
||||||
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
parser->request_path(parser->data, PTR_TO(mark), LEN(mark,p));
|
||||||
|
@ -712,7 +713,7 @@ st34:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out34;
|
goto _out34;
|
||||||
case 34:
|
case 34:
|
||||||
#line 716 "http11_parser.c"
|
#line 717 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr51;
|
case 32: goto tr51;
|
||||||
case 34: goto st0;
|
case 34: goto st0;
|
||||||
|
@ -726,14 +727,14 @@ case 34:
|
||||||
goto st0;
|
goto st0;
|
||||||
goto tr50;
|
goto tr50;
|
||||||
tr50:
|
tr50:
|
||||||
#line 47 "http11_parser.rl"
|
#line 49 "http11_parser.rl"
|
||||||
{MARK(query_start, p); }
|
{MARK(query_start, p); }
|
||||||
goto st35;
|
goto st35;
|
||||||
st35:
|
st35:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out35;
|
goto _out35;
|
||||||
case 35:
|
case 35:
|
||||||
#line 737 "http11_parser.c"
|
#line 738 "http11_parser.c"
|
||||||
switch( (*p) ) {
|
switch( (*p) ) {
|
||||||
case 32: goto tr55;
|
case 32: goto tr55;
|
||||||
case 34: goto st0;
|
case 34: goto st0;
|
||||||
|
@ -747,14 +748,14 @@ case 35:
|
||||||
goto st0;
|
goto st0;
|
||||||
goto st35;
|
goto st35;
|
||||||
tr53:
|
tr53:
|
||||||
#line 47 "http11_parser.rl"
|
#line 49 "http11_parser.rl"
|
||||||
{MARK(query_start, p); }
|
{MARK(query_start, p); }
|
||||||
goto st36;
|
goto st36;
|
||||||
st36:
|
st36:
|
||||||
if ( ++p == pe )
|
if ( ++p == pe )
|
||||||
goto _out36;
|
goto _out36;
|
||||||
case 36:
|
case 36:
|
||||||
#line 758 "http11_parser.c"
|
#line 759 "http11_parser.c"
|
||||||
if ( (*p) < 65 ) {
|
if ( (*p) < 65 ) {
|
||||||
if ( 48 <= (*p) && (*p) <= 57 )
|
if ( 48 <= (*p) && (*p) <= 57 )
|
||||||
goto st37;
|
goto st37;
|
||||||
|
@ -1169,7 +1170,7 @@ case 56:
|
||||||
|
|
||||||
_out: {}
|
_out: {}
|
||||||
}
|
}
|
||||||
#line 154 "http11_parser.rl"
|
#line 109 "http11_parser.rl"
|
||||||
|
|
||||||
parser->cs = cs;
|
parser->cs = cs;
|
||||||
parser->nread += p - (buffer + off);
|
parser->nread += p - (buffer + off);
|
||||||
|
@ -1184,8 +1185,8 @@ case 56:
|
||||||
if(parser->body_start) {
|
if(parser->body_start) {
|
||||||
/* final \r\n combo encountered so stop right here */
|
/* final \r\n combo encountered so stop right here */
|
||||||
|
|
||||||
#line 1188 "http11_parser.c"
|
#line 1189 "http11_parser.c"
|
||||||
#line 168 "http11_parser.rl"
|
#line 123 "http11_parser.rl"
|
||||||
parser->nread++;
|
parser->nread++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1197,8 +1198,8 @@ int http_parser_finish(http_parser *parser)
|
||||||
int cs = parser->cs;
|
int cs = parser->cs;
|
||||||
|
|
||||||
|
|
||||||
#line 1201 "http11_parser.c"
|
#line 1202 "http11_parser.c"
|
||||||
#line 179 "http11_parser.rl"
|
#line 134 "http11_parser.rl"
|
||||||
|
|
||||||
parser->cs = cs;
|
parser->cs = cs;
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,8 @@ public class Http11Parser {
|
||||||
fbreak;
|
fbreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include http_parser_common "http11_parser_common.rl";
|
||||||
|
|
||||||
}%%
|
}%%
|
||||||
|
|
||||||
/** Data **/
|
/** Data **/
|
|
@ -69,6 +69,8 @@
|
||||||
fbreak;
|
fbreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include http_parser_common "http11_parser_common.rl";
|
||||||
|
|
||||||
}%%
|
}%%
|
||||||
|
|
||||||
/** Data **/
|
/** Data **/
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
%%{
|
%%{
|
||||||
|
|
||||||
machine http_parser;
|
machine http_parser_common;
|
||||||
|
|
||||||
#### HTTP PROTOCOL GRAMMAR
|
#### HTTP PROTOCOL GRAMMAR
|
||||||
# line endings
|
# line endings
|
||||||
|
@ -50,4 +50,5 @@
|
||||||
Request = Request_Line ( message_header )* ( CRLF @done );
|
Request = Request_Line ( message_header )* ( CRLF @done );
|
||||||
|
|
||||||
main := Request;
|
main := Request;
|
||||||
|
|
||||||
}%%
|
}%%
|
||||||
|
|
Loading…
Add table
Reference in a new issue