protocol-http1 0.14.0 → 0.14.3

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.

Potentially problematic release.


This version of protocol-http1 might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 972a37dfc7d2658f54c796f85054bec8bdb2827e595a42b874d276d320015aa7
4
- data.tar.gz: d50ec1a04e61727cb104e7d1224e90bd8c4dc63f41e71854b2376463456ee8ba
3
+ metadata.gz: 41a5950eeaafb157d2d4e52b00eb3ea42f509b6c43514d3cf5c5449912ab940f
4
+ data.tar.gz: e8f2b0f46f39b8e332ee45a732aa186b24f9d83cdeec2bd13b2ac619081dbfa6
5
5
  SHA512:
6
- metadata.gz: d19773f15978c311cfba29096fdf6026279c04ee458db6492811368f9251cd54cb697db12f06f748d3130308cf91341a0377933a8c57f07dfceb805380212da1
7
- data.tar.gz: 2b804b15e98404899673468bc63f35adf3417d0e6a31e54e3cb77d262c65918242b062de9fa72e302c5b99403482ff1b8f5ec3ce43bf0bb43215d21d0dd91cac
6
+ metadata.gz: 7d46d17db36223ddc01cab220eb12780aa463a0a87e520b06b375248a4d79c74512e1c5fd2299bb30aa8479514657f8611508114954ef03b8edf867590d74bf2
7
+ data.tar.gz: a627ea0d0dfabe5759d1b87c575e5ab17eea367acc2b622155443cf28ba9bd7e9f4368a7d05fcc8ef58bcac9dcb80b06a4fb95de3d7189993fc00818ba37cb23
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,4 @@
1
+ {@'ݑ��W� ��T��J;|>�u�ܵ�2ZB
2
+ Uԑ�����=Nߔ+�y#*���KrH-�P9�v�P�5� ��q2A�v �ɓG+� �%�F��v3��_w=
3
+ ��6V�2!1i[���-+�o��!�&���H��M,RoMM3&����4��ˬ�0���g*�r!
4
+ �/&���x›
@@ -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 @persistent and version == HTTP11
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)
@@ -22,6 +22,6 @@
22
22
 
23
23
  module Protocol
24
24
  module HTTP1
25
- VERSION = "0.14.0"
25
+ VERSION = "0.14.3"
26
26
  end
27
27
  end
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.0
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
- date: 2021-04-23 00:00:00.000000000 Z
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.2
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