Merge
This commit is contained in:
@@ -551,3 +551,4 @@ void* client_serve(void* client_uncast)
|
|||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -280,3 +280,4 @@ int fd_is_closed( int fd_in )
|
|||||||
errno = errno_old;
|
errno = errno_old;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -576,4 +576,3 @@ void * mirror_super_runner( void * serve_uncast )
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -903,8 +903,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_open_server_socket(params);
|
|
||||||
serve_init_allocation_map(params);
|
serve_init_allocation_map(params);
|
||||||
|
serve_open_server_socket(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);
|
||||||
|
@@ -314,9 +314,16 @@ 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})" if pid
|
raise "server did not start (#{cmd}) - UNIX socket didn't appear" 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
|
||||||
@@ -512,7 +519,15 @@ 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
|
||||||
|
|
||||||
|
@@ -8,16 +8,35 @@ 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( 2, err_msg ) do
|
timing_out( 10, err_msg ) {
|
||||||
@sock = if source_addr
|
@sock = wait_for_server_socket( addr, port, source_addr, source_port )
|
||||||
TCPSocket.new( 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
|
else
|
||||||
TCPSocket.new( addr, port )
|
TCPSocket.new( addr, port ) rescue nil
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def close
|
def close
|
||||||
@sock.close
|
@sock.close
|
||||||
end
|
end
|
||||||
@@ -137,3 +156,4 @@ module FlexNBD
|
|||||||
|
|
||||||
end # class FakeSource
|
end # class FakeSource
|
||||||
end # module FlexNBD
|
end # module FlexNBD
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user