rxio 1.2.0 → 1.2.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
  SHA1:
3
- metadata.gz: 4c9ca3ae8857d65bc146a20200d72feba5876cfb
4
- data.tar.gz: 411f6c8e7ea2a455d7ce261b4de5f4883f8ee205
3
+ metadata.gz: 03cd019ecde32038af2f63f4cd14c82b6cafeeb2
4
+ data.tar.gz: 638db64023ff7fecb181ff05bd565ed191961695
5
5
  SHA512:
6
- metadata.gz: 342d8d61b7240292c3925f8ab7e7447f80d40f6c12d73ae6df65004d4960cf3b8fdc5f3f74da0168c666e3317e5ccd845e93b102716318c1370a03d5cb28a188
7
- data.tar.gz: 4c12c281829622777e8013f7bdc323516acef82004b83c5bc232005548e1d1fdfdad19045ca51f05545d11c9f79d53c3ccfe2df8b1f89b46547d5a6a397a90de
6
+ metadata.gz: f6c1889b07ce038641a7aecd7764031a9a5a10fde2896358b5dbcaa0302bd16abde2f1d81df70f2206fd084327f0915e5d89056c430738420eccd850a62e0872
7
+ data.tar.gz: 3b0a4a28d7559985a388d9915361803deac1ed6a2b03babe3fd48c5b1c3d34265f714e02489909b6737110f7f8f1f31f6281b3f6f7ea585f0431773d45609754
@@ -0,0 +1,28 @@
1
+ # RxIO
2
+ # by Eresse <eresse@eresse.net>
3
+
4
+ # External Includes
5
+ require 'socket'
6
+ require 'openssl'
7
+
8
+ # Monkey-Patch SSLServer Class
9
+ class OpenSSL::SSL::SSLServer
10
+
11
+ # Provide non-blocking accept
12
+ def accept_nonblock
13
+ sock, = @svr.accept_nonblock
14
+ begin
15
+ ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
16
+ ssl.sync_close = true
17
+ ssl.accept if @start_immediately
18
+ ssl
19
+ rescue Exception => ex
20
+ if ssl
21
+ ssl.close
22
+ else
23
+ sock.close
24
+ end
25
+ raise ex
26
+ end
27
+ end
28
+ end
data/lib/rxio/service.rb CHANGED
@@ -8,6 +8,7 @@ require 'openssl'
8
8
  require 'runify'
9
9
 
10
10
  # Internal Includes
11
+ require 'rxio/misc/openssl_accept_nonblock'
11
12
  require 'rxio/io_base'
12
13
 
13
14
  # RxIO Module
@@ -68,6 +69,7 @@ module RxIO
68
69
  # Create TCP Socket Server
69
70
  @serv = TCPServer.new @addr, @port
70
71
  @serv = OpenSSL::SSL::SSLServer.new @serv, @ssl_ctx if @ssl_ctx
72
+ @serv.sync_close = true
71
73
  @socks << @serv
72
74
 
73
75
  # Update Service
@@ -162,7 +164,7 @@ module RxIO
162
164
  def acpt_sock s
163
165
 
164
166
  # Accept
165
- ns = s.accept rescue nil
167
+ ns = s.accept_nonblock rescue nil
166
168
 
167
169
  # Register Client
168
170
  add_client ns if ns
data/lib/rxio/version.rb CHANGED
@@ -5,5 +5,5 @@
5
5
  module RxIO
6
6
 
7
7
  # Version
8
- VERSION = '1.2.0'
8
+ VERSION = '1.2.1'
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rxio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eresse
@@ -99,6 +99,7 @@ files:
99
99
  - lib/rxio/io_filters.rb
100
100
  - lib/rxio/io_filters/bin_delim.rb
101
101
  - lib/rxio/io_filters/msg_size.rb
102
+ - lib/rxio/misc/openssl_accept_nonblock.rb
102
103
  - lib/rxio/service.rb
103
104
  - lib/rxio/version.rb
104
105
  - rxio.gemspec