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