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 +4 -4
- data/lib/rxio/misc/openssl_accept_nonblock.rb +28 -0
- data/lib/rxio/service.rb +3 -1
- data/lib/rxio/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03cd019ecde32038af2f63f4cd14c82b6cafeeb2
|
4
|
+
data.tar.gz: 638db64023ff7fecb181ff05bd565ed191961695
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
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.
|
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
|