rxio 1.2.0 → 1.2.1

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