Merge
This commit is contained in:
@@ -551,3 +551,4 @@ void* client_serve(void* client_uncast)
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@@ -280,3 +280,4 @@ int fd_is_closed( int fd_in )
|
||||
errno = errno_old;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@@ -576,4 +576,3 @@ void * mirror_super_runner( void * serve_uncast )
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -903,8 +903,8 @@ int do_serve(struct server* params)
|
||||
int has_control;
|
||||
|
||||
error_set_handler((cleanup_handler*) serve_cleanup, params);
|
||||
serve_open_server_socket(params);
|
||||
serve_init_allocation_map(params);
|
||||
serve_open_server_socket(params);
|
||||
serve_accept_loop(params);
|
||||
has_control = params->has_control;
|
||||
serve_cleanup(params, 0);
|
||||
|
@@ -314,9 +314,16 @@ module FlexNBD
|
||||
|
||||
while !File.socket?(ctrl)
|
||||
pid, status = Process.wait2(@pid, Process::WNOHANG)
|
||||
raise "server did not start (#{cmd})" if pid
|
||||
raise "server did not start (#{cmd}) - UNIX socket didn't appear" if pid
|
||||
sleep 0.1
|
||||
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 }
|
||||
end
|
||||
private :run_serve_cmd
|
||||
@@ -512,7 +519,15 @@ module FlexNBD
|
||||
hsh
|
||||
end
|
||||
|
||||
def socket_open?
|
||||
sock = (TCPSocket.new(@ip, @port) rescue nil)
|
||||
!!sock
|
||||
ensure
|
||||
sock.close rescue nil if sock
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
@@ -8,16 +8,35 @@ module FlexNBD
|
||||
class FakeSource
|
||||
|
||||
def initialize( addr, port, err_msg, source_addr=nil, source_port=0 )
|
||||
timing_out( 2, err_msg ) do
|
||||
@sock = if source_addr
|
||||
TCPSocket.new( addr, port, source_addr, source_port )
|
||||
else
|
||||
TCPSocket.new( addr, port )
|
||||
end
|
||||
timing_out( 10, err_msg ) {
|
||||
@sock = wait_for_server_socket( addr, port, source_addr, source_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
|
||||
|
||||
|
||||
|
||||
|
||||
def close
|
||||
@sock.close
|
||||
end
|
||||
@@ -137,3 +156,4 @@ module FlexNBD
|
||||
|
||||
end # class FakeSource
|
||||
end # module FlexNBD
|
||||
|
||||
|
Reference in New Issue
Block a user