rxio 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rxio/io_base.rb +11 -2
- data/lib/rxio/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e24aeca7703c5d851ab242ab2aeadbed4e1579b3
|
4
|
+
data.tar.gz: 03a7d32a082ace38d4019d44b7a7344d95012ea4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4640365e17cea559ba9ab0fe16ac03f5813ab6db0fb143babcaf9ac5e6dc38f8e27d5a73050a3f08dee220926f0828cb4e150e53a8bb9bcb84f857f916e9f65
|
7
|
+
data.tar.gz: 576fc4737f981da5bb9a0a7f9245d775248745f2a3a91bda7fba3e510f9e6f364137cc9bd1389357058235f5abf523fa995707ba289615e6ee42337fcc6c5bb4
|
data/lib/rxio/io_base.rb
CHANGED
@@ -47,8 +47,17 @@ module RxIO
|
|
47
47
|
# Check Endpoint
|
48
48
|
return unless e
|
49
49
|
|
50
|
-
#
|
51
|
-
|
50
|
+
# OpenSSL doesn't play nice with 'select' because of intermediate buffering.
|
51
|
+
# Therefore we loop until we either have an explicit error or a signal to wait.
|
52
|
+
done = false
|
53
|
+
chunk = ''
|
54
|
+
until done || !chunk
|
55
|
+
begin
|
56
|
+
chunk << s.read_nonblock(CHUNK_SIZE)
|
57
|
+
rescue Exception => ex
|
58
|
+
if ex.is_a? OpenSSL::SSL::SSLErrorWaitReadable; then done = true; else chunk = nil; end
|
59
|
+
end
|
60
|
+
end
|
52
61
|
|
53
62
|
# Drop Endpoint & Abort on Error
|
54
63
|
return drop_endpoint e unless chunk
|
data/lib/rxio/version.rb
CHANGED