lib/ftpd/server.rb in ftpd-0.10.0 vs lib/ftpd/server.rb in ftpd-0.11.0
- old
+ new
@@ -23,10 +23,11 @@
attr_accessor :port
def initialize
@interface = '127.0.0.1'
@port = 0
+ @stopping = false
end
# The port the server is bound to. Must not be called until after
# #start is called.
#
@@ -46,10 +47,11 @@
# Stop the server. This closes the server socket, which in turn
# stops the thread.
def stop
+ @stopping = true
@server_socket.close
end
private
@@ -66,9 +68,13 @@
socket = accept
rescue Errno::EAGAIN, Errno::ECONNABORTED, Errno::EPROTO, Errno::EINVAL
IO.select([@server_socket])
sleep(0.2)
retry
+ rescue Errno::EBADF
+ raise unless @stopping
+ @stopping = false
+ break
end
start_session socket
rescue IOError
break
end