rev 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +11 -1
- data/README +10 -2
- data/ext/http11_client/http11_parser.c +256 -966
- data/ext/http11_client/http11_parser.rl +3 -3
- data/ext/libev/Changes +21 -0
- data/ext/libev/LICENSE +12 -1
- data/ext/libev/README +39 -111
- data/ext/libev/ev.c +495 -115
- data/ext/libev/ev.h +17 -5
- data/ext/libev/ev_epoll.c +1 -1
- data/ext/libev/ev_kqueue.c +1 -1
- data/ext/libev/ev_poll.c +1 -1
- data/ext/libev/ev_port.c +1 -1
- data/ext/libev/ev_select.c +25 -8
- data/ext/libev/ev_vars.h +2 -2
- data/ext/libev/ev_win32.c +1 -1
- data/ext/rev/rev_buffer.c +6 -4
- data/lib/rev.rb +1 -1
- data/lib/rev/io.rb +1 -1
- data/lib/rev/socket.rb +2 -0
- data/rev.gemspec +1 -1
- metadata +1 -1
data/CHANGES
CHANGED
@@ -1,9 +1,19 @@
|
|
1
|
+
0.2.2:
|
2
|
+
|
3
|
+
* Correct a pointer arithmetic error in the buffering code that could result
|
4
|
+
in data corruption.
|
5
|
+
|
6
|
+
* Upgrade to libev 3.41
|
7
|
+
|
8
|
+
* Relax HTTP/1.1 reponse parser to allow the "reason" portion of the response
|
9
|
+
header to be omitted
|
10
|
+
|
1
11
|
0.2.1:
|
2
12
|
|
3
13
|
* Upgrade to libev 3.31
|
4
14
|
|
5
15
|
* Rev::Loop#run_once and Rev::Loop#run_nonblock now return the number of events
|
6
|
-
received when they were running
|
16
|
+
received when they were running
|
7
17
|
|
8
18
|
* Remove inheritence relationship between Rev::IO and Rev::IOWatcher
|
9
19
|
|
data/README
CHANGED
@@ -11,8 +11,16 @@ applications.
|
|
11
11
|
|
12
12
|
You can include Rev in your programs with:
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
require 'rubygems'
|
15
|
+
require 'rev'
|
16
|
+
|
17
|
+
For more information, consult the RubyForge page:
|
18
|
+
|
19
|
+
http://rev.rubyforge.org
|
20
|
+
|
21
|
+
Questions? Sign up for the mailing list at:
|
22
|
+
|
23
|
+
http://rubyforge.org/mailman/listinfo/rev-talk
|
16
24
|
|
17
25
|
== Anatomy
|
18
26
|
|
@@ -24,18 +24,157 @@
|
|
24
24
|
/** Data **/
|
25
25
|
|
26
26
|
#line 27 "http11_parser.c"
|
27
|
-
static const
|
28
|
-
|
29
|
-
|
27
|
+
static const char _httpclient_parser_actions[] = {
|
28
|
+
0, 1, 0, 1, 1, 1, 2, 1,
|
29
|
+
3, 1, 4, 1, 5, 1, 7, 1,
|
30
|
+
8, 1, 10, 2, 2, 3, 2, 6,
|
31
|
+
0, 2, 6, 5, 2, 9, 10, 2,
|
32
|
+
10, 9, 3, 2, 3, 4
|
33
|
+
};
|
30
34
|
|
31
|
-
static const
|
35
|
+
static const short _httpclient_parser_key_offsets[] = {
|
36
|
+
0, 10, 10, 11, 22, 26, 27, 28,
|
37
|
+
39, 54, 75, 90, 110, 125, 146, 161,
|
38
|
+
181, 196, 214, 229, 246, 247, 248, 249,
|
39
|
+
250, 252, 255, 257, 260, 262, 264, 266,
|
40
|
+
268, 269, 270, 286, 302, 304, 305, 306
|
41
|
+
};
|
42
|
+
|
43
|
+
static const char _httpclient_parser_trans_keys[] = {
|
44
|
+
13, 48, 59, 72, 49, 57, 65, 70,
|
45
|
+
97, 102, 10, 13, 32, 59, 9, 12,
|
46
|
+
48, 57, 65, 70, 97, 102, 13, 32,
|
47
|
+
9, 12, 10, 10, 13, 32, 59, 9,
|
48
|
+
12, 48, 57, 65, 70, 97, 102, 33,
|
49
|
+
124, 126, 35, 39, 42, 43, 45, 46,
|
50
|
+
48, 57, 65, 90, 94, 122, 13, 32,
|
51
|
+
33, 59, 61, 124, 126, 9, 12, 35,
|
52
|
+
39, 42, 43, 45, 46, 48, 57, 65,
|
53
|
+
90, 94, 122, 33, 124, 126, 35, 39,
|
54
|
+
42, 43, 45, 46, 48, 57, 65, 90,
|
55
|
+
94, 122, 13, 32, 33, 59, 124, 126,
|
56
|
+
9, 12, 35, 39, 42, 43, 45, 46,
|
57
|
+
48, 57, 65, 90, 94, 122, 33, 124,
|
58
|
+
126, 35, 39, 42, 43, 45, 46, 48,
|
59
|
+
57, 65, 90, 94, 122, 13, 32, 33,
|
60
|
+
59, 61, 124, 126, 9, 12, 35, 39,
|
61
|
+
42, 43, 45, 46, 48, 57, 65, 90,
|
62
|
+
94, 122, 33, 124, 126, 35, 39, 42,
|
63
|
+
43, 45, 46, 48, 57, 65, 90, 94,
|
64
|
+
122, 13, 32, 33, 59, 124, 126, 9,
|
65
|
+
12, 35, 39, 42, 43, 45, 46, 48,
|
66
|
+
57, 65, 90, 94, 122, 33, 124, 126,
|
67
|
+
35, 39, 42, 43, 45, 46, 48, 57,
|
68
|
+
65, 90, 94, 122, 13, 33, 59, 61,
|
69
|
+
124, 126, 35, 39, 42, 43, 45, 46,
|
70
|
+
48, 57, 65, 90, 94, 122, 33, 124,
|
71
|
+
126, 35, 39, 42, 43, 45, 46, 48,
|
72
|
+
57, 65, 90, 94, 122, 13, 33, 59,
|
73
|
+
124, 126, 35, 39, 42, 43, 45, 46,
|
74
|
+
48, 57, 65, 90, 94, 122, 84, 84,
|
75
|
+
80, 47, 48, 57, 46, 48, 57, 48,
|
76
|
+
57, 32, 48, 57, 48, 57, 48, 57,
|
77
|
+
48, 57, 13, 32, 13, 10, 13, 33,
|
78
|
+
124, 126, 35, 39, 42, 43, 45, 46,
|
79
|
+
48, 57, 65, 90, 94, 122, 33, 58,
|
80
|
+
124, 126, 35, 39, 42, 43, 45, 46,
|
81
|
+
48, 57, 65, 90, 94, 122, 13, 32,
|
82
|
+
13, 13, 0
|
83
|
+
};
|
84
|
+
|
85
|
+
static const char _httpclient_parser_single_lengths[] = {
|
86
|
+
4, 0, 1, 3, 2, 1, 1, 3,
|
87
|
+
3, 7, 3, 6, 3, 7, 3, 6,
|
88
|
+
3, 6, 3, 5, 1, 1, 1, 1,
|
89
|
+
0, 1, 0, 1, 0, 0, 0, 2,
|
90
|
+
1, 1, 4, 4, 2, 1, 1, 0
|
91
|
+
};
|
92
|
+
|
93
|
+
static const char _httpclient_parser_range_lengths[] = {
|
94
|
+
3, 0, 0, 4, 1, 0, 0, 4,
|
95
|
+
6, 7, 6, 7, 6, 7, 6, 7,
|
96
|
+
6, 6, 6, 6, 0, 0, 0, 0,
|
97
|
+
1, 1, 1, 1, 1, 1, 1, 0,
|
98
|
+
0, 0, 6, 6, 0, 0, 0, 0
|
99
|
+
};
|
100
|
+
|
101
|
+
static const unsigned char _httpclient_parser_index_offsets[] = {
|
102
|
+
0, 8, 8, 10, 18, 22, 24, 26,
|
103
|
+
34, 44, 59, 69, 83, 93, 108, 118,
|
104
|
+
132, 142, 155, 165, 177, 179, 181, 183,
|
105
|
+
185, 187, 190, 192, 195, 197, 199, 201,
|
106
|
+
204, 206, 208, 219, 230, 233, 235, 237
|
107
|
+
};
|
108
|
+
|
109
|
+
static const char _httpclient_parser_indicies[] = {
|
110
|
+
14, 15, 17, 18, 16, 16, 16, 0,
|
111
|
+
30, 0, 63, 37, 64, 37, 39, 39,
|
112
|
+
39, 0, 19, 32, 32, 0, 29, 0,
|
113
|
+
31, 0, 38, 37, 40, 37, 39, 39,
|
114
|
+
39, 0, 58, 58, 58, 58, 58, 58,
|
115
|
+
58, 58, 58, 0, 42, 41, 43, 44,
|
116
|
+
45, 43, 43, 41, 43, 43, 43, 43,
|
117
|
+
43, 43, 0, 59, 59, 59, 59, 59,
|
118
|
+
59, 59, 59, 59, 0, 34, 33, 35,
|
119
|
+
36, 35, 35, 33, 35, 35, 35, 35,
|
120
|
+
35, 35, 0, 70, 70, 70, 70, 70,
|
121
|
+
70, 70, 70, 70, 0, 65, 41, 66,
|
122
|
+
67, 68, 66, 66, 41, 66, 66, 66,
|
123
|
+
66, 66, 66, 0, 69, 69, 69, 69,
|
124
|
+
69, 69, 69, 69, 69, 0, 60, 33,
|
125
|
+
61, 62, 61, 61, 33, 61, 61, 61,
|
126
|
+
61, 61, 61, 0, 10, 10, 10, 10,
|
127
|
+
10, 10, 10, 10, 10, 0, 24, 25,
|
128
|
+
26, 27, 25, 25, 25, 25, 25, 25,
|
129
|
+
25, 25, 0, 11, 11, 11, 11, 11,
|
130
|
+
11, 11, 11, 11, 0, 21, 22, 23,
|
131
|
+
22, 22, 22, 22, 22, 22, 22, 22,
|
132
|
+
0, 1, 0, 56, 0, 2, 0, 5,
|
133
|
+
0, 7, 0, 6, 7, 0, 13, 0,
|
134
|
+
12, 13, 0, 4, 0, 3, 0, 57,
|
135
|
+
0, 54, 55, 53, 49, 48, 28, 0,
|
136
|
+
19, 20, 20, 20, 20, 20, 20, 20,
|
137
|
+
20, 20, 0, 8, 9, 8, 8, 8,
|
138
|
+
8, 8, 8, 8, 8, 0, 47, 52,
|
139
|
+
51, 47, 46, 49, 50, 0, 0
|
140
|
+
};
|
141
|
+
|
142
|
+
static const char _httpclient_parser_trans_targs_wi[] = {
|
143
|
+
1, 21, 23, 30, 29, 24, 26, 25,
|
144
|
+
35, 36, 17, 19, 28, 27, 2, 3,
|
145
|
+
7, 16, 20, 5, 35, 2, 19, 16,
|
146
|
+
2, 17, 16, 18, 34, 39, 39, 39,
|
147
|
+
4, 4, 5, 11, 8, 4, 5, 7,
|
148
|
+
8, 4, 5, 9, 8, 10, 37, 33,
|
149
|
+
32, 33, 32, 37, 36, 32, 33, 38,
|
150
|
+
22, 31, 9, 11, 6, 15, 12, 6,
|
151
|
+
12, 6, 13, 12, 14, 15, 13
|
152
|
+
};
|
153
|
+
|
154
|
+
static const char _httpclient_parser_trans_actions_wi[] = {
|
155
|
+
0, 0, 0, 0, 1, 0, 0, 0,
|
156
|
+
0, 5, 3, 7, 13, 0, 0, 1,
|
157
|
+
1, 0, 1, 0, 3, 9, 0, 9,
|
158
|
+
34, 0, 34, 19, 0, 17, 28, 31,
|
159
|
+
0, 9, 9, 0, 9, 15, 15, 0,
|
160
|
+
15, 34, 34, 0, 34, 19, 0, 9,
|
161
|
+
0, 11, 1, 7, 7, 22, 25, 22,
|
162
|
+
0, 0, 3, 7, 9, 0, 9, 15,
|
163
|
+
15, 34, 0, 34, 19, 7, 3
|
164
|
+
};
|
165
|
+
|
166
|
+
static const int httpclient_parser_start = 0;
|
167
|
+
|
168
|
+
static const int httpclient_parser_first_final = 39;
|
169
|
+
|
170
|
+
static const int httpclient_parser_error = 1;
|
32
171
|
|
33
172
|
#line 99 "http11_parser.rl"
|
34
173
|
|
35
174
|
int httpclient_parser_init(httpclient_parser *parser) {
|
36
175
|
int cs = 0;
|
37
176
|
|
38
|
-
#line
|
177
|
+
#line 178 "http11_parser.c"
|
39
178
|
{
|
40
179
|
cs = httpclient_parser_start;
|
41
180
|
}
|
@@ -67,999 +206,150 @@ size_t httpclient_parser_execute(httpclient_parser *parser, const char *buffer,
|
|
67
206
|
|
68
207
|
|
69
208
|
|
70
|
-
#line
|
209
|
+
#line 210 "http11_parser.c"
|
71
210
|
{
|
211
|
+
int _klen;
|
212
|
+
unsigned int _trans;
|
213
|
+
const char *_acts;
|
214
|
+
unsigned int _nacts;
|
215
|
+
const char *_keys;
|
216
|
+
|
72
217
|
if ( p == pe )
|
73
218
|
goto _out;
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
#line 33 "http11_parser.rl"
|
102
|
-
{
|
103
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
104
|
-
}
|
105
|
-
goto st2;
|
106
|
-
tr43:
|
107
|
-
#line 33 "http11_parser.rl"
|
108
|
-
{
|
109
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
110
|
-
}
|
111
|
-
goto st2;
|
112
|
-
st2:
|
113
|
-
if ( ++p == pe )
|
114
|
-
goto _out2;
|
115
|
-
case 2:
|
116
|
-
#line 117 "http11_parser.c"
|
117
|
-
if ( (*p) == 10 )
|
118
|
-
goto tr6;
|
119
|
-
goto st0;
|
120
|
-
tr6:
|
121
|
-
#line 53 "http11_parser.rl"
|
122
|
-
{
|
123
|
-
parser->last_chunk(parser->data, NULL, 0);
|
124
|
-
}
|
125
|
-
#line 57 "http11_parser.rl"
|
126
|
-
{
|
127
|
-
parser->body_start = p - buffer + 1;
|
128
|
-
if(parser->header_done != NULL)
|
129
|
-
parser->header_done(parser->data, p + 1, pe - p - 1);
|
130
|
-
goto _out37;
|
131
|
-
}
|
132
|
-
goto st37;
|
133
|
-
tr13:
|
134
|
-
#line 57 "http11_parser.rl"
|
135
|
-
{
|
136
|
-
parser->body_start = p - buffer + 1;
|
137
|
-
if(parser->header_done != NULL)
|
138
|
-
parser->header_done(parser->data, p + 1, pe - p - 1);
|
139
|
-
goto _out37;
|
140
|
-
}
|
141
|
-
goto st37;
|
142
|
-
tr14:
|
143
|
-
#line 57 "http11_parser.rl"
|
144
|
-
{
|
145
|
-
parser->body_start = p - buffer + 1;
|
146
|
-
if(parser->header_done != NULL)
|
147
|
-
parser->header_done(parser->data, p + 1, pe - p - 1);
|
148
|
-
goto _out37;
|
149
|
-
}
|
150
|
-
#line 53 "http11_parser.rl"
|
151
|
-
{
|
152
|
-
parser->last_chunk(parser->data, NULL, 0);
|
153
|
-
}
|
154
|
-
goto st37;
|
155
|
-
st37:
|
156
|
-
if ( ++p == pe )
|
157
|
-
goto _out37;
|
158
|
-
case 37:
|
159
|
-
#line 160 "http11_parser.c"
|
160
|
-
goto st0;
|
161
|
-
tr2:
|
162
|
-
#line 23 "http11_parser.rl"
|
163
|
-
{MARK(mark, p); }
|
164
|
-
goto st3;
|
165
|
-
st3:
|
166
|
-
if ( ++p == pe )
|
167
|
-
goto _out3;
|
168
|
-
case 3:
|
169
|
-
#line 170 "http11_parser.c"
|
170
|
-
switch( (*p) ) {
|
171
|
-
case 13: goto tr8;
|
172
|
-
case 32: goto tr7;
|
173
|
-
case 59: goto tr10;
|
219
|
+
_resume:
|
220
|
+
if ( cs == 1 )
|
221
|
+
goto _out;
|
222
|
+
_keys = _httpclient_parser_trans_keys + _httpclient_parser_key_offsets[cs];
|
223
|
+
_trans = _httpclient_parser_index_offsets[cs];
|
224
|
+
|
225
|
+
_klen = _httpclient_parser_single_lengths[cs];
|
226
|
+
if ( _klen > 0 ) {
|
227
|
+
const char *_lower = _keys;
|
228
|
+
const char *_mid;
|
229
|
+
const char *_upper = _keys + _klen - 1;
|
230
|
+
while (1) {
|
231
|
+
if ( _upper < _lower )
|
232
|
+
break;
|
233
|
+
|
234
|
+
_mid = _lower + ((_upper-_lower) >> 1);
|
235
|
+
if ( (*p) < *_mid )
|
236
|
+
_upper = _mid - 1;
|
237
|
+
else if ( (*p) > *_mid )
|
238
|
+
_lower = _mid + 1;
|
239
|
+
else {
|
240
|
+
_trans += (_mid - _keys);
|
241
|
+
goto _match;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
_keys += _klen;
|
245
|
+
_trans += _klen;
|
174
246
|
}
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
parser->field_len = LEN(field_start, p);
|
197
|
-
}
|
198
|
-
#line 31 "http11_parser.rl"
|
199
|
-
{ MARK(mark, p); }
|
200
|
-
#line 33 "http11_parser.rl"
|
201
|
-
{
|
202
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
203
|
-
}
|
204
|
-
goto st4;
|
205
|
-
tr24:
|
206
|
-
#line 33 "http11_parser.rl"
|
207
|
-
{
|
208
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
209
|
-
}
|
210
|
-
goto st4;
|
211
|
-
st4:
|
212
|
-
if ( ++p == pe )
|
213
|
-
goto _out4;
|
214
|
-
case 4:
|
215
|
-
#line 216 "http11_parser.c"
|
216
|
-
switch( (*p) ) {
|
217
|
-
case 13: goto st5;
|
218
|
-
case 32: goto st4;
|
247
|
+
|
248
|
+
_klen = _httpclient_parser_range_lengths[cs];
|
249
|
+
if ( _klen > 0 ) {
|
250
|
+
const char *_lower = _keys;
|
251
|
+
const char *_mid;
|
252
|
+
const char *_upper = _keys + (_klen<<1) - 2;
|
253
|
+
while (1) {
|
254
|
+
if ( _upper < _lower )
|
255
|
+
break;
|
256
|
+
|
257
|
+
_mid = _lower + (((_upper-_lower) >> 1) & ~1);
|
258
|
+
if ( (*p) < _mid[0] )
|
259
|
+
_upper = _mid - 2;
|
260
|
+
else if ( (*p) > _mid[1] )
|
261
|
+
_lower = _mid + 2;
|
262
|
+
else {
|
263
|
+
_trans += ((_mid - _keys)>>1);
|
264
|
+
goto _match;
|
265
|
+
}
|
266
|
+
}
|
267
|
+
_trans += _klen;
|
219
268
|
}
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
{
|
232
|
-
parser->field_len = LEN(field_start, p);
|
233
|
-
}
|
234
|
-
#line 31 "http11_parser.rl"
|
235
|
-
{ MARK(mark, p); }
|
236
|
-
#line 33 "http11_parser.rl"
|
237
|
-
{
|
238
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
239
|
-
}
|
240
|
-
goto st5;
|
241
|
-
tr25:
|
242
|
-
#line 33 "http11_parser.rl"
|
243
|
-
{
|
244
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
245
|
-
}
|
246
|
-
goto st5;
|
247
|
-
st5:
|
248
|
-
if ( ++p == pe )
|
249
|
-
goto _out5;
|
250
|
-
case 5:
|
251
|
-
#line 252 "http11_parser.c"
|
252
|
-
if ( (*p) == 10 )
|
253
|
-
goto tr13;
|
254
|
-
goto st0;
|
255
|
-
tr8:
|
256
|
-
#line 49 "http11_parser.rl"
|
269
|
+
|
270
|
+
_match:
|
271
|
+
_trans = _httpclient_parser_indicies[_trans];
|
272
|
+
cs = _httpclient_parser_trans_targs_wi[_trans];
|
273
|
+
|
274
|
+
if ( _httpclient_parser_trans_actions_wi[_trans] == 0 )
|
275
|
+
goto _again;
|
276
|
+
|
277
|
+
_acts = _httpclient_parser_actions + _httpclient_parser_trans_actions_wi[_trans];
|
278
|
+
_nacts = (unsigned int) *_acts++;
|
279
|
+
while ( _nacts-- > 0 )
|
257
280
|
{
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
tr29:
|
262
|
-
#line 27 "http11_parser.rl"
|
263
|
-
{
|
264
|
-
parser->field_len = LEN(field_start, p);
|
265
|
-
}
|
266
|
-
#line 31 "http11_parser.rl"
|
267
|
-
{ MARK(mark, p); }
|
268
|
-
#line 33 "http11_parser.rl"
|
269
|
-
{
|
270
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
271
|
-
}
|
272
|
-
goto st6;
|
273
|
-
tr34:
|
274
|
-
#line 33 "http11_parser.rl"
|
275
|
-
{
|
276
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
277
|
-
}
|
278
|
-
goto st6;
|
279
|
-
st6:
|
280
|
-
if ( ++p == pe )
|
281
|
-
goto _out6;
|
282
|
-
case 6:
|
283
|
-
#line 284 "http11_parser.c"
|
284
|
-
if ( (*p) == 10 )
|
285
|
-
goto tr14;
|
286
|
-
goto st0;
|
287
|
-
tr3:
|
281
|
+
switch ( *_acts++ )
|
282
|
+
{
|
283
|
+
case 0:
|
288
284
|
#line 23 "http11_parser.rl"
|
289
285
|
{MARK(mark, p); }
|
290
|
-
|
291
|
-
|
292
|
-
if ( ++p == pe )
|
293
|
-
goto _out7;
|
294
|
-
case 7:
|
295
|
-
#line 296 "http11_parser.c"
|
296
|
-
switch( (*p) ) {
|
297
|
-
case 13: goto tr15;
|
298
|
-
case 32: goto tr7;
|
299
|
-
case 59: goto tr16;
|
300
|
-
}
|
301
|
-
if ( (*p) < 48 ) {
|
302
|
-
if ( 9 <= (*p) && (*p) <= 12 )
|
303
|
-
goto tr7;
|
304
|
-
} else if ( (*p) > 57 ) {
|
305
|
-
if ( (*p) > 70 ) {
|
306
|
-
if ( 97 <= (*p) && (*p) <= 102 )
|
307
|
-
goto st7;
|
308
|
-
} else if ( (*p) >= 65 )
|
309
|
-
goto st7;
|
310
|
-
} else
|
311
|
-
goto st7;
|
312
|
-
goto st0;
|
313
|
-
tr16:
|
314
|
-
#line 49 "http11_parser.rl"
|
315
|
-
{
|
316
|
-
parser->chunk_size(parser->data, PTR_TO(mark), LEN(mark, p));
|
317
|
-
}
|
318
|
-
goto st8;
|
319
|
-
tr21:
|
320
|
-
#line 27 "http11_parser.rl"
|
321
|
-
{
|
322
|
-
parser->field_len = LEN(field_start, p);
|
323
|
-
}
|
324
|
-
#line 31 "http11_parser.rl"
|
325
|
-
{ MARK(mark, p); }
|
326
|
-
#line 33 "http11_parser.rl"
|
327
|
-
{
|
328
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
329
|
-
}
|
330
|
-
goto st8;
|
331
|
-
tr27:
|
332
|
-
#line 33 "http11_parser.rl"
|
333
|
-
{
|
334
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
335
|
-
}
|
336
|
-
goto st8;
|
337
|
-
st8:
|
338
|
-
if ( ++p == pe )
|
339
|
-
goto _out8;
|
340
|
-
case 8:
|
341
|
-
#line 342 "http11_parser.c"
|
342
|
-
switch( (*p) ) {
|
343
|
-
case 33: goto tr17;
|
344
|
-
case 124: goto tr17;
|
345
|
-
case 126: goto tr17;
|
346
|
-
}
|
347
|
-
if ( (*p) < 45 ) {
|
348
|
-
if ( (*p) > 39 ) {
|
349
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
350
|
-
goto tr17;
|
351
|
-
} else if ( (*p) >= 35 )
|
352
|
-
goto tr17;
|
353
|
-
} else if ( (*p) > 46 ) {
|
354
|
-
if ( (*p) < 65 ) {
|
355
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
356
|
-
goto tr17;
|
357
|
-
} else if ( (*p) > 90 ) {
|
358
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
359
|
-
goto tr17;
|
360
|
-
} else
|
361
|
-
goto tr17;
|
362
|
-
} else
|
363
|
-
goto tr17;
|
364
|
-
goto st0;
|
365
|
-
tr17:
|
286
|
+
break;
|
287
|
+
case 1:
|
366
288
|
#line 25 "http11_parser.rl"
|
367
289
|
{ MARK(field_start, p); }
|
368
|
-
|
369
|
-
|
370
|
-
if ( ++p == pe )
|
371
|
-
goto _out9;
|
372
|
-
case 9:
|
373
|
-
#line 374 "http11_parser.c"
|
374
|
-
switch( (*p) ) {
|
375
|
-
case 13: goto tr19;
|
376
|
-
case 32: goto tr18;
|
377
|
-
case 33: goto st9;
|
378
|
-
case 59: goto tr21;
|
379
|
-
case 61: goto tr22;
|
380
|
-
case 124: goto st9;
|
381
|
-
case 126: goto st9;
|
382
|
-
}
|
383
|
-
if ( (*p) < 45 ) {
|
384
|
-
if ( (*p) < 35 ) {
|
385
|
-
if ( 9 <= (*p) && (*p) <= 12 )
|
386
|
-
goto tr18;
|
387
|
-
} else if ( (*p) > 39 ) {
|
388
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
389
|
-
goto st9;
|
390
|
-
} else
|
391
|
-
goto st9;
|
392
|
-
} else if ( (*p) > 46 ) {
|
393
|
-
if ( (*p) < 65 ) {
|
394
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
395
|
-
goto st9;
|
396
|
-
} else if ( (*p) > 90 ) {
|
397
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
398
|
-
goto st9;
|
399
|
-
} else
|
400
|
-
goto st9;
|
401
|
-
} else
|
402
|
-
goto st9;
|
403
|
-
goto st0;
|
404
|
-
tr22:
|
290
|
+
break;
|
291
|
+
case 2:
|
405
292
|
#line 27 "http11_parser.rl"
|
406
293
|
{
|
407
294
|
parser->field_len = LEN(field_start, p);
|
408
295
|
}
|
296
|
+
break;
|
297
|
+
case 3:
|
409
298
|
#line 31 "http11_parser.rl"
|
410
299
|
{ MARK(mark, p); }
|
411
|
-
|
412
|
-
|
413
|
-
if ( ++p == pe )
|
414
|
-
goto _out10;
|
415
|
-
case 10:
|
416
|
-
#line 417 "http11_parser.c"
|
417
|
-
switch( (*p) ) {
|
418
|
-
case 33: goto tr23;
|
419
|
-
case 124: goto tr23;
|
420
|
-
case 126: goto tr23;
|
421
|
-
}
|
422
|
-
if ( (*p) < 45 ) {
|
423
|
-
if ( (*p) > 39 ) {
|
424
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
425
|
-
goto tr23;
|
426
|
-
} else if ( (*p) >= 35 )
|
427
|
-
goto tr23;
|
428
|
-
} else if ( (*p) > 46 ) {
|
429
|
-
if ( (*p) < 65 ) {
|
430
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
431
|
-
goto tr23;
|
432
|
-
} else if ( (*p) > 90 ) {
|
433
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
434
|
-
goto tr23;
|
435
|
-
} else
|
436
|
-
goto tr23;
|
437
|
-
} else
|
438
|
-
goto tr23;
|
439
|
-
goto st0;
|
440
|
-
tr23:
|
441
|
-
#line 31 "http11_parser.rl"
|
442
|
-
{ MARK(mark, p); }
|
443
|
-
goto st11;
|
444
|
-
st11:
|
445
|
-
if ( ++p == pe )
|
446
|
-
goto _out11;
|
447
|
-
case 11:
|
448
|
-
#line 449 "http11_parser.c"
|
449
|
-
switch( (*p) ) {
|
450
|
-
case 13: goto tr25;
|
451
|
-
case 32: goto tr24;
|
452
|
-
case 33: goto st11;
|
453
|
-
case 59: goto tr27;
|
454
|
-
case 124: goto st11;
|
455
|
-
case 126: goto st11;
|
456
|
-
}
|
457
|
-
if ( (*p) < 45 ) {
|
458
|
-
if ( (*p) < 35 ) {
|
459
|
-
if ( 9 <= (*p) && (*p) <= 12 )
|
460
|
-
goto tr24;
|
461
|
-
} else if ( (*p) > 39 ) {
|
462
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
463
|
-
goto st11;
|
464
|
-
} else
|
465
|
-
goto st11;
|
466
|
-
} else if ( (*p) > 46 ) {
|
467
|
-
if ( (*p) < 65 ) {
|
468
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
469
|
-
goto st11;
|
470
|
-
} else if ( (*p) > 90 ) {
|
471
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
472
|
-
goto st11;
|
473
|
-
} else
|
474
|
-
goto st11;
|
475
|
-
} else
|
476
|
-
goto st11;
|
477
|
-
goto st0;
|
478
|
-
tr10:
|
479
|
-
#line 49 "http11_parser.rl"
|
480
|
-
{
|
481
|
-
parser->chunk_size(parser->data, PTR_TO(mark), LEN(mark, p));
|
482
|
-
}
|
483
|
-
goto st12;
|
484
|
-
tr31:
|
485
|
-
#line 27 "http11_parser.rl"
|
486
|
-
{
|
487
|
-
parser->field_len = LEN(field_start, p);
|
488
|
-
}
|
489
|
-
#line 31 "http11_parser.rl"
|
490
|
-
{ MARK(mark, p); }
|
491
|
-
#line 33 "http11_parser.rl"
|
492
|
-
{
|
493
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
494
|
-
}
|
495
|
-
goto st12;
|
496
|
-
tr36:
|
300
|
+
break;
|
301
|
+
case 4:
|
497
302
|
#line 33 "http11_parser.rl"
|
498
303
|
{
|
499
304
|
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
500
305
|
}
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
goto _out12;
|
505
|
-
case 12:
|
506
|
-
#line 507 "http11_parser.c"
|
507
|
-
switch( (*p) ) {
|
508
|
-
case 33: goto tr28;
|
509
|
-
case 124: goto tr28;
|
510
|
-
case 126: goto tr28;
|
511
|
-
}
|
512
|
-
if ( (*p) < 45 ) {
|
513
|
-
if ( (*p) > 39 ) {
|
514
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
515
|
-
goto tr28;
|
516
|
-
} else if ( (*p) >= 35 )
|
517
|
-
goto tr28;
|
518
|
-
} else if ( (*p) > 46 ) {
|
519
|
-
if ( (*p) < 65 ) {
|
520
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
521
|
-
goto tr28;
|
522
|
-
} else if ( (*p) > 90 ) {
|
523
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
524
|
-
goto tr28;
|
525
|
-
} else
|
526
|
-
goto tr28;
|
527
|
-
} else
|
528
|
-
goto tr28;
|
529
|
-
goto st0;
|
530
|
-
tr28:
|
531
|
-
#line 25 "http11_parser.rl"
|
532
|
-
{ MARK(field_start, p); }
|
533
|
-
goto st13;
|
534
|
-
st13:
|
535
|
-
if ( ++p == pe )
|
536
|
-
goto _out13;
|
537
|
-
case 13:
|
538
|
-
#line 539 "http11_parser.c"
|
539
|
-
switch( (*p) ) {
|
540
|
-
case 13: goto tr29;
|
541
|
-
case 32: goto tr18;
|
542
|
-
case 33: goto st13;
|
543
|
-
case 59: goto tr31;
|
544
|
-
case 61: goto tr32;
|
545
|
-
case 124: goto st13;
|
546
|
-
case 126: goto st13;
|
547
|
-
}
|
548
|
-
if ( (*p) < 45 ) {
|
549
|
-
if ( (*p) < 35 ) {
|
550
|
-
if ( 9 <= (*p) && (*p) <= 12 )
|
551
|
-
goto tr18;
|
552
|
-
} else if ( (*p) > 39 ) {
|
553
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
554
|
-
goto st13;
|
555
|
-
} else
|
556
|
-
goto st13;
|
557
|
-
} else if ( (*p) > 46 ) {
|
558
|
-
if ( (*p) < 65 ) {
|
559
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
560
|
-
goto st13;
|
561
|
-
} else if ( (*p) > 90 ) {
|
562
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
563
|
-
goto st13;
|
564
|
-
} else
|
565
|
-
goto st13;
|
566
|
-
} else
|
567
|
-
goto st13;
|
568
|
-
goto st0;
|
569
|
-
tr32:
|
570
|
-
#line 27 "http11_parser.rl"
|
571
|
-
{
|
572
|
-
parser->field_len = LEN(field_start, p);
|
573
|
-
}
|
574
|
-
#line 31 "http11_parser.rl"
|
575
|
-
{ MARK(mark, p); }
|
576
|
-
goto st14;
|
577
|
-
st14:
|
578
|
-
if ( ++p == pe )
|
579
|
-
goto _out14;
|
580
|
-
case 14:
|
581
|
-
#line 582 "http11_parser.c"
|
582
|
-
switch( (*p) ) {
|
583
|
-
case 33: goto tr33;
|
584
|
-
case 124: goto tr33;
|
585
|
-
case 126: goto tr33;
|
586
|
-
}
|
587
|
-
if ( (*p) < 45 ) {
|
588
|
-
if ( (*p) > 39 ) {
|
589
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
590
|
-
goto tr33;
|
591
|
-
} else if ( (*p) >= 35 )
|
592
|
-
goto tr33;
|
593
|
-
} else if ( (*p) > 46 ) {
|
594
|
-
if ( (*p) < 65 ) {
|
595
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
596
|
-
goto tr33;
|
597
|
-
} else if ( (*p) > 90 ) {
|
598
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
599
|
-
goto tr33;
|
600
|
-
} else
|
601
|
-
goto tr33;
|
602
|
-
} else
|
603
|
-
goto tr33;
|
604
|
-
goto st0;
|
605
|
-
tr33:
|
606
|
-
#line 31 "http11_parser.rl"
|
607
|
-
{ MARK(mark, p); }
|
608
|
-
goto st15;
|
609
|
-
st15:
|
610
|
-
if ( ++p == pe )
|
611
|
-
goto _out15;
|
612
|
-
case 15:
|
613
|
-
#line 614 "http11_parser.c"
|
614
|
-
switch( (*p) ) {
|
615
|
-
case 13: goto tr34;
|
616
|
-
case 32: goto tr24;
|
617
|
-
case 33: goto st15;
|
618
|
-
case 59: goto tr36;
|
619
|
-
case 124: goto st15;
|
620
|
-
case 126: goto st15;
|
621
|
-
}
|
622
|
-
if ( (*p) < 45 ) {
|
623
|
-
if ( (*p) < 35 ) {
|
624
|
-
if ( 9 <= (*p) && (*p) <= 12 )
|
625
|
-
goto tr24;
|
626
|
-
} else if ( (*p) > 39 ) {
|
627
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
628
|
-
goto st15;
|
629
|
-
} else
|
630
|
-
goto st15;
|
631
|
-
} else if ( (*p) > 46 ) {
|
632
|
-
if ( (*p) < 65 ) {
|
633
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
634
|
-
goto st15;
|
635
|
-
} else if ( (*p) > 90 ) {
|
636
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
637
|
-
goto st15;
|
638
|
-
} else
|
639
|
-
goto st15;
|
640
|
-
} else
|
641
|
-
goto st15;
|
642
|
-
goto st0;
|
643
|
-
tr40:
|
644
|
-
#line 27 "http11_parser.rl"
|
645
|
-
{
|
646
|
-
parser->field_len = LEN(field_start, p);
|
647
|
-
}
|
648
|
-
#line 31 "http11_parser.rl"
|
649
|
-
{ MARK(mark, p); }
|
650
|
-
#line 33 "http11_parser.rl"
|
651
|
-
{
|
652
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
653
|
-
}
|
654
|
-
goto st16;
|
655
|
-
tr45:
|
656
|
-
#line 33 "http11_parser.rl"
|
306
|
+
break;
|
307
|
+
case 5:
|
308
|
+
#line 37 "http11_parser.rl"
|
657
309
|
{
|
658
|
-
parser->
|
310
|
+
parser->reason_phrase(parser->data, PTR_TO(mark), LEN(mark, p));
|
659
311
|
}
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
goto _out16;
|
664
|
-
case 16:
|
665
|
-
#line 666 "http11_parser.c"
|
666
|
-
switch( (*p) ) {
|
667
|
-
case 33: goto tr37;
|
668
|
-
case 124: goto tr37;
|
669
|
-
case 126: goto tr37;
|
670
|
-
}
|
671
|
-
if ( (*p) < 45 ) {
|
672
|
-
if ( (*p) > 39 ) {
|
673
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
674
|
-
goto tr37;
|
675
|
-
} else if ( (*p) >= 35 )
|
676
|
-
goto tr37;
|
677
|
-
} else if ( (*p) > 46 ) {
|
678
|
-
if ( (*p) < 65 ) {
|
679
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
680
|
-
goto tr37;
|
681
|
-
} else if ( (*p) > 90 ) {
|
682
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
683
|
-
goto tr37;
|
684
|
-
} else
|
685
|
-
goto tr37;
|
686
|
-
} else
|
687
|
-
goto tr37;
|
688
|
-
goto st0;
|
689
|
-
tr37:
|
690
|
-
#line 25 "http11_parser.rl"
|
691
|
-
{ MARK(field_start, p); }
|
692
|
-
goto st17;
|
693
|
-
st17:
|
694
|
-
if ( ++p == pe )
|
695
|
-
goto _out17;
|
696
|
-
case 17:
|
697
|
-
#line 698 "http11_parser.c"
|
698
|
-
switch( (*p) ) {
|
699
|
-
case 13: goto tr38;
|
700
|
-
case 33: goto st17;
|
701
|
-
case 59: goto tr40;
|
702
|
-
case 61: goto tr41;
|
703
|
-
case 124: goto st17;
|
704
|
-
case 126: goto st17;
|
705
|
-
}
|
706
|
-
if ( (*p) < 45 ) {
|
707
|
-
if ( (*p) > 39 ) {
|
708
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
709
|
-
goto st17;
|
710
|
-
} else if ( (*p) >= 35 )
|
711
|
-
goto st17;
|
712
|
-
} else if ( (*p) > 46 ) {
|
713
|
-
if ( (*p) < 65 ) {
|
714
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
715
|
-
goto st17;
|
716
|
-
} else if ( (*p) > 90 ) {
|
717
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
718
|
-
goto st17;
|
719
|
-
} else
|
720
|
-
goto st17;
|
721
|
-
} else
|
722
|
-
goto st17;
|
723
|
-
goto st0;
|
724
|
-
tr41:
|
725
|
-
#line 27 "http11_parser.rl"
|
312
|
+
break;
|
313
|
+
case 6:
|
314
|
+
#line 41 "http11_parser.rl"
|
726
315
|
{
|
727
|
-
parser->
|
316
|
+
parser->status_code(parser->data, PTR_TO(mark), LEN(mark, p));
|
728
317
|
}
|
729
|
-
|
730
|
-
|
731
|
-
goto st18;
|
732
|
-
st18:
|
733
|
-
if ( ++p == pe )
|
734
|
-
goto _out18;
|
735
|
-
case 18:
|
736
|
-
#line 737 "http11_parser.c"
|
737
|
-
switch( (*p) ) {
|
738
|
-
case 33: goto tr42;
|
739
|
-
case 124: goto tr42;
|
740
|
-
case 126: goto tr42;
|
741
|
-
}
|
742
|
-
if ( (*p) < 45 ) {
|
743
|
-
if ( (*p) > 39 ) {
|
744
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
745
|
-
goto tr42;
|
746
|
-
} else if ( (*p) >= 35 )
|
747
|
-
goto tr42;
|
748
|
-
} else if ( (*p) > 46 ) {
|
749
|
-
if ( (*p) < 65 ) {
|
750
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
751
|
-
goto tr42;
|
752
|
-
} else if ( (*p) > 90 ) {
|
753
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
754
|
-
goto tr42;
|
755
|
-
} else
|
756
|
-
goto tr42;
|
757
|
-
} else
|
758
|
-
goto tr42;
|
759
|
-
goto st0;
|
760
|
-
tr42:
|
761
|
-
#line 31 "http11_parser.rl"
|
762
|
-
{ MARK(mark, p); }
|
763
|
-
goto st19;
|
764
|
-
st19:
|
765
|
-
if ( ++p == pe )
|
766
|
-
goto _out19;
|
767
|
-
case 19:
|
768
|
-
#line 769 "http11_parser.c"
|
769
|
-
switch( (*p) ) {
|
770
|
-
case 13: goto tr43;
|
771
|
-
case 33: goto st19;
|
772
|
-
case 59: goto tr45;
|
773
|
-
case 124: goto st19;
|
774
|
-
case 126: goto st19;
|
775
|
-
}
|
776
|
-
if ( (*p) < 45 ) {
|
777
|
-
if ( (*p) > 39 ) {
|
778
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
779
|
-
goto st19;
|
780
|
-
} else if ( (*p) >= 35 )
|
781
|
-
goto st19;
|
782
|
-
} else if ( (*p) > 46 ) {
|
783
|
-
if ( (*p) < 65 ) {
|
784
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
785
|
-
goto st19;
|
786
|
-
} else if ( (*p) > 90 ) {
|
787
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
788
|
-
goto st19;
|
789
|
-
} else
|
790
|
-
goto st19;
|
791
|
-
} else
|
792
|
-
goto st19;
|
793
|
-
goto st0;
|
794
|
-
tr5:
|
795
|
-
#line 23 "http11_parser.rl"
|
796
|
-
{MARK(mark, p); }
|
797
|
-
goto st20;
|
798
|
-
st20:
|
799
|
-
if ( ++p == pe )
|
800
|
-
goto _out20;
|
801
|
-
case 20:
|
802
|
-
#line 803 "http11_parser.c"
|
803
|
-
if ( (*p) == 84 )
|
804
|
-
goto st21;
|
805
|
-
goto st0;
|
806
|
-
st21:
|
807
|
-
if ( ++p == pe )
|
808
|
-
goto _out21;
|
809
|
-
case 21:
|
810
|
-
if ( (*p) == 84 )
|
811
|
-
goto st22;
|
812
|
-
goto st0;
|
813
|
-
st22:
|
814
|
-
if ( ++p == pe )
|
815
|
-
goto _out22;
|
816
|
-
case 22:
|
817
|
-
if ( (*p) == 80 )
|
818
|
-
goto st23;
|
819
|
-
goto st0;
|
820
|
-
st23:
|
821
|
-
if ( ++p == pe )
|
822
|
-
goto _out23;
|
823
|
-
case 23:
|
824
|
-
if ( (*p) == 47 )
|
825
|
-
goto st24;
|
826
|
-
goto st0;
|
827
|
-
st24:
|
828
|
-
if ( ++p == pe )
|
829
|
-
goto _out24;
|
830
|
-
case 24:
|
831
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
832
|
-
goto st25;
|
833
|
-
goto st0;
|
834
|
-
st25:
|
835
|
-
if ( ++p == pe )
|
836
|
-
goto _out25;
|
837
|
-
case 25:
|
838
|
-
if ( (*p) == 46 )
|
839
|
-
goto st26;
|
840
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
841
|
-
goto st25;
|
842
|
-
goto st0;
|
843
|
-
st26:
|
844
|
-
if ( ++p == pe )
|
845
|
-
goto _out26;
|
846
|
-
case 26:
|
847
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
848
|
-
goto st27;
|
849
|
-
goto st0;
|
850
|
-
st27:
|
851
|
-
if ( ++p == pe )
|
852
|
-
goto _out27;
|
853
|
-
case 27:
|
854
|
-
if ( (*p) == 32 )
|
855
|
-
goto tr53;
|
856
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
857
|
-
goto st27;
|
858
|
-
goto st0;
|
859
|
-
tr53:
|
318
|
+
break;
|
319
|
+
case 7:
|
860
320
|
#line 45 "http11_parser.rl"
|
861
321
|
{
|
862
322
|
parser->http_version(parser->data, PTR_TO(mark), LEN(mark, p));
|
863
323
|
}
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
#line 870 "http11_parser.c"
|
870
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
871
|
-
goto tr54;
|
872
|
-
goto st0;
|
873
|
-
tr54:
|
874
|
-
#line 23 "http11_parser.rl"
|
875
|
-
{MARK(mark, p); }
|
876
|
-
goto st29;
|
877
|
-
st29:
|
878
|
-
if ( ++p == pe )
|
879
|
-
goto _out29;
|
880
|
-
case 29:
|
881
|
-
#line 882 "http11_parser.c"
|
882
|
-
if ( (*p) == 32 )
|
883
|
-
goto tr55;
|
884
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
885
|
-
goto st29;
|
886
|
-
goto st0;
|
887
|
-
tr55:
|
888
|
-
#line 41 "http11_parser.rl"
|
889
|
-
{
|
890
|
-
parser->status_code(parser->data, PTR_TO(mark), LEN(mark, p));
|
891
|
-
}
|
892
|
-
goto st30;
|
893
|
-
st30:
|
894
|
-
if ( ++p == pe )
|
895
|
-
goto _out30;
|
896
|
-
case 30:
|
897
|
-
#line 898 "http11_parser.c"
|
898
|
-
goto tr57;
|
899
|
-
tr57:
|
900
|
-
#line 23 "http11_parser.rl"
|
901
|
-
{MARK(mark, p); }
|
902
|
-
goto st31;
|
903
|
-
st31:
|
904
|
-
if ( ++p == pe )
|
905
|
-
goto _out31;
|
906
|
-
case 31:
|
907
|
-
#line 908 "http11_parser.c"
|
908
|
-
if ( (*p) == 13 )
|
909
|
-
goto tr59;
|
910
|
-
goto st31;
|
911
|
-
tr65:
|
912
|
-
#line 33 "http11_parser.rl"
|
913
|
-
{
|
914
|
-
parser->http_field(parser->data, PTR_TO(field_start), parser->field_len, PTR_TO(mark), LEN(mark, p));
|
324
|
+
break;
|
325
|
+
case 8:
|
326
|
+
#line 49 "http11_parser.rl"
|
327
|
+
{
|
328
|
+
parser->chunk_size(parser->data, PTR_TO(mark), LEN(mark, p));
|
915
329
|
}
|
916
|
-
|
917
|
-
|
918
|
-
#line
|
919
|
-
{
|
920
|
-
parser->
|
330
|
+
break;
|
331
|
+
case 9:
|
332
|
+
#line 53 "http11_parser.rl"
|
333
|
+
{
|
334
|
+
parser->last_chunk(parser->data, NULL, 0);
|
921
335
|
}
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
goto _out32;
|
926
|
-
case 32:
|
927
|
-
#line 928 "http11_parser.c"
|
928
|
-
if ( (*p) == 10 )
|
929
|
-
goto st33;
|
930
|
-
goto st0;
|
931
|
-
st33:
|
932
|
-
if ( ++p == pe )
|
933
|
-
goto _out33;
|
934
|
-
case 33:
|
935
|
-
switch( (*p) ) {
|
936
|
-
case 13: goto st5;
|
937
|
-
case 33: goto tr61;
|
938
|
-
case 124: goto tr61;
|
939
|
-
case 126: goto tr61;
|
940
|
-
}
|
941
|
-
if ( (*p) < 45 ) {
|
942
|
-
if ( (*p) > 39 ) {
|
943
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
944
|
-
goto tr61;
|
945
|
-
} else if ( (*p) >= 35 )
|
946
|
-
goto tr61;
|
947
|
-
} else if ( (*p) > 46 ) {
|
948
|
-
if ( (*p) < 65 ) {
|
949
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
950
|
-
goto tr61;
|
951
|
-
} else if ( (*p) > 90 ) {
|
952
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
953
|
-
goto tr61;
|
954
|
-
} else
|
955
|
-
goto tr61;
|
956
|
-
} else
|
957
|
-
goto tr61;
|
958
|
-
goto st0;
|
959
|
-
tr61:
|
960
|
-
#line 25 "http11_parser.rl"
|
961
|
-
{ MARK(field_start, p); }
|
962
|
-
goto st34;
|
963
|
-
st34:
|
964
|
-
if ( ++p == pe )
|
965
|
-
goto _out34;
|
966
|
-
case 34:
|
967
|
-
#line 968 "http11_parser.c"
|
968
|
-
switch( (*p) ) {
|
969
|
-
case 33: goto st34;
|
970
|
-
case 58: goto tr63;
|
971
|
-
case 124: goto st34;
|
972
|
-
case 126: goto st34;
|
973
|
-
}
|
974
|
-
if ( (*p) < 45 ) {
|
975
|
-
if ( (*p) > 39 ) {
|
976
|
-
if ( 42 <= (*p) && (*p) <= 43 )
|
977
|
-
goto st34;
|
978
|
-
} else if ( (*p) >= 35 )
|
979
|
-
goto st34;
|
980
|
-
} else if ( (*p) > 46 ) {
|
981
|
-
if ( (*p) < 65 ) {
|
982
|
-
if ( 48 <= (*p) && (*p) <= 57 )
|
983
|
-
goto st34;
|
984
|
-
} else if ( (*p) > 90 ) {
|
985
|
-
if ( 94 <= (*p) && (*p) <= 122 )
|
986
|
-
goto st34;
|
987
|
-
} else
|
988
|
-
goto st34;
|
989
|
-
} else
|
990
|
-
goto st34;
|
991
|
-
goto st0;
|
992
|
-
tr66:
|
993
|
-
#line 31 "http11_parser.rl"
|
994
|
-
{ MARK(mark, p); }
|
995
|
-
goto st35;
|
996
|
-
tr63:
|
997
|
-
#line 27 "http11_parser.rl"
|
336
|
+
break;
|
337
|
+
case 10:
|
338
|
+
#line 57 "http11_parser.rl"
|
998
339
|
{
|
999
|
-
parser->
|
340
|
+
parser->body_start = p - buffer + 1;
|
341
|
+
if(parser->header_done != NULL)
|
342
|
+
parser->header_done(parser->data, p + 1, pe - p - 1);
|
343
|
+
goto _out;
|
1000
344
|
}
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
goto _out35;
|
1005
|
-
case 35:
|
1006
|
-
#line 1007 "http11_parser.c"
|
1007
|
-
switch( (*p) ) {
|
1008
|
-
case 13: goto tr65;
|
1009
|
-
case 32: goto tr66;
|
1010
|
-
}
|
1011
|
-
goto tr64;
|
1012
|
-
tr64:
|
1013
|
-
#line 31 "http11_parser.rl"
|
1014
|
-
{ MARK(mark, p); }
|
1015
|
-
goto st36;
|
1016
|
-
st36:
|
1017
|
-
if ( ++p == pe )
|
1018
|
-
goto _out36;
|
1019
|
-
case 36:
|
1020
|
-
#line 1021 "http11_parser.c"
|
1021
|
-
if ( (*p) == 13 )
|
1022
|
-
goto tr65;
|
1023
|
-
goto st36;
|
345
|
+
break;
|
346
|
+
#line 347 "http11_parser.c"
|
347
|
+
}
|
1024
348
|
}
|
1025
|
-
_out0: cs = 0; goto _out;
|
1026
|
-
_out2: cs = 2; goto _out;
|
1027
|
-
_out37: cs = 37; goto _out;
|
1028
|
-
_out3: cs = 3; goto _out;
|
1029
|
-
_out4: cs = 4; goto _out;
|
1030
|
-
_out5: cs = 5; goto _out;
|
1031
|
-
_out6: cs = 6; goto _out;
|
1032
|
-
_out7: cs = 7; goto _out;
|
1033
|
-
_out8: cs = 8; goto _out;
|
1034
|
-
_out9: cs = 9; goto _out;
|
1035
|
-
_out10: cs = 10; goto _out;
|
1036
|
-
_out11: cs = 11; goto _out;
|
1037
|
-
_out12: cs = 12; goto _out;
|
1038
|
-
_out13: cs = 13; goto _out;
|
1039
|
-
_out14: cs = 14; goto _out;
|
1040
|
-
_out15: cs = 15; goto _out;
|
1041
|
-
_out16: cs = 16; goto _out;
|
1042
|
-
_out17: cs = 17; goto _out;
|
1043
|
-
_out18: cs = 18; goto _out;
|
1044
|
-
_out19: cs = 19; goto _out;
|
1045
|
-
_out20: cs = 20; goto _out;
|
1046
|
-
_out21: cs = 21; goto _out;
|
1047
|
-
_out22: cs = 22; goto _out;
|
1048
|
-
_out23: cs = 23; goto _out;
|
1049
|
-
_out24: cs = 24; goto _out;
|
1050
|
-
_out25: cs = 25; goto _out;
|
1051
|
-
_out26: cs = 26; goto _out;
|
1052
|
-
_out27: cs = 27; goto _out;
|
1053
|
-
_out28: cs = 28; goto _out;
|
1054
|
-
_out29: cs = 29; goto _out;
|
1055
|
-
_out30: cs = 30; goto _out;
|
1056
|
-
_out31: cs = 31; goto _out;
|
1057
|
-
_out32: cs = 32; goto _out;
|
1058
|
-
_out33: cs = 33; goto _out;
|
1059
|
-
_out34: cs = 34; goto _out;
|
1060
|
-
_out35: cs = 35; goto _out;
|
1061
|
-
_out36: cs = 36; goto _out;
|
1062
349
|
|
350
|
+
_again:
|
351
|
+
if ( ++p != pe )
|
352
|
+
goto _resume;
|
1063
353
|
_out: {}
|
1064
354
|
}
|
1065
355
|
#line 130 "http11_parser.rl"
|
@@ -1077,7 +367,7 @@ case 36:
|
|
1077
367
|
if(parser->body_start) {
|
1078
368
|
/* final \r\n combo encountered so stop right here */
|
1079
369
|
|
1080
|
-
#line
|
370
|
+
#line 371 "http11_parser.c"
|
1081
371
|
#line 144 "http11_parser.rl"
|
1082
372
|
parser->nread++;
|
1083
373
|
}
|
@@ -1090,7 +380,7 @@ int httpclient_parser_finish(httpclient_parser *parser)
|
|
1090
380
|
int cs = parser->cs;
|
1091
381
|
|
1092
382
|
|
1093
|
-
#line
|
383
|
+
#line 384 "http11_parser.c"
|
1094
384
|
#line 155 "http11_parser.rl"
|
1095
385
|
|
1096
386
|
parser->cs = cs;
|