nbd: close socket if connection breaks
authorStefan Hajnoczi <stefanha@redhat.com>
Wed, 26 Feb 2014 14:30:18 +0000 (15:30 +0100)
committerStefan Hajnoczi <stefanha@redhat.com>
Fri, 14 Mar 2014 15:28:28 +0000 (16:28 +0100)
commit4a41a2d68a684241aca96dba066e0699941b730d
treec3c9a72476b39a3ee58029436fd24bc318d44093
parent62e466e84592900756f080802782d0615c6a3b5c
nbd: close socket if connection breaks

nbd_receive_reply() is called by the event loop whenever data is
available or the socket has been closed by the remote side.

This patch closes the socket when an error occurs to prevent the
nbd_receive_reply() handler from being called indefinitely after the
connection has failed.

Note that we were already correctly returning EIO for pending requests
but leaving the nbd_receive_reply() handler registered resulted in high
CPU consumption and a flood of error messages.

Reuse nbd_teardown_connection() to close the socket.

Reported-by: Zhifeng Cai <bluewindow@h3c.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/nbd-client.c