protocol-http2 0.26.0 → 0.26.1

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: 79326887f1adad2dd75f4d18db606e315f00f67fdc1d402bc301750a4dbd5ffb
4
- data.tar.gz: 03aa0c871daec5f5cc4a96e6c74b794b1521f1d31aac3e3b3ee51ab5ec6eb4ee
3
+ metadata.gz: 88d933bf4cd35251d305cd05fa6654acfbeee446982af751bd221e976dff2313
4
+ data.tar.gz: e78f3a10d74fccfd63d098af1910c0b846b093aeb446860da5105e306410b401
5
5
  SHA512:
6
- metadata.gz: aa3a73466c2fe93bf092fb225e67a60fa861a6225e2234cc71e620651d8900b6344546cc7aa834bb7ccda6a7bfe62c09c329215bbe7b7abe3661c7a3c9c57baf
7
- data.tar.gz: 6d22ca63b5db8bb4e08b5dac9c9b19e3949bd148f47c48b786cd51b176ddb9d67d58a961cba51939c6d78572e8338f88b2c38f61f2eb0a61165afff84224cef5
6
+ metadata.gz: e2a037ad5d8c96c9c8dc6f2352a7ebdeaf3b0b52354c408e965cb689439eb5d94ec2dc9e1d4ef27903c5334c1310a852d6896cc9f52d9f60d917d92e230ffae1
7
+ data.tar.gz: 5472ccf116f877b341d5793f7166656c924d6c6c8ca0a8080c86856834109ddc8bd0993a41e080f50d80cbaeffb9453c50731dbc96a97007ea1e7434d83d1f39
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2019-2025, by Samuel Williams.
4
+ # Copyright, 2019-2026, by Samuel Williams.
5
5
 
6
6
  require "protocol/http/error"
7
7
 
@@ -50,6 +50,33 @@ module Protocol
50
50
 
51
51
  # The endpoint requires that HTTP/1.1 be used instead of HTTP/2.
52
52
  HTTP_1_1_REQUIRED = 0xD
53
+
54
+ MESSAGES = {
55
+ NO_ERROR => "No error.",
56
+ PROTOCOL_ERROR => "Protocol error!",
57
+ INTERNAL_ERROR => "Internal error!",
58
+ FLOW_CONTROL_ERROR => "Flow control error!",
59
+ SETTINGS_TIMEOUT => "Settings timeout!",
60
+ STREAM_CLOSED => "Stream closed!",
61
+ FRAME_SIZE_ERROR => "Frame size error!",
62
+ REFUSED_STREAM => "Stream refused.",
63
+ CANCEL => "Stream cancelled.",
64
+ COMPRESSION_ERROR => "Compression error!",
65
+ CONNECT_ERROR => "Connect error!",
66
+ ENHANCE_YOUR_CALM => "Enhance your calm!",
67
+ INADEQUATE_SECURITY => "Inadequate security!",
68
+ HTTP_1_1_REQUIRED => "HTTP/1.1 required.",
69
+ }
70
+
71
+ # Get the message for a given HTTP/2 error code.
72
+ # @parameter code [Integer] The HTTP/2 error code.
73
+ # @returns [String] The error message.
74
+ def self.message_for(code)
75
+ return MESSAGES.fetch(code) do
76
+ # Unknown error codes are allowed by the protocol, but don't have a static message.
77
+ "Unknown code: #{code}!"
78
+ end
79
+ end
53
80
  end
54
81
 
55
82
  # Raised if connection header is missing or invalid indicating that
@@ -62,6 +89,13 @@ module Protocol
62
89
  # which signals termination of the current connection. You *cannot*
63
90
  # recover from this exception, or any exceptions subclassed from it.
64
91
  class ProtocolError < Error
92
+ # Build a protocol error for a given HTTP/2 error code.
93
+ # @parameter code [Integer] The HTTP/2 error code.
94
+ # @returns [ProtocolError] The protocol error.
95
+ def self.for(code)
96
+ return self.new(Error.message_for(code), code)
97
+ end
98
+
65
99
  # Initialize a protocol error with message and error code.
66
100
  # @parameter message [String] The error message.
67
101
  # @parameter code [Integer] The HTTP/2 error code.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2019-2025, by Samuel Williams.
4
+ # Copyright, 2019-2026, by Samuel Williams.
5
5
 
6
6
  require_relative "connection"
7
7
 
@@ -253,7 +253,7 @@ module Protocol
253
253
  if error_code == REFUSED_STREAM
254
254
  error = ::Protocol::HTTP::RefusedError.new("Stream refused.")
255
255
  else
256
- error = StreamError.new("Stream closed!", error_code)
256
+ error = StreamError.for(error_code)
257
257
  end
258
258
  end
259
259
 
@@ -7,6 +7,6 @@
7
7
  module Protocol
8
8
  # @namespace
9
9
  module HTTP2
10
- VERSION = "0.26.0"
10
+ VERSION = "0.26.1"
11
11
  end
12
12
  end
data/readme.md CHANGED
@@ -14,6 +14,10 @@ Please see the [project documentation](https://socketry.github.io/protocol-http2
14
14
 
15
15
  Please see the [project releases](https://socketry.github.io/protocol-http2/releases/index) for all releases.
16
16
 
17
+ ### v0.26.1
18
+
19
+ - Improve `StreamError` messages for HTTP/2 stream reset error codes.
20
+
17
21
  ### v0.26.0
18
22
 
19
23
  - On RST\_STREAM with REFUSED\_STREAM, close the stream with `Protocol::HTTP::RefusedError` instead of `StreamError`.
@@ -55,11 +59,6 @@ Please see the [project releases](https://socketry.github.io/protocol-http2/rele
55
59
 
56
60
  - Reduced the number of window update frames sent to improve network efficiency.
57
61
 
58
- ### v0.19.3
59
-
60
- - Improved window update frame handling and performance optimizations.
61
- - Better implementation of `Window#inspect` for debugging.
62
-
63
62
  ## See Also
64
63
 
65
64
  - [Async::HTTP](https://github.com/socketry/async-http) - A high-level HTTP client and server implementation.
data/releases.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Releases
2
2
 
3
+ ## v0.26.1
4
+
5
+ - Improve `StreamError` messages for HTTP/2 stream reset error codes.
6
+
3
7
  ## v0.26.0
4
8
 
5
9
  - On RST\_STREAM with REFUSED\_STREAM, close the stream with `Protocol::HTTP::RefusedError` instead of `StreamError`.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protocol-http2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.26.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  requirements: []
126
- rubygems_version: 4.0.6
126
+ rubygems_version: 4.0.10
127
127
  specification_version: 4
128
128
  summary: A low level implementation of the HTTP/2 protocol.
129
129
  test_files: []
metadata.gz.sig CHANGED
Binary file