sping 1.1.2 → 1.1.4

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: 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