protocol-http1 0.14.0 → 0.14.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of protocol-http1 might be problematic. Click here for more details.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +4 -0
- data/lib/protocol/http1/body/chunked.rb +7 -2
- data/lib/protocol/http1/connection.rb +8 -1
- data/lib/protocol/http1/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +35 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41a5950eeaafb157d2d4e52b00eb3ea42f509b6c43514d3cf5c5449912ab940f
|
4
|
+
data.tar.gz: e8f2b0f46f39b8e332ee45a732aa186b24f9d83cdeec2bd13b2ac619081dbfa6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d46d17db36223ddc01cab220eb12780aa463a0a87e520b06b375248a4d79c74512e1c5fd2299bb30aa8479514657f8611508114954ef03b8edf867590d74bf2
|
7
|
+
data.tar.gz: a627ea0d0dfabe5759d1b87c575e5ab17eea367acc2b622155443cf28ba9bd7e9f4368a7d05fcc8ef58bcac9dcb80b06a4fb95de3d7189993fc00818ba37cb23
|
checksums.yaml.gz.sig
ADDED
@@ -56,6 +56,7 @@ module Protocol
|
|
56
56
|
def read
|
57
57
|
return nil if @finished
|
58
58
|
|
59
|
+
# It is possible this line contains chunk extension, so we use `to_i` to only consider the initial integral part:
|
59
60
|
length = read_line.to_i(16)
|
60
61
|
|
61
62
|
if length == 0
|
@@ -84,12 +85,16 @@ module Protocol
|
|
84
85
|
|
85
86
|
private
|
86
87
|
|
87
|
-
def read_line
|
88
|
+
def read_line?
|
88
89
|
@stream.gets(CRLF, chomp: true)
|
89
90
|
end
|
90
91
|
|
92
|
+
def read_line
|
93
|
+
read_line? or raise EOFError
|
94
|
+
end
|
95
|
+
|
91
96
|
def read_trailer
|
92
|
-
while line = read_line
|
97
|
+
while line = read_line?
|
93
98
|
# Empty line indicates end of trailer:
|
94
99
|
break if line.empty?
|
95
100
|
|
@@ -366,6 +366,13 @@ module Protocol
|
|
366
366
|
end
|
367
367
|
|
368
368
|
def write_body(version, body, head = false, trailer = nil)
|
369
|
+
# HTTP/1.0 cannot in any case handle trailers.
|
370
|
+
if version == HTTP10 # or te: trailers was not present (strictly speaking not required.)
|
371
|
+
trailer = nil
|
372
|
+
end
|
373
|
+
|
374
|
+
# While writing the body, we don't know if trailers will be added. We must choose a different body format depending on whether there is the chance of trailers, even if trailer.any? is currently false.
|
375
|
+
|
369
376
|
if body.nil?
|
370
377
|
write_connection_header(version)
|
371
378
|
write_empty_body(body)
|
@@ -376,7 +383,7 @@ module Protocol
|
|
376
383
|
# Even thought this code is the same as the first clause `body.nil?`, HEAD responses have an empty body but still carry a content length. `write_fixed_length_body` takes care of this appropriately.
|
377
384
|
write_connection_header(version)
|
378
385
|
write_empty_body(body)
|
379
|
-
elsif
|
386
|
+
elsif version == HTTP11
|
380
387
|
write_connection_header(version)
|
381
388
|
# We specifically ensure that non-persistent connections do not use chunked response, so that hijacking works as expected.
|
382
389
|
write_chunked_body(body, head, trailer)
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protocol-http1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
|
+
- Brian Morearty
|
9
|
+
- Bruno Sutic
|
10
|
+
- Olle Jonsson
|
8
11
|
autorequire:
|
9
12
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
13
|
+
cert_chain:
|
14
|
+
- |
|
15
|
+
-----BEGIN CERTIFICATE-----
|
16
|
+
MIIEhDCCAuygAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MTUwMwYDVQQDDCxzYW11
|
17
|
+
ZWwud2lsbGlhbXMvREM9b3Jpb250cmFuc2Zlci9EQz1jby9EQz1uejAeFw0yMTA4
|
18
|
+
MTYwNjMzNDRaFw0yMjA4MTYwNjMzNDRaMDcxNTAzBgNVBAMMLHNhbXVlbC53aWxs
|
19
|
+
aWFtcy9EQz1vcmlvbnRyYW5zZmVyL0RDPWNvL0RDPW56MIIBojANBgkqhkiG9w0B
|
20
|
+
AQEFAAOCAY8AMIIBigKCAYEAyXLSS/cw+fXJ5e7hi+U/TeChPWeYdwJojDsFY1xr
|
21
|
+
xvtqbTTL8gbLHz5LW3QD2nfwCv3qTlw0qI3Ie7a9VMJMbSvgVEGEfQirqIgJXWMj
|
22
|
+
eNMDgKsMJtC7u/43abRKx7TCURW3iWyR19NRngsJJmaR51yGGGm2Kfsr+JtKKLtL
|
23
|
+
L188Wm3f13KAx7QJU8qyuBnj1/gWem076hzdA7xi1DbrZrch9GCRz62xymJlrJHn
|
24
|
+
9iZEZ7AxrS7vokhMlzSr/XMUihx/8aFKtk+tMLClqxZSmBWIErWdicCGTULXCBNb
|
25
|
+
E/mljo4zEVKhlTWpJklMIhr55ZRrSarKFuW7en0+tpJrfsYiAmXMJNi4XAYJH7uL
|
26
|
+
rgJuJwSaa/dMz+VmUoo7VKtSfCoOI+6v5/z0sK3oT6sG6ZwyI47DBq2XqNC6tnAj
|
27
|
+
w+XmCywiTQrFzMMAvcA7rPI4F0nU1rZId51rOvvfxaONp+wgTi4P8owZLw0/j0m4
|
28
|
+
8C20DYi6EYx4AHDXiLpElWh3AgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8E
|
29
|
+
BAMCBLAwHQYDVR0OBBYEFB6ZaeWKxQjGTI+pmz7cKRmMIywwMC4GA1UdEQQnMCWB
|
30
|
+
I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWB
|
31
|
+
I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEB
|
32
|
+
CwUAA4IBgQBVoM+pu3dpdUhZM1w051iw5GfiqclAr1Psypf16Tiod/ho//4oAu6T
|
33
|
+
9fj3DPX/acWV9P/FScvqo4Qgv6g4VWO5ZU7z2JmPoTXZtYMunRAmQPFL/gSUc6aK
|
34
|
+
vszMHIyhtyzRc6DnfW2AiVOjMBjaYv8xXZc9bduniRVPrLR4J7ozmGLh4o4uJp7w
|
35
|
+
x9KCFaR8Lvn/r0oJWJOqb/DMAYI83YeN2Dlt3jpwrsmsONrtC5S3gOUle5afSGos
|
36
|
+
bYt5ocnEpKSomR9ZtnCGljds/aeO1Xgpn2r9HHcjwnH346iNrnHmMlC7BtHUFPDg
|
37
|
+
Ts92S47PTOXzwPBDsrFiq3VLbRjHSwf8rpqybQBH9MfzxGGxTaETQYOd6b4e4Ag6
|
38
|
+
y92abGna0bmIEb4+Tx9rQ10Uijh1POzvr/VTH4bbIPy9FbKrRsIQ24qDbNJRtOpE
|
39
|
+
RAOsIl+HOBTb252nx1kIRN5hqQx272AJCbCjKx8egcUQKffFVVCI0nye09v5CK+a
|
40
|
+
HiLJ8VOFx6w=
|
41
|
+
-----END CERTIFICATE-----
|
42
|
+
date: 2022-05-01 00:00:00.000000000 Z
|
12
43
|
dependencies:
|
13
44
|
- !ruby/object:Gem::Dependency
|
14
45
|
name: protocol-http
|
@@ -127,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
158
|
- !ruby/object:Gem::Version
|
128
159
|
version: '0'
|
129
160
|
requirements: []
|
130
|
-
rubygems_version: 3.1.
|
161
|
+
rubygems_version: 3.1.6
|
131
162
|
signing_key:
|
132
163
|
specification_version: 4
|
133
164
|
summary: A low level implementation of the HTTP/1 protocol.
|
metadata.gz.sig
ADDED
Binary file
|