sping 1.1.2 → 1.1.4

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: 166ec48bd1a40ce46368f79ef3994c50b2d0f71450fc682353a4bb6275acfa69
4
- data.tar.gz: 2afd56a782b1a58707539d67ef43f1ba26f3b2eb2ffbf5825a5b79e5732d0c9b
3
+ metadata.gz: 3ee9e733c3d7c301a577743fa8ad173ff73892e2eda7988cae78e5284be643ca
4
+ data.tar.gz: b41a482c177c4ff3f49b5841377e9d9527bc5d5b5c71386eeb03b11721d3a122
5
5
  SHA512:
6
- metadata.gz: 31827062958b773b147d8f8bb40fbb031ab7d074d57a5660f69cbb7b613ce3d58b827832a53320b5302ac4fc0ea15fb2b105c0ab922596850faf91b7462508f0
7
- data.tar.gz: 6884a6b099305752692390b2c73b48777f8931961b395298950559c9e1cb289f1b1172607b4591b365fb86790034f4db55f86b25feac8d7e239216bf34de67ae
6
+ metadata.gz: 98be2095d2aa944081ab527bf4202ffd7c585c4f350a50d39ee65cf0e02a99cd5608631a0bf319a0337612e726d7d4c29633fb793f9816a0b4cecfe2f09af605
7
+ data.tar.gz: 95ceceaaf34a98eb4e793aeafe3d3dda89093863fccd45d89661e5f5d31b694658b7c8762269b2b42f9af2f3f4b1cb0e15e9e7b5c622b23c15512ce8c5b2bd51
data/lib/last_acks.rb CHANGED
@@ -14,11 +14,12 @@ module SPing
14
14
  @acks_mutex = Mutex.new
15
15
 
16
16
  # Initiallize the circular buffer with 32 empty acks.
17
+ zero_time = Time.at(0)
17
18
  32.times do |index|
18
19
  @acks[index] = {
19
20
  'R' => 0,
20
- 'U' => Time.at(0),
21
- 'X' => Time.at(0)
21
+ 'U' => zero_time,
22
+ 'X' => zero_time
22
23
  }
23
24
  end
24
25
  end
data/lib/session.rb CHANGED
@@ -146,8 +146,12 @@ module SPing
146
146
 
147
147
  @udp_handshake_sender = Thread.new(send_interval.to_i) do |th_send_interval|
148
148
  loop do
149
- send_udp_handshake
150
- sleep th_send_interval
149
+ begin
150
+ send_udp_handshake
151
+ sleep th_send_interval
152
+ rescue SocketError => e
153
+ $logger.warn "Failed to send ping: #{e.message}"
154
+ end
151
155
  end
152
156
  end
153
157
  end
@@ -51,7 +51,7 @@ module SPing
51
51
 
52
52
  $logger.info "Perform UDP handshake for session ID #{session.session_id}."
53
53
  session.start_udp_handshake_sender
54
- rescue Errno::ECONNRESET, EOFError, IO::TimeoutError, TCPHandshakeError => e
54
+ rescue Errno::ECONNRESET, EOFError, IO::TimeoutError, SocketError, TCPHandshakeError => e
55
55
  $logger.warn "TCP handshake failed: #{e.message}"
56
56
  rescue OutOfSessions => e
57
57
  $logger.error "Out of session: #{e.message}"
@@ -178,14 +178,15 @@ module SPing
178
178
  # session IDs that have already been deleted.
179
179
  # However, we can ignore this aspect here, as we are the only
180
180
  # function that deletes sessions.
181
+ current_time = Time.now.to_i
181
182
  if !(session.tcp_handshake_complete && session.udp_handshake_complete)
182
183
  # Handshake incomplete
183
- if (Time.now.to_i - session.created.to_i) > 60
184
+ if (current_time - session.created.to_i) > 60
184
185
  # TCP and/or UDP take more than 60 seconds.
185
186
  $logger.debug "UDP handshake for session id #{session_id} timed out."
186
187
  del_session session_id
187
188
  end
188
- elsif (Time.now.to_i - session.last_rx.to_i) > 30
189
+ elsif (current_time - session.last_rx.to_i) > 30
189
190
  # 30 seconds have elapsed since the last ping from the peer was received.
190
191
  # The peer is probably dead.
191
192
  $logger.debug "Session id #{session_id} without activity for over thirty seconds."
@@ -311,7 +312,7 @@ module SPing
311
312
  end
312
313
 
313
314
  session.do_tcp_handshake1 client, session_id
314
- rescue Errno::ECONNRESET, EOFError, IO::TimeoutError, TCPHandshakeError => e
315
+ rescue Errno::ECONNRESET, EOFError, IO::TimeoutError, SocketError, TCPHandshakeError => e
315
316
  $logger.warn "Could not establish a new session with Peer: #{e.message}"
316
317
  del_session session_id
317
318
  rescue OutOfSessions => e
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sping
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Küthe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-10 00:00:00.000000000 Z
11
+ date: 2023-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack