httpx 0.22.4 → 0.22.5
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 +4 -4
- data/doc/release_notes/0_22_5.md +6 -0
- data/lib/httpx/adapters/datadog.rb +11 -1
- data/lib/httpx/adapters/sentry.rb +11 -1
- data/lib/httpx/callbacks.rb +3 -3
- data/lib/httpx/connection.rb +2 -1
- data/lib/httpx/pool.rb +6 -2
- data/lib/httpx/resolver/multi.rb +1 -6
- data/lib/httpx/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1346874cf311c485468e6c99054806adfde48a145d9b012a9a2a2e56a9ae3a8b
|
4
|
+
data.tar.gz: 4b345ffef12d65d66787e59bc3ed8c01619a343246ddd433a1a0e807029f14de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dfa20f805f0421917c6aee58ff2bedb31173d4b227fa76c6b23d1af9ee903242f26ab12474907400d5e6dae7b0fe4084c771689e4e6391ff6227277a7beef9b
|
7
|
+
data.tar.gz: 7d8a89d569f0b8abc775eae0563450e1e9470c7a74cd7aa249abc49570901f6ceb0548ba5236b1575ba17e9f8a17c433cea12a1708a9df3b520c599304bcd458
|
@@ -0,0 +1,6 @@
|
|
1
|
+
# 0.22.5
|
2
|
+
|
3
|
+
## Bugfixes
|
4
|
+
|
5
|
+
* `datadog` and `sentry` integrations did not account for `Connection#send` being possibly called multiple times (something possible for connection coalescing, max requests exhaustion, or Happy Eyeballs 2), and were registering multiple `on(:response)` callbacks. Requests are now marked when decorated the first time.
|
6
|
+
* Happy Eyeballs handshake "connect errors" routine is now taking both name resolution errors, as well as TLS handshake errors, into account, when the handshake fails.
|
@@ -158,9 +158,19 @@ module TRACING_MODULE # rubocop:disable Naming/ClassAndModuleCamelCase
|
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
161
|
+
module RequestMethods
|
162
|
+
def __datadog_enable_trace!
|
163
|
+
return super if @__datadog_enable_trace
|
164
|
+
|
165
|
+
RequestTracer.new(self).call
|
166
|
+
@__datadog_enable_trace = true
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
161
170
|
module ConnectionMethods
|
162
171
|
def send(request)
|
163
|
-
|
172
|
+
request.__datadog_enable_trace!
|
173
|
+
|
164
174
|
super
|
165
175
|
end
|
166
176
|
end
|
@@ -89,9 +89,19 @@ module HTTPX::Plugins
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
+
module RequestMethods
|
93
|
+
def __sentry_enable_trace!
|
94
|
+
return super if @__sentry_enable_trace
|
95
|
+
|
96
|
+
Tracer.call(self)
|
97
|
+
@__sentry_enable_trace = true
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
92
101
|
module ConnectionMethods
|
93
102
|
def send(request)
|
94
|
-
|
103
|
+
request.__sentry_enable_trace!
|
104
|
+
|
95
105
|
super
|
96
106
|
end
|
97
107
|
end
|
data/lib/httpx/callbacks.rb
CHANGED
@@ -22,12 +22,12 @@ module HTTPX
|
|
22
22
|
callbacks(type).delete_if { |pr| :delete == pr.call(*args) } # rubocop:disable Style/YodaCondition
|
23
23
|
end
|
24
24
|
|
25
|
-
protected
|
26
|
-
|
27
25
|
def callbacks_for?(type)
|
28
|
-
@callbacks.key?(type) &&
|
26
|
+
@callbacks.key?(type) && @callbacks[type].any?
|
29
27
|
end
|
30
28
|
|
29
|
+
protected
|
30
|
+
|
31
31
|
def callbacks(type = nil)
|
32
32
|
return @callbacks unless type
|
33
33
|
|
data/lib/httpx/connection.rb
CHANGED
@@ -538,12 +538,13 @@ module HTTPX
|
|
538
538
|
# connect errors, exit gracefully
|
539
539
|
error = ConnectionError.new(e.message)
|
540
540
|
error.set_backtrace(e.backtrace)
|
541
|
-
connecting? &&
|
541
|
+
connecting? && callbacks_for?(:connect_error) ? emit(:connect_error, error) : handle_error(error)
|
542
542
|
@state = :closed
|
543
543
|
emit(:close)
|
544
544
|
rescue TLSError => e
|
545
545
|
# connect errors, exit gracefully
|
546
546
|
handle_error(e)
|
547
|
+
connecting? && callbacks_for?(:connect_error) ? emit(:connect_error, e) : handle_error(e)
|
547
548
|
@state = :closed
|
548
549
|
emit(:close)
|
549
550
|
end
|
data/lib/httpx/pool.rb
CHANGED
@@ -141,8 +141,9 @@ module HTTPX
|
|
141
141
|
connection.once(:connect_error) do |err|
|
142
142
|
if new_connection.connecting?
|
143
143
|
new_connection.merge(connection)
|
144
|
+
connection.force_reset
|
144
145
|
else
|
145
|
-
connection.handle_error
|
146
|
+
connection.__send__(:handle_error, err)
|
146
147
|
end
|
147
148
|
end
|
148
149
|
|
@@ -156,8 +157,9 @@ module HTTPX
|
|
156
157
|
if connection.connecting?
|
157
158
|
# main connection has the requests
|
158
159
|
connection.merge(new_connection)
|
160
|
+
new_connection.force_reset
|
159
161
|
else
|
160
|
-
new_connection.handle_error
|
162
|
+
new_connection.__send__(:handle_error, err)
|
161
163
|
end
|
162
164
|
end
|
163
165
|
|
@@ -183,6 +185,8 @@ module HTTPX
|
|
183
185
|
end
|
184
186
|
|
185
187
|
def on_resolver_error(connection, error)
|
188
|
+
return connection.emit(:connect_error, error) if connection.connecting? && connection.callbacks_for?(:connect_error)
|
189
|
+
|
186
190
|
connection.emit(:error, error)
|
187
191
|
end
|
188
192
|
|
data/lib/httpx/resolver/multi.rb
CHANGED
@@ -64,12 +64,7 @@ module HTTPX
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def on_resolver_error(connection, error)
|
67
|
-
|
68
|
-
|
69
|
-
return unless @errors[connection].size >= @resolvers.size
|
70
|
-
|
71
|
-
errors = @errors.delete(connection)
|
72
|
-
emit(:error, connection, errors.first)
|
67
|
+
emit(:error, connection, error)
|
73
68
|
end
|
74
69
|
|
75
70
|
def on_resolver_close(resolver)
|
data/lib/httpx/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httpx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.22.
|
4
|
+
version: 0.22.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Cardoso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http-2-next
|
@@ -93,6 +93,7 @@ extra_rdoc_files:
|
|
93
93
|
- doc/release_notes/0_22_2.md
|
94
94
|
- doc/release_notes/0_22_3.md
|
95
95
|
- doc/release_notes/0_22_4.md
|
96
|
+
- doc/release_notes/0_22_5.md
|
96
97
|
- doc/release_notes/0_2_0.md
|
97
98
|
- doc/release_notes/0_2_1.md
|
98
99
|
- doc/release_notes/0_3_0.md
|
@@ -178,6 +179,7 @@ files:
|
|
178
179
|
- doc/release_notes/0_22_2.md
|
179
180
|
- doc/release_notes/0_22_3.md
|
180
181
|
- doc/release_notes/0_22_4.md
|
182
|
+
- doc/release_notes/0_22_5.md
|
181
183
|
- doc/release_notes/0_2_0.md
|
182
184
|
- doc/release_notes/0_2_1.md
|
183
185
|
- doc/release_notes/0_3_0.md
|
@@ -390,7 +392,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
390
392
|
- !ruby/object:Gem::Version
|
391
393
|
version: '0'
|
392
394
|
requirements: []
|
393
|
-
rubygems_version: 3.
|
395
|
+
rubygems_version: 3.3.7
|
394
396
|
signing_key:
|
395
397
|
specification_version: 4
|
396
398
|
summary: HTTPX, to the future, and beyond
|