зеркало из https://github.com/github/ruby.git
drb: close graceful shutdown pipe before socket
Closing a listen socket while entering select(2) may trigger IOError or even deadlock because another thread may give the file descriptor to another file description; meaning the kernel can wait on the wrong description. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
a48022489f
Коммит
7c31c2738c
|
@ -953,6 +953,7 @@ module DRb
|
|||
# returned by #open or by #accept, then it closes this particular
|
||||
# client-server session.
|
||||
def close
|
||||
shutdown
|
||||
if @socket
|
||||
@socket.close
|
||||
@socket = nil
|
||||
|
|
|
@ -95,6 +95,7 @@ module DRb
|
|||
public
|
||||
def close
|
||||
return unless @socket
|
||||
shutdown # DRbProtocol#shutdown
|
||||
path = @socket.path if @server_mode
|
||||
@socket.close
|
||||
File.unlink(path) if @server_mode
|
||||
|
|
Загрузка…
Ссылка в новой задаче