summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHani Benhabiles <kroosec@gmail.com>2014-05-31 22:39:42 +0100
committerMichael Roth <mdroth@linux.vnet.ibm.com>2014-07-15 19:28:02 -0500
commit0c60b74a0cc17a8fedb1b300b7b65ae946d917c9 (patch)
tree0254e88a30eefba295667c11af765602e9b69176
parent25351f6a9ad55990d5140a928fd6ea29e48943af (diff)
downloadqemu-0c60b74a0cc17a8fedb1b300b7b65ae946d917c9.tar.gz
nbd: Shutdown socket before closing.
This forces finishing data sending to client before closing the socket like in exports listing or replying with NBD_REP_ERR_UNSUP cases. Signed-off-by: Hani Benhabiles <kroosec@gmail.com> Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> (cherry picked from commit 27e5eae4577316f7e86a56eb7363d4e78f79e3e5) Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r--blockdev-nbd.c1
-rw-r--r--qemu-nbd.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/blockdev-nbd.c b/blockdev-nbd.c
index 18dc528761..b3a24740b2 100644
--- a/blockdev-nbd.c
+++ b/blockdev-nbd.c
@@ -28,6 +28,7 @@ static void nbd_accept(void *opaque)
int fd = accept(server_fd, (struct sockaddr *)&addr, &addr_len);
if (fd >= 0 && !nbd_client_new(NULL, fd, nbd_client_put)) {
+ shutdown(fd, 2);
close(fd);
}
}
diff --git a/qemu-nbd.c b/qemu-nbd.c
index 7a2cff92c2..474966f468 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -302,6 +302,7 @@ static void nbd_accept(void *opaque)
if (nbd_client_new(exp, fd, nbd_client_closed)) {
nb_fds++;
} else {
+ shutdown(fd, 2);
close(fd);
}
}