rev 0.2.0 → 0.2.1

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 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