-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
- v0.24.1
- 1.15.1
- 1.15.0
- 1.14.1
- 1.14.0
- 1.13.3
- 1.13.2
- 1.13.1
- 1.13.0
- 1.12.2
- 1.12.1
- 1.12.0
- 1.11.2
- 1.11.1
- 1.11.0
- 1.10.1
- 1.10.0
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.1
- 1.4.0
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- 0.36.1
- 0.36.0
- 0.35.1
- 0.35.0
- 0.34.0
- 0.33.0
- 0.32.1
- 0.32.0
- 0.31.1
- 0.31.0
- 0.30.1
- 0.30.0
- 0.29.0
- 0.28.0
- 0.27.2
- 0.27.1
- 0.27.0
- 0.26.1
- 0.26.0
- 0.25.1
- 0.25.0
- 0.24.2
- 0.24.1
- 0.24.0
- 0.23.1
- 0.23.0
- 0.22.0
- 0.21.1
- 0.21.0
- 0.20.5
- 0.20.4
- 0.20.3
- 0.20.2
- 0.20.1
- 0.20.0
- 0.19.4
- 0.19.3
- 0.19.2
- 0.19.1
- 0.19.0
- 0.18.7
- 0.18.6
- 0.18.5
- 0.18.4
- 0.18.3
- 0.18.2
- 0.18.1
- 0.18.0
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -79,10 +79,31 @@ class OpenSSL::SSL::Socket | |
|
||
begin | ||
loop do | ||
ret = LibSSL.ssl_shutdown(@ssl) | ||
break if ret == 1 | ||
raise OpenSSL::SSL::Error.new(@ssl, ret, "SSL_shutdown") if ret < 0 | ||
# ret == 0, retry | ||
begin | ||
ret = LibSSL.ssl_shutdown(@ssl) | ||
break if ret == 1 | ||
raise OpenSSL::SSL::Error.new(@ssl, ret, "SSL_shutdown") if ret < 0 | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
jhass
Author
Member
|
||
rescue e : Errno | ||
case e.errno | ||
when 0 | ||
# OpenSSL claimed an underlying syscall failed, but that didn't set any error state, | ||
# assume we're done | ||
break | ||
when Errno::EAGAIN | ||
# Ignore, shutdown did not complete yet | ||
else | ||
raise e | ||
end | ||
rescue e : OpenSSL::SSL::Error | ||
case e.error | ||
when .want_read?, .want_write? | ||
# Ignore, shutdown did not complete yet | ||
else | ||
raise e | ||
end | ||
end | ||
|
||
# ret == 0, retry, shutdown is not complete yet | ||
end | ||
rescue IO::Error | ||
ensure | ||
|
@jhass raising an exception and catching is pretty expensive. Can we maybe check this without raising an exception? It might be a bit uglier/longer, but maybe speed is more important here.