rev 0.2.0 → 0.2.1

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