This commit is contained in:
Alex Young
2012-10-08 16:02:37 +01:00
3 changed files with 8 additions and 43 deletions

View File

@@ -929,8 +929,8 @@ int do_serve(struct server* params)
int has_control; int has_control;
error_set_handler((cleanup_handler*) serve_cleanup, params); error_set_handler((cleanup_handler*) serve_cleanup, params);
serve_init_allocation_map(params);
serve_open_server_socket(params); serve_open_server_socket(params);
serve_init_allocation_map(params);
serve_accept_loop(params); serve_accept_loop(params);
has_control = params->has_control; has_control = params->has_control;
serve_cleanup(params, 0); serve_cleanup(params, 0);

View File

@@ -314,16 +314,9 @@ module FlexNBD
while !File.socket?(ctrl) while !File.socket?(ctrl)
pid, status = Process.wait2(@pid, Process::WNOHANG) pid, status = Process.wait2(@pid, Process::WNOHANG)
raise "server did not start (#{cmd}) - UNIX socket didn't appear" if pid raise "server did not start (#{cmd})" if pid
sleep 0.1 sleep 0.1
end end
while !socket_open?
pid, status = Process.wait2(@pid, Process::WNOHANG)
raise "server did not start (#{cmd}) - TCP socket didn't appear" if pid
sleep 0.1
end
at_exit { kill } at_exit { kill }
end end
private :run_serve_cmd private :run_serve_cmd
@@ -519,15 +512,7 @@ module FlexNBD
hsh hsh
end end
def socket_open?
sock = (TCPSocket.new(@ip, @port) rescue nil)
!!sock
ensure
sock.close rescue nil if sock
end
end end
end end

View File

@@ -8,35 +8,16 @@ module FlexNBD
class FakeSource class FakeSource
def initialize( addr, port, err_msg, source_addr=nil, source_port=0 ) def initialize( addr, port, err_msg, source_addr=nil, source_port=0 )
timing_out( 10, err_msg ) { timing_out( 2, err_msg ) do
@sock = wait_for_server_socket( addr, port, source_addr, source_port ) @sock = if source_addr
} TCPSocket.new( addr, port, source_addr, source_port )
end else
TCPSocket.new( addr, port )
end
def wait_for_server_socket(addr, port, saddr = nil, sport = 0)
sock = nil
loop do
sock = try_get_server_socket( addr, port, saddr, sport )
break if sock
sleep 0.1
end
sock
end
def try_get_server_socket(addr, port, saddr = nil, sport = 0)
if saddr
TCPSocket.new( addr, port, saddr, sport ) rescue nil
else
TCPSocket.new( addr, port ) rescue nil
end end
end end
def close def close
@sock.close @sock.close
end end
@@ -156,4 +137,3 @@ module FlexNBD
end # class FakeSource end # class FakeSource
end # module FlexNBD end # module FlexNBD