protocol-http1 0.17.0 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
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