diff options
author | kazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-22 11:12:06 +0000 |
---|---|---|
committer | kazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-22 11:12:06 +0000 |
commit | 7fd8040c7817540f4175c13e6664a463cffdcbdb (patch) | |
tree | 4d3bfc69c17e6ccccb62391d1a91e98567af921d /lib | |
parent | c1368025b565bcc34f30bad022b50fdd89c56858 (diff) | |
download | ruby-7fd8040c7817540f4175c13e6664a463cffdcbdb.tar.gz ruby-7fd8040c7817540f4175c13e6664a463cffdcbdb.tar.xz ruby-7fd8040c7817540f4175c13e6664a463cffdcbdb.zip |
* lib/webrick/server.rb (WEBrick::GenericServer#shutdown):
rescue Errno::ENOTCONN and close. [ruby-dev:35896]
* test/openssl/test_ssl.rb (OpenSSL#start_server): ditto.
[ruby-dev:35897]
* lib/net/imap.rb (Net::IMAP#disconnect): ditto. [ruby-dev:35898]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/net/imap.rb | 14 | ||||
-rw-r--r-- | lib/webrick/server.rb | 12 |
2 files changed, 19 insertions, 7 deletions
diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 64011e69c..e6ffa3b1e 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -288,11 +288,15 @@ module Net # Disconnects from the server. def disconnect begin - # try to call SSL::SSLSocket#io. - @sock.io.shutdown - rescue NoMethodError - # @sock is not an SSL::SSLSocket. - @sock.shutdown + begin + # try to call SSL::SSLSocket#io. + @sock.io.shutdown + rescue NoMethodError + # @sock is not an SSL::SSLSocket. + @sock.shutdown + end + rescue Errno::ENOTCONN + # ignore `Errno::ENOTCONN: Socket is not connected' on some platforms. end @receiver_thread.join @sock.close diff --git a/lib/webrick/server.rb b/lib/webrick/server.rb index 68501517c..d0b6f2b69 100644 --- a/lib/webrick/server.rb +++ b/lib/webrick/server.rb @@ -130,9 +130,17 @@ module WEBrick addr = s.addr @logger.debug("close TCPSocket(#{addr[2]}, #{addr[1]})") end - s.shutdown - unless @config[:ShutdownSocketWithoutClose] + begin + s.shutdown + rescue Errno::ENOTCONN + # when `Errno::ENOTCONN: Socket is not connected' on some platforms, + # call #close instead of #shutdown. + # (ignore @config[:ShutdownSocketWithoutClose]) s.close + else + unless @config[:ShutdownSocketWithoutClose] + s.close + end end } @listeners.clear |