Handle a failed disconnect correctly
If the sender disconnects its socket before sending the disconnect message, the destination should restart the migration process. This patch makes sure that happens.
This commit is contained in:
@@ -94,7 +94,7 @@ module FlexNBD
|
||||
end
|
||||
|
||||
|
||||
def receive_mirror
|
||||
def receive_mirror( opts = {} )
|
||||
write_hello()
|
||||
loop do
|
||||
req = read_request
|
||||
@@ -103,7 +103,7 @@ module FlexNBD
|
||||
read_data( req[:len] )
|
||||
write_reply( req[:handle] )
|
||||
when 65536
|
||||
write_reply( req[:handle] )
|
||||
write_reply( req[:handle], opts[:err] == :entrust ? 1 : 0 )
|
||||
break
|
||||
else
|
||||
raise "Unexpected request: #{req.inspect}"
|
||||
|
@@ -50,12 +50,27 @@ module FlexNBD
|
||||
send_request( 65536, handle )
|
||||
end
|
||||
|
||||
def write_disconnect_request( handle="myhandle" )
|
||||
send_request( 2, handle )
|
||||
end
|
||||
|
||||
|
||||
def write_data( data )
|
||||
@sock.write( data )
|
||||
end
|
||||
|
||||
|
||||
def send_mirror
|
||||
read_hello()
|
||||
write_write_request( 0, 8 )
|
||||
write_data( "12345678" )
|
||||
read_response()
|
||||
write_entrust_request()
|
||||
read_response()
|
||||
write_disconnect_request()
|
||||
close()
|
||||
end
|
||||
|
||||
|
||||
def read_response
|
||||
magic = @sock.read(4)
|
||||
|
Reference in New Issue
Block a user