protocol-http1 0.17.0 → 0.19.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d4495522852a254da8e7864cc481d08b807df88e786eafe2e40b2a87ac512ae
4
- data.tar.gz: 9f505c0853068baaf3eb4871c10f782b03e9221437254d61d3741b5430ed81ec
3
+ metadata.gz: d7a6cf842ade6ce23877b507858ce512bfcc0de8866d509c7a0fdb0244a24269
4
+ data.tar.gz: 72021fd23b1e6be7335af6022d419f1e045f5bf11f1e534ddad0d6fb5fa2d994
5
5
  SHA512:
6
- metadata.gz: 8d727d33628c7cb500738fd0bb090ca32d3b2cffad056d4c0d6032bc2b619e6c35f511ce383c9155bbc214e487cce6a5a34a372671c8173a344cd73315946f07
7
- data.tar.gz: 4ab44f130d572da7dd2cacc96ea476aa07b4072fc4489ce5aeaaf0b226b99287d1af37c3e52f4a5ffcb12e5acd0bd1ede3fcb34cb199b0eb554909684a15787f
6
+ metadata.gz: 96e579125e0510b1a0f3d2fb8c292fb8d4b24da565031b5b07aa329514a7e181af83cf8dfb3bb7ab35b88a1963c7d13e60a27c319c86d649d8e84effee8e58a7
7
+ data.tar.gz: 87f542d92abd2aea50a88c5601743a6298beb91ddddb22580b61f14c9ef078c797ca529d589233888e8f92fc34ddc17fdc8df2d121bcfd5811245de094c8da18
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- l�'����-�,.d����[,�#y��߽���,�|բ(��F}���q��Co�����a�թH�9
1
+ � �ߝ�/bg�tR���V����Mp�~�w����3<�_~���a�G��� ����S�v��-OBJ��
2
+ �;#��qBk�8_�G(F\������#�P��=
3
+ �=#���J3�g���45�?�A�,+ؙ>���I��%s
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2019-2022, by Samuel Williams.
4
+ # Copyright, 2019-2024, by Samuel Williams.
5
5
 
6
6
  require 'protocol/http/body/readable'
7
7
 
@@ -14,15 +14,17 @@ module Protocol
14
14
  # block_size may be removed in the future. It is better managed by stream.
15
15
  def initialize(stream)
16
16
  @stream = stream
17
+ @empty = false
17
18
  end
18
19
 
19
20
  def empty?
20
- @stream.eof? or @stream.closed?
21
+ @empty or @stream.closed?
21
22
  end
22
23
 
23
24
  def close(error = nil)
24
25
  # We can't really do anything in this case except close the connection.
25
26
  @stream.close
27
+ @empty = true
26
28
 
27
29
  super
28
30
  end
@@ -31,6 +33,8 @@ module Protocol
31
33
  def read
32
34
  @stream.readpartial(BLOCK_SIZE)
33
35
  rescue EOFError, IOError
36
+ @empty = true
37
+
34
38
  # I noticed that in some cases you will get EOFError, and in other cases IOError!?
35
39
  return nil
36
40
  end
@@ -45,6 +49,8 @@ module Protocol
45
49
 
46
50
  def join
47
51
  @stream.read
52
+ ensure
53
+ @empty = true
48
54
  end
49
55
 
50
56
  def inspect
@@ -5,6 +5,7 @@
5
5
  # Copyright, 2019, by Brian Morearty.
6
6
  # Copyright, 2020, by Bruno Sutic.
7
7
  # Copyright, 2023, by Thomas Morgan.
8
+ # Copyright, 2024, by Anton Zhuravsky.
8
9
 
9
10
  require 'protocol/http/headers'
10
11
 
@@ -104,6 +105,13 @@ module Protocol
104
105
  def write_upgrade_header(upgrade)
105
106
  @stream.write("connection: upgrade\r\nupgrade: #{upgrade}\r\n")
106
107
  end
108
+
109
+ # Indicates whether the connection has been hijacked meaning its
110
+ # IO has been handed over and is not usable anymore.
111
+ # @return [Boolean] hijack status
112
+ def hijacked?
113
+ @stream.nil?
114
+ end
107
115
 
108
116
  # Effectively close the connection and return the underlying IO.
109
117
  # @return [IO] the underlying non-blocking IO.
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2019-2023, by Samuel Williams.
4
+ # Copyright, 2019-2024, by Samuel Williams.
5
5
 
6
6
  module Protocol
7
7
  module HTTP1
8
- VERSION = "0.17.0"
8
+ VERSION = "0.19.0"
9
9
  end
10
10
  end
data/license.md CHANGED
@@ -1,10 +1,11 @@
1
1
  # MIT License
2
2
 
3
- Copyright, 2019-2023, by Samuel Williams.
3
+ Copyright, 2019-2024, by Samuel Williams.
4
4
  Copyright, 2019, by Brian Morearty.
5
5
  Copyright, 2020, by Olle Jonsson.
6
6
  Copyright, 2020, by Bruno Sutic.
7
7
  Copyright, 2023, by Thomas Morgan.
8
+ Copyright, 2024, by Anton Zhuravsky.
8
9
 
9
10
  Permission is hereby granted, free of charge, to any person obtaining a copy
10
11
  of this software and associated documentation files (the "Software"), to deal
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,11 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protocol-http1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  - Thomas Morgan
9
+ - Anton Zhuravsky
9
10
  - Brian Morearty
10
11
  - Bruno Sutic
11
12
  - Olle Jonsson
@@ -41,7 +42,7 @@ cert_chain:
41
42
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
42
43
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
43
44
  -----END CERTIFICATE-----
44
- date: 2023-12-26 00:00:00.000000000 Z
45
+ date: 2024-04-05 00:00:00.000000000 Z
45
46
  dependencies:
46
47
  - !ruby/object:Gem::Dependency
47
48
  name: protocol-http
@@ -92,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
93
  - !ruby/object:Gem::Version
93
94
  version: '0'
94
95
  requirements: []
95
- rubygems_version: 3.4.10
96
+ rubygems_version: 3.5.3
96
97
  signing_key:
97
98
  specification_version: 4
98
99
  summary: A low level implementation of the HTTP/1 protocol.
metadata.gz.sig CHANGED
Binary file