50 lines
965 B
Ruby
Executable File
50 lines
965 B
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
# Connect, read the hello, then immediately disconnect. This
|
|
# simulates a sender which dislikes something in the hello message - a
|
|
# wrong size, for instance.
|
|
|
|
# After the disconnect, we reconnect to be sure that the destination
|
|
# is still alive.
|
|
|
|
|
|
require 'socket'
|
|
require "timeout"
|
|
require 'flexnbd/constants'
|
|
|
|
addr, port = *ARGV
|
|
|
|
client_sock = nil
|
|
begin
|
|
Timeout.timeout(2) do
|
|
client_sock = TCPSocket.open( addr, port )
|
|
end
|
|
rescue Timeout::Error
|
|
$stderr.puts "Timed out connecting."
|
|
exit 1
|
|
end
|
|
|
|
begin
|
|
Timeout.timeout( FlexNBD::MS_HELLO_TIME_SECS ) do
|
|
fail "No hello." unless (hello = client_sock.read( 152 )) &&
|
|
hello.length==152
|
|
end
|
|
rescue Timeout::Error
|
|
$stderr.puts "Timed out waiting for hello."
|
|
exit 1
|
|
end
|
|
|
|
client_sock.close
|
|
|
|
sleep(0.2)
|
|
begin
|
|
Timeout.timeout(2) do
|
|
client_sock = TCPSocket.open( addr, port )
|
|
end
|
|
rescue Timeout::Error
|
|
$stderr.puts "Timed out reconnecting."
|
|
exit 1
|
|
end
|
|
|
|
exit(0)
|