sparoid 1.0.20 → 1.0.22

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: cd5b6193a911ddfbe06a7a01a2ad1abe3b2c4f60c090aaac4b6b2b6c6ac3dd3e
4
- data.tar.gz: 622b9465e33bc1b69072450cf619ac2dcf7bf6ac3b1a70276a5f56c4c0d36907
3
+ metadata.gz: 71a3d6d8370df36acaad83f5f03c0b29c6e5037856c33fcfa3e17a16c6f678ac
4
+ data.tar.gz: d1d2cd45e4c503af8e0390c5466ec113abfbbeab62a045d3edee274ac888557d
5
5
  SHA512:
6
- metadata.gz: 8e773ffe52658eecff5b673f0b886a7bd40118654d24602b5c7bd50dbd1dd9a37561b28d51e9dcc2d93557212081f282a6b855f026a22ef646e013ea4c827755
7
- data.tar.gz: bff75047af985b79ee7a1fc53c40abb3f6d15f5cad4cff86f94430cb599c246ce0a240e20e6c8fd1c4c53a8f79c447b142c69669093409979d10265ce6aa34f9
6
+ metadata.gz: e45e3482c4c500914b12764ea4f1a16e0bde44a4de1119b3b6884a2ba29264de0ad8be169d1c24e3be5c43c8da891d55177491e13229184000fb68b284857487
7
+ data.tar.gz: c52b06c69dc47867a73a3178172bf2279840ac3228fb74ace9a3fde7159b2e0af26af39d0c86dcba423c4f6ceb2f50fd5fe511072f9a2be3a00665883899e8f3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [1.0.22] - 2023-02-01
2
+
3
+ - Fix `Addrinfo SocketError` should raise `Sparoid::ResolvError` (#10)
4
+
5
+ ## [1.0.21] - 2022-10-12
6
+
7
+ - Fix where Sparoid::Instance returned nil for public_ip
8
+
1
9
  ## [1.0.20] - 2022-10-11
2
10
 
3
11
  - Ignore EISCONN errors (already connected) error as BSD raises on second connect_nonblock
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sparoid
4
- VERSION = "1.0.20"
4
+ VERSION = "1.0.22"
5
5
  end
data/lib/sparoid.rb CHANGED
@@ -13,8 +13,7 @@ module Sparoid # rubocop:disable Metrics/ModuleLength
13
13
 
14
14
  # Send an authorization packet
15
15
  def auth(key, hmac_key, host, port)
16
- addrs = Addrinfo.getaddrinfo(host, port, :INET, :DGRAM)
17
- raise(ResolvError, "Sparoid failed to resolv #{host}") if addrs.empty?
16
+ addrs = resolve_ip_addresses(host, port)
18
17
 
19
18
  msg = message(cached_public_ip)
20
19
  data = prefix_hmac(hmac_key, encrypt(key, msg))
@@ -71,7 +70,8 @@ module Sparoid # rubocop:disable Metrics/ModuleLength
71
70
  private
72
71
 
73
72
  def sendmsg(addrs, data)
74
- socket = Socket.new Socket::AF_INET, Socket::SOCK_DGRAM
73
+ socket = UDPSocket.new
74
+ socket.nonblock = false
75
75
  addrs.each do |addr|
76
76
  socket.sendmsg data, 0, addr
77
77
  rescue StandardError => e
@@ -155,6 +155,15 @@ module Sparoid # rubocop:disable Metrics/ModuleLength
155
155
  end
156
156
  end
157
157
 
158
+ def resolve_ip_addresses(host, port)
159
+ addresses = Addrinfo.getaddrinfo(host, port, :INET, :DGRAM)
160
+ raise(ResolvError, "Sparoid failed to resolv #{host}") if addresses.empty?
161
+
162
+ addresses
163
+ rescue SocketError
164
+ raise(ResolvError, "Sparoid failed to resolv #{host}")
165
+ end
166
+
158
167
  class Error < StandardError; end
159
168
 
160
169
  class ResolvError < Error; end
@@ -170,7 +179,7 @@ module Sparoid # rubocop:disable Metrics/ModuleLength
170
179
  end
171
180
 
172
181
  def cached_public_ip
173
- @public_ip
182
+ public_ip
174
183
  end
175
184
  end
176
185
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.20
4
+ version: 1.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carl Hörberg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-11 00:00:00.000000000 Z
11
+ date: 2023-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -70,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
72
  requirements: []
73
- rubygems_version: 3.3.7
73
+ rubygems_version: 3.4.5
74
74
  signing_key:
75
75
  specification_version: 4
76
76
  summary: Single Packet Authorisation client