http_parser.rb 0.5.2 → 0.7.0
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.
- checksums.yaml +7 -0
- data/.github/workflows/linux.yml +23 -0
- data/.github/workflows/windows.yml +23 -0
- data/.gitignore +5 -4
- data/.gitmodules +4 -4
- data/Gemfile +1 -1
- data/README.md +52 -47
- data/Rakefile +1 -0
- data/bench/standalone.rb +23 -0
- data/bench/thin.rb +1 -0
- data/ext/ruby_http_parser/extconf.rb +1 -1
- data/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java +139 -83
- data/ext/ruby_http_parser/ruby_http_parser.c +40 -41
- data/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS +32 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT +5 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/README.md +133 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/TODO +6 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c +1202 -671
- data/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp +79 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h +172 -51
- data/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml +22 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java +41 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java +8 -3
- data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java +76 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java +35 -102
- data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java +6 -6
- data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java +775 -682
- data/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java +8 -4
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java +70 -20
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java +51 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java +1 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java +1 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java +2 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java +1 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java +6 -17
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java +1 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java +1 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java +1 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java +127 -0
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java +80 -9
- data/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java +2 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/test.c +1637 -280
- data/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped +230 -71
- data/ext/ruby_http_parser/vendor/http-parser/AUTHORS +68 -0
- data/ext/ruby_http_parser/vendor/http-parser/LICENSE-MIT +1 -1
- data/ext/ruby_http_parser/vendor/http-parser/README.md +113 -38
- data/ext/ruby_http_parser/vendor/http-parser/bench.c +128 -0
- data/ext/ruby_http_parser/vendor/http-parser/contrib/parsertrace.c +157 -0
- data/ext/ruby_http_parser/vendor/http-parser/contrib/url_parser.c +47 -0
- data/ext/ruby_http_parser/vendor/http-parser/http_parser.c +1576 -780
- data/ext/ruby_http_parser/vendor/http-parser/http_parser.gyp +111 -0
- data/ext/ruby_http_parser/vendor/http-parser/http_parser.h +308 -58
- data/ext/ruby_http_parser/vendor/http-parser/test.c +2964 -460
- data/http_parser.rb.gemspec +14 -7
- data/spec/parser_spec.rb +196 -102
- data/spec/support/requests.json +236 -24
- data/spec/support/responses.json +202 -36
- data/tasks/compile.rake +2 -2
- data/tasks/fixtures.rake +8 -2
- data/tasks/spec.rake +1 -1
- metadata +141 -134
- data/Gemfile.lock +0 -32
- data/ext/ruby_http_parser/vendor/http-parser-java/compile +0 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/test_permutations +0 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/test_unit +0 -1
- data/ext/ruby_http_parser/vendor/http-parser-java/test_utf8 +0 -1
- data/ext/ruby_http_parser/vendor/http-parser/CONTRIBUTIONS +0 -4
@@ -13,7 +13,6 @@ header_0 :{ "User-Agent": "curl/7.18.0 (i486-pc-linux-gnu) libcurl/7.18.0 OpenSS
|
|
13
13
|
header_1 :{ "Host": "0.0.0.0=5000"}
|
14
14
|
header_2 :{ "Accept": "*/*"}
|
15
15
|
should_keep_alive :1
|
16
|
-
upgrade :0
|
17
16
|
http_major :1
|
18
17
|
http_minor :1
|
19
18
|
|
@@ -37,7 +36,6 @@ header_5 :{ "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7"}
|
|
37
36
|
header_6 :{ "Keep-Alive": "300"}
|
38
37
|
header_7 :{ "Connection": "keep-alive"}
|
39
38
|
should_keep_alive :1
|
40
|
-
upgrade :0
|
41
39
|
http_major :1
|
42
40
|
http_minor :1
|
43
41
|
|
@@ -54,7 +52,6 @@ body :""
|
|
54
52
|
body_size :0
|
55
53
|
header_0 :{ "aaaaaaaaaaaaa": "++++++++++"}
|
56
54
|
should_keep_alive :1
|
57
|
-
upgrade :0
|
58
55
|
http_major :1
|
59
56
|
http_minor :1
|
60
57
|
|
@@ -70,7 +67,6 @@ query_string:page=1
|
|
70
67
|
body :""
|
71
68
|
body_size :0
|
72
69
|
should_keep_alive :1
|
73
|
-
upgrade :0
|
74
70
|
http_major :1
|
75
71
|
http_minor :1
|
76
72
|
|
@@ -86,7 +82,6 @@ query_string:
|
|
86
82
|
body :""
|
87
83
|
body_size :0
|
88
84
|
should_keep_alive :1
|
89
|
-
upgrade :0
|
90
85
|
http_major :1
|
91
86
|
http_minor :1
|
92
87
|
|
@@ -103,7 +98,6 @@ body :""
|
|
103
98
|
body_size :0
|
104
99
|
header_0 :{ "Accept": "*/*"}
|
105
100
|
should_keep_alive :1
|
106
|
-
upgrade :0
|
107
101
|
http_major :1
|
108
102
|
http_minor :1
|
109
103
|
|
@@ -120,7 +114,6 @@ body :"HELLO"
|
|
120
114
|
body_size :0
|
121
115
|
header_0 :{ "conTENT-Length": "5"}
|
122
116
|
should_keep_alive :0
|
123
|
-
upgrade :0
|
124
117
|
http_major :1
|
125
118
|
http_minor :0
|
126
119
|
|
@@ -139,7 +132,6 @@ header_0 :{ "Accept": "*/*"}
|
|
139
132
|
header_1 :{ "Transfer-Encoding": "identity"}
|
140
133
|
header_2 :{ "Content-Length": "5"}
|
141
134
|
should_keep_alive :1
|
142
|
-
upgrade :0
|
143
135
|
http_major :1
|
144
136
|
http_minor :1
|
145
137
|
|
@@ -156,7 +148,6 @@ body :"all your base are belong to us"
|
|
156
148
|
body_size :0
|
157
149
|
header_0 :{ "Transfer-Encoding": "chunked"}
|
158
150
|
should_keep_alive :1
|
159
|
-
upgrade :0
|
160
151
|
http_major :1
|
161
152
|
http_minor :1
|
162
153
|
|
@@ -173,7 +164,6 @@ body :"hello world"
|
|
173
164
|
body_size :0
|
174
165
|
header_0 :{ "Transfer-Encoding": "chunked"}
|
175
166
|
should_keep_alive :1
|
176
|
-
upgrade :0
|
177
167
|
http_major :1
|
178
168
|
http_minor :1
|
179
169
|
|
@@ -192,7 +182,6 @@ header_0 :{ "Transfer-Encoding": "chunked"}
|
|
192
182
|
header_1 :{ "Vary": "*"}
|
193
183
|
header_2 :{ "Content-Type": "text/plain"}
|
194
184
|
should_keep_alive :1
|
195
|
-
upgrade :0
|
196
185
|
http_major :1
|
197
186
|
http_minor :1
|
198
187
|
|
@@ -209,7 +198,6 @@ body :"hello world"
|
|
209
198
|
body_size :0
|
210
199
|
header_0 :{ "Transfer-Encoding": "chunked"}
|
211
200
|
should_keep_alive :1
|
212
|
-
upgrade :0
|
213
201
|
http_major :1
|
214
202
|
http_minor :1
|
215
203
|
|
@@ -225,7 +213,6 @@ query_string:foo="bar"
|
|
225
213
|
body :""
|
226
214
|
body_size :0
|
227
215
|
should_keep_alive :1
|
228
|
-
upgrade :0
|
229
216
|
http_major :1
|
230
217
|
http_minor :1
|
231
218
|
|
@@ -244,7 +231,6 @@ header_0 :{ "Host": "0.0.0.0:5000"}
|
|
244
231
|
header_1 :{ "User-Agent": "ApacheBench/2.3"}
|
245
232
|
header_2 :{ "Accept": "*/*"}
|
246
233
|
should_keep_alive :0
|
247
|
-
upgrade :0
|
248
234
|
http_major :1
|
249
235
|
http_minor :0
|
250
236
|
|
@@ -260,7 +246,6 @@ query_string:foo=bar?baz
|
|
260
246
|
body :""
|
261
247
|
body_size :0
|
262
248
|
should_keep_alive :1
|
263
|
-
upgrade :0
|
264
249
|
http_major :1
|
265
250
|
http_minor :1
|
266
251
|
|
@@ -276,12 +261,11 @@ query_string:
|
|
276
261
|
body :""
|
277
262
|
body_size :0
|
278
263
|
should_keep_alive :1
|
279
|
-
upgrade :0
|
280
264
|
http_major :1
|
281
265
|
http_minor :1
|
282
266
|
|
283
267
|
name :upgrade request
|
284
|
-
raw :"GET /demo HTTP/1.1\r\nHost: example.com\r\nConnection: Upgrade\r\nSec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\nSec-WebSocket-Protocol: sample\r\nUpgrade: WebSocket\r\nSec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\nOrigin: http://example.com\r\n\r\
|
268
|
+
raw :"GET /demo HTTP/1.1\r\nHost: example.com\r\nConnection: Upgrade\r\nSec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\nSec-WebSocket-Protocol: sample\r\nUpgrade: WebSocket\r\nSec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\nOrigin: http://example.com\r\n\r\nHot diggity dogg"
|
285
269
|
type :HTTP_REQUEST
|
286
270
|
method: HTTP_GET
|
287
271
|
status_code :0
|
@@ -299,17 +283,17 @@ header_4 :{ "Upgrade": "WebSocket"}
|
|
299
283
|
header_5 :{ "Sec-WebSocket-Key1": "4 @1 46546xW%0l 1 5"}
|
300
284
|
header_6 :{ "Origin": "http://example.com"}
|
301
285
|
should_keep_alive :1
|
302
|
-
upgrade :
|
286
|
+
upgrade :"Hot diggity dogg"
|
303
287
|
http_major :1
|
304
288
|
http_minor :1
|
305
289
|
|
306
290
|
name :connect request
|
307
|
-
raw :"CONNECT home0.netscape.com:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\
|
291
|
+
raw :"CONNECT 0-home0.netscape.com:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\nsome data\r\nand yet even more data"
|
308
292
|
type :HTTP_REQUEST
|
309
293
|
method: HTTP_CONNECT
|
310
294
|
status_code :0
|
311
295
|
request_path:
|
312
|
-
request_url :home0.netscape.com:443
|
296
|
+
request_url :0-home0.netscape.com:443
|
313
297
|
fragment :
|
314
298
|
query_string:
|
315
299
|
body :""
|
@@ -317,7 +301,7 @@ body_size :0
|
|
317
301
|
header_0 :{ "User-agent": "Mozilla/1.1N"}
|
318
302
|
header_1 :{ "Proxy-authorization": "basic aGVsbG86d29ybGQ="}
|
319
303
|
should_keep_alive :0
|
320
|
-
upgrade :
|
304
|
+
upgrade :"some data\r\nand yet even more data"
|
321
305
|
http_major :1
|
322
306
|
http_minor :0
|
323
307
|
|
@@ -333,7 +317,6 @@ query_string:
|
|
333
317
|
body :""
|
334
318
|
body_size :0
|
335
319
|
should_keep_alive :1
|
336
|
-
upgrade :0
|
337
320
|
http_major :1
|
338
321
|
http_minor :1
|
339
322
|
|
@@ -349,7 +332,6 @@ query_string:
|
|
349
332
|
body :""
|
350
333
|
body_size :0
|
351
334
|
should_keep_alive :0
|
352
|
-
upgrade :0
|
353
335
|
http_major :0
|
354
336
|
http_minor :9
|
355
337
|
|
@@ -368,24 +350,23 @@ header_0 :{ "HOST": "239.255.255.250:1900"}
|
|
368
350
|
header_1 :{ "MAN": ""ssdp:discover""}
|
369
351
|
header_2 :{ "ST": ""ssdp:all""}
|
370
352
|
should_keep_alive :1
|
371
|
-
upgrade :0
|
372
353
|
http_major :1
|
373
354
|
http_minor :1
|
374
355
|
|
375
|
-
name :
|
376
|
-
raw :"GET
|
356
|
+
name :line folding in header value
|
357
|
+
raw :"GET / HTTP/1.1\r\nLine1: abc\r\n def\r\n ghi\r\n jkl\r\n mno \r\n qrs\r\nLine2: line2 \r\n\r\n"
|
377
358
|
type :HTTP_REQUEST
|
378
359
|
method: HTTP_GET
|
379
360
|
status_code :0
|
380
|
-
request_path
|
381
|
-
request_url
|
382
|
-
fragment :
|
383
|
-
query_string:
|
361
|
+
request_path:/
|
362
|
+
request_url :/
|
363
|
+
fragment :
|
364
|
+
query_string:
|
384
365
|
body :""
|
385
366
|
body_size :0
|
386
|
-
header_0 :{ "
|
367
|
+
header_0 :{ "Line1": "abcdefghijklmno qrs"}
|
368
|
+
header_1 :{ "Line2": "line2 "}
|
387
369
|
should_keep_alive :1
|
388
|
-
upgrade :0
|
389
370
|
http_major :1
|
390
371
|
http_minor :1
|
391
372
|
|
@@ -401,7 +382,6 @@ query_string:hail=all
|
|
401
382
|
body :""
|
402
383
|
body_size :0
|
403
384
|
should_keep_alive :1
|
404
|
-
upgrade :0
|
405
385
|
http_major :1
|
406
386
|
http_minor :1
|
407
387
|
|
@@ -417,7 +397,6 @@ query_string:hail=all
|
|
417
397
|
body :""
|
418
398
|
body_size :0
|
419
399
|
should_keep_alive :1
|
420
|
-
upgrade :0
|
421
400
|
http_major :1
|
422
401
|
http_minor :1
|
423
402
|
|
@@ -433,7 +412,96 @@ query_string:
|
|
433
412
|
body :""
|
434
413
|
body_size :0
|
435
414
|
should_keep_alive :1
|
436
|
-
|
415
|
+
http_major :1
|
416
|
+
http_minor :1
|
417
|
+
|
418
|
+
name :PATCH request
|
419
|
+
raw :"PATCH /file.txt HTTP/1.1\r\nHost: www.example.com\r\nContent-Type: application/example\r\nIf-Match: \"e0023aa4e\"\r\nContent-Length: 10\r\n\r\ncccccccccc"
|
420
|
+
type :HTTP_REQUEST
|
421
|
+
method: UNKNOWN
|
422
|
+
status_code :0
|
423
|
+
request_path:/file.txt
|
424
|
+
request_url :/file.txt
|
425
|
+
fragment :
|
426
|
+
query_string:
|
427
|
+
body :"cccccccccc"
|
428
|
+
body_size :0
|
429
|
+
header_0 :{ "Host": "www.example.com"}
|
430
|
+
header_1 :{ "Content-Type": "application/example"}
|
431
|
+
header_2 :{ "If-Match": ""e0023aa4e""}
|
432
|
+
header_3 :{ "Content-Length": "10"}
|
433
|
+
should_keep_alive :1
|
434
|
+
http_major :1
|
435
|
+
http_minor :1
|
436
|
+
|
437
|
+
name :connect caps request
|
438
|
+
raw :"CONNECT HOME0.NETSCAPE.COM:443 HTTP/1.0\r\nUser-agent: Mozilla/1.1N\r\nProxy-authorization: basic aGVsbG86d29ybGQ=\r\n\r\n"
|
439
|
+
type :HTTP_REQUEST
|
440
|
+
method: HTTP_CONNECT
|
441
|
+
status_code :0
|
442
|
+
request_path:
|
443
|
+
request_url :HOME0.NETSCAPE.COM:443
|
444
|
+
fragment :
|
445
|
+
query_string:
|
446
|
+
body :""
|
447
|
+
body_size :0
|
448
|
+
header_0 :{ "User-agent": "Mozilla/1.1N"}
|
449
|
+
header_1 :{ "Proxy-authorization": "basic aGVsbG86d29ybGQ="}
|
450
|
+
should_keep_alive :0
|
451
|
+
upgrade :""
|
452
|
+
http_major :1
|
453
|
+
http_minor :0
|
454
|
+
|
455
|
+
name :eat CRLF between requests, no "Connection: close" header
|
456
|
+
raw :"POST / HTTP/1.1\r\nHost: www.example.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 4\r\n\r\nq=42\r\n"
|
457
|
+
type :HTTP_REQUEST
|
458
|
+
method: HTTP_POST
|
459
|
+
status_code :0
|
460
|
+
request_path:/
|
461
|
+
request_url :/
|
462
|
+
fragment :
|
463
|
+
query_string:
|
464
|
+
body :"q=42"
|
465
|
+
body_size :0
|
466
|
+
header_0 :{ "Host": "www.example.com"}
|
467
|
+
header_1 :{ "Content-Type": "application/x-www-form-urlencoded"}
|
468
|
+
header_2 :{ "Content-Length": "4"}
|
469
|
+
should_keep_alive :1
|
470
|
+
http_major :1
|
471
|
+
http_minor :1
|
472
|
+
|
473
|
+
name :eat CRLF between requests even if "Connection: close" is set
|
474
|
+
raw :"POST / HTTP/1.1\r\nHost: www.example.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 4\r\nConnection: close\r\n\r\nq=42\r\n"
|
475
|
+
type :HTTP_REQUEST
|
476
|
+
method: HTTP_POST
|
477
|
+
status_code :0
|
478
|
+
request_path:/
|
479
|
+
request_url :/
|
480
|
+
fragment :
|
481
|
+
query_string:
|
482
|
+
body :"q=42"
|
483
|
+
body_size :0
|
484
|
+
header_0 :{ "Host": "www.example.com"}
|
485
|
+
header_1 :{ "Content-Type": "application/x-www-form-urlencoded"}
|
486
|
+
header_2 :{ "Content-Length": "4"}
|
487
|
+
header_3 :{ "Connection": "close"}
|
488
|
+
should_keep_alive :0
|
489
|
+
http_major :1
|
490
|
+
http_minor :1
|
491
|
+
|
492
|
+
name :PURGE request
|
493
|
+
raw :"PURGE /file.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n"
|
494
|
+
type :HTTP_REQUEST
|
495
|
+
method: UNKNOWN
|
496
|
+
status_code :0
|
497
|
+
request_path:/file.txt
|
498
|
+
request_url :/file.txt
|
499
|
+
fragment :
|
500
|
+
query_string:
|
501
|
+
body :""
|
502
|
+
body_size :0
|
503
|
+
header_0 :{ "Host": "www.example.com"}
|
504
|
+
should_keep_alive :1
|
437
505
|
http_major :1
|
438
506
|
http_minor :1
|
439
507
|
|
@@ -457,7 +525,6 @@ header_5 :{ "Cache-Control": "public, max-age=2592000"}
|
|
457
525
|
header_6 :{ "Server": "gws"}
|
458
526
|
header_7 :{ "Content-Length": "219 "}
|
459
527
|
should_keep_alive :1
|
460
|
-
upgrade :0
|
461
528
|
http_major :1
|
462
529
|
http_minor :1
|
463
530
|
|
@@ -478,7 +545,6 @@ header_2 :{ "X-Powered-By": "Servlet/2.5 JSP/2.1"}
|
|
478
545
|
header_3 :{ "Content-Type": "text/xml; charset=utf-8"}
|
479
546
|
header_4 :{ "Connection": "close"}
|
480
547
|
should_keep_alive :0
|
481
|
-
upgrade :0
|
482
548
|
http_major :1
|
483
549
|
http_minor :1
|
484
550
|
|
@@ -493,8 +559,7 @@ fragment :
|
|
493
559
|
query_string:
|
494
560
|
body :""
|
495
561
|
body_size :0
|
496
|
-
should_keep_alive :
|
497
|
-
upgrade :0
|
562
|
+
should_keep_alive :0
|
498
563
|
http_major :1
|
499
564
|
http_minor :1
|
500
565
|
|
@@ -509,8 +574,7 @@ fragment :
|
|
509
574
|
query_string:
|
510
575
|
body :""
|
511
576
|
body_size :0
|
512
|
-
should_keep_alive :
|
513
|
-
upgrade :0
|
577
|
+
should_keep_alive :0
|
514
578
|
http_major :1
|
515
579
|
http_minor :1
|
516
580
|
|
@@ -528,7 +592,6 @@ body_size :65
|
|
528
592
|
header_0 :{ "Content-Type": "text/plain"}
|
529
593
|
header_1 :{ "Transfer-Encoding": "chunked"}
|
530
594
|
should_keep_alive :1
|
531
|
-
upgrade :0
|
532
595
|
http_major :1
|
533
596
|
http_minor :1
|
534
597
|
|
@@ -546,7 +609,6 @@ body_size :0
|
|
546
609
|
header_0 :{ "Content-Type": "text/html; charset=utf-8"}
|
547
610
|
header_1 :{ "Connection": "close"}
|
548
611
|
should_keep_alive :0
|
549
|
-
upgrade :0
|
550
612
|
http_major :1
|
551
613
|
http_minor :1
|
552
614
|
|
@@ -566,7 +628,6 @@ header_1 :{ "Content-Length": "11"}
|
|
566
628
|
header_2 :{ "Proxy-Connection": "close"}
|
567
629
|
header_3 :{ "Date": "Thu, 31 Dec 2009 20:55:48 +0000"}
|
568
630
|
should_keep_alive :0
|
569
|
-
upgrade :0
|
570
631
|
http_major :1
|
571
632
|
http_minor :1
|
572
633
|
|
@@ -586,7 +647,6 @@ header_1 :{ "Content-Type": "text/xml"}
|
|
586
647
|
header_2 :{ "Content-Length": "0"}
|
587
648
|
header_3 :{ "DCLK_imp": "v7;x;114750856;0-0;0;17820020;0/0;21603567/21621457/1;;~okv=;dcmt=text/xml;;~cs=o"}
|
588
649
|
should_keep_alive :1
|
589
|
-
upgrade :0
|
590
650
|
http_major :1
|
591
651
|
http_minor :1
|
592
652
|
|
@@ -611,33 +671,9 @@ header_6 :{ "Content-Length": "0"}
|
|
611
671
|
header_7 :{ "Content-Type": "text/html; charset=UTF-8"}
|
612
672
|
header_8 :{ "Connection": "keep-alive"}
|
613
673
|
should_keep_alive :1
|
614
|
-
upgrade :0
|
615
674
|
http_major :1
|
616
675
|
http_minor :0
|
617
676
|
|
618
|
-
name :field space
|
619
|
-
raw :"HTTP/1.1 200 OK\r\nServer: Microsoft-IIS/6.0\r\nX-Powered-By: ASP.NET\r\nen-US Content-Type: text/xml\r\nContent-Type: text/xml\r\nContent-Length: 16\r\nDate: Fri, 23 Jul 2010 18:45:38 GMT\r\nConnection: keep-alive\r\n\r\n<xml>hello</xml>"
|
620
|
-
type :HTTP_RESPONSE
|
621
|
-
method: HTTP_DELETE
|
622
|
-
status_code :200
|
623
|
-
request_path:
|
624
|
-
request_url :
|
625
|
-
fragment :
|
626
|
-
query_string:
|
627
|
-
body :"<xml>hello</xml>"
|
628
|
-
body_size :0
|
629
|
-
header_0 :{ "Server": "Microsoft-IIS/6.0"}
|
630
|
-
header_1 :{ "X-Powered-By": "ASP.NET"}
|
631
|
-
header_2 :{ "en-US Content-Type": "text/xml"}
|
632
|
-
header_3 :{ "Content-Type": "text/xml"}
|
633
|
-
header_4 :{ "Content-Length": "16"}
|
634
|
-
header_5 :{ "Date": "Fri, 23 Jul 2010 18:45:38 GMT"}
|
635
|
-
header_6 :{ "Connection": "keep-alive"}
|
636
|
-
should_keep_alive :1
|
637
|
-
upgrade :0
|
638
|
-
http_major :1
|
639
|
-
http_minor :1
|
640
|
-
|
641
677
|
name :field underscore
|
642
678
|
raw :"HTTP/1.1 200 OK\r\nDate: Tue, 28 Sep 2010 01:14:13 GMT\r\nServer: Apache\r\nCache-Control: no-cache, must-revalidate\r\nExpires: Mon, 26 Jul 1997 05:00:00 GMT\r\n.et-Cookie: PlaxoCS=1274804622353690521; path=/; domain=.plaxo.com\r\nVary: Accept-Encoding\r\n_eep-Alive: timeout=45\r\n_onnection: Keep-Alive\r\nTransfer-Encoding: chunked\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n0\r\n\r\n"
|
643
679
|
type :HTTP_RESPONSE
|
@@ -661,7 +697,6 @@ header_8 :{ "Transfer-Encoding": "chunked"}
|
|
661
697
|
header_9 :{ "Content-Type": "text/html"}
|
662
698
|
header_10 :{ "Connection": "close"}
|
663
699
|
should_keep_alive :0
|
664
|
-
upgrade :0
|
665
700
|
http_major :1
|
666
701
|
http_minor :1
|
667
702
|
|
@@ -680,7 +715,131 @@ header_0 :{ "Date": "Fri, 5 Nov 2010 23:07:12 GMT+2"}
|
|
680
715
|
header_1 :{ "Content-Length": "0"}
|
681
716
|
header_2 :{ "Connection": "close"}
|
682
717
|
should_keep_alive :0
|
683
|
-
|
718
|
+
http_major :1
|
719
|
+
http_minor :1
|
720
|
+
|
721
|
+
name :http version 0.9
|
722
|
+
raw :"HTTP/0.9 200 OK\r\n\r\n"
|
723
|
+
type :HTTP_RESPONSE
|
724
|
+
method: HTTP_DELETE
|
725
|
+
status_code :200
|
726
|
+
request_path:
|
727
|
+
request_url :
|
728
|
+
fragment :
|
729
|
+
query_string:
|
730
|
+
body :""
|
731
|
+
body_size :0
|
732
|
+
should_keep_alive :0
|
733
|
+
http_major :0
|
734
|
+
http_minor :9
|
735
|
+
|
736
|
+
name :neither content-length nor transfer-encoding response
|
737
|
+
raw :"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nhello world"
|
738
|
+
type :HTTP_RESPONSE
|
739
|
+
method: HTTP_DELETE
|
740
|
+
status_code :200
|
741
|
+
request_path:
|
742
|
+
request_url :
|
743
|
+
fragment :
|
744
|
+
query_string:
|
745
|
+
body :"hello world"
|
746
|
+
body_size :0
|
747
|
+
header_0 :{ "Content-Type": "text/plain"}
|
748
|
+
should_keep_alive :0
|
749
|
+
http_major :1
|
750
|
+
http_minor :1
|
751
|
+
|
752
|
+
name :HTTP/1.0 with keep-alive and EOF-terminated 200 status
|
753
|
+
raw :"HTTP/1.0 200 OK\r\nConnection: keep-alive\r\n\r\n"
|
754
|
+
type :HTTP_RESPONSE
|
755
|
+
method: HTTP_DELETE
|
756
|
+
status_code :200
|
757
|
+
request_path:
|
758
|
+
request_url :
|
759
|
+
fragment :
|
760
|
+
query_string:
|
761
|
+
body :""
|
762
|
+
body_size :0
|
763
|
+
header_0 :{ "Connection": "keep-alive"}
|
764
|
+
should_keep_alive :0
|
765
|
+
http_major :1
|
766
|
+
http_minor :0
|
767
|
+
|
768
|
+
name :HTTP/1.0 with keep-alive and a 204 status
|
769
|
+
raw :"HTTP/1.0 204 No content\r\nConnection: keep-alive\r\n\r\n"
|
770
|
+
type :HTTP_RESPONSE
|
771
|
+
method: HTTP_DELETE
|
772
|
+
status_code :204
|
773
|
+
request_path:
|
774
|
+
request_url :
|
775
|
+
fragment :
|
776
|
+
query_string:
|
777
|
+
body :""
|
778
|
+
body_size :0
|
779
|
+
header_0 :{ "Connection": "keep-alive"}
|
780
|
+
should_keep_alive :1
|
781
|
+
http_major :1
|
782
|
+
http_minor :0
|
783
|
+
|
784
|
+
name :HTTP/1.1 with an EOF-terminated 200 status
|
785
|
+
raw :"HTTP/1.1 200 OK\r\n\r\n"
|
786
|
+
type :HTTP_RESPONSE
|
787
|
+
method: HTTP_DELETE
|
788
|
+
status_code :200
|
789
|
+
request_path:
|
790
|
+
request_url :
|
791
|
+
fragment :
|
792
|
+
query_string:
|
793
|
+
body :""
|
794
|
+
body_size :0
|
795
|
+
should_keep_alive :0
|
796
|
+
http_major :1
|
797
|
+
http_minor :1
|
798
|
+
|
799
|
+
name :HTTP/1.1 with a 204 status
|
800
|
+
raw :"HTTP/1.1 204 No content\r\n\r\n"
|
801
|
+
type :HTTP_RESPONSE
|
802
|
+
method: HTTP_DELETE
|
803
|
+
status_code :204
|
804
|
+
request_path:
|
805
|
+
request_url :
|
806
|
+
fragment :
|
807
|
+
query_string:
|
808
|
+
body :""
|
809
|
+
body_size :0
|
810
|
+
should_keep_alive :1
|
811
|
+
http_major :1
|
812
|
+
http_minor :1
|
813
|
+
|
814
|
+
name :HTTP/1.1 with a 204 status and keep-alive disabled
|
815
|
+
raw :"HTTP/1.1 204 No content\r\nConnection: close\r\n\r\n"
|
816
|
+
type :HTTP_RESPONSE
|
817
|
+
method: HTTP_DELETE
|
818
|
+
status_code :204
|
819
|
+
request_path:
|
820
|
+
request_url :
|
821
|
+
fragment :
|
822
|
+
query_string:
|
823
|
+
body :""
|
824
|
+
body_size :0
|
825
|
+
header_0 :{ "Connection": "close"}
|
826
|
+
should_keep_alive :0
|
827
|
+
http_major :1
|
828
|
+
http_minor :1
|
829
|
+
|
830
|
+
name :HTTP/1.1 with chunked endocing and a 200 response
|
831
|
+
raw :"HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n0\r\n\r\n"
|
832
|
+
type :HTTP_RESPONSE
|
833
|
+
method: HTTP_DELETE
|
834
|
+
status_code :200
|
835
|
+
request_path:
|
836
|
+
request_url :
|
837
|
+
fragment :
|
838
|
+
query_string:
|
839
|
+
body :""
|
840
|
+
body_size :0
|
841
|
+
header_0 :{ "Transfer-Encoding": "chunked"}
|
842
|
+
should_keep_alive :1
|
684
843
|
http_major :1
|
685
844
|
http_minor :1
|
686
845
|
|