aboutsummaryrefslogtreecommitdiff
path: root/contrib/ivshmem-server/ivshmem-server.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ivshmem-server/ivshmem-server.c')
-rw-r--r--contrib/ivshmem-server/ivshmem-server.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/ivshmem-server/ivshmem-server.c b/contrib/ivshmem-server/ivshmem-server.c
index 2f3c732..13cb828 100644
--- a/contrib/ivshmem-server/ivshmem-server.c
+++ b/contrib/ivshmem-server/ivshmem-server.c
@@ -6,6 +6,7 @@
* top-level directory.
*/
#include "qemu/osdep.h"
+#include "qapi/error.h"
#include "qemu/host-utils.h"
#include "qemu/sockets.h"
@@ -135,6 +136,7 @@ ivshmem_server_handle_new_conn(IvshmemServer *server)
socklen_t unaddr_len;
int newfd;
unsigned i;
+ Error *local_err = NULL;
/* accept the incoming connection */
unaddr_len = sizeof(unaddr);
@@ -146,9 +148,14 @@ ivshmem_server_handle_new_conn(IvshmemServer *server)
return -1;
}
- qemu_socket_set_nonblock(newfd);
IVSHMEM_SERVER_DEBUG(server, "accept()=%d\n", newfd);
+ if (!qemu_set_blocking(newfd, false, &local_err)) {
+ error_report_err(local_err);
+ close(newfd);
+ return -1;
+ }
+
/* allocate new structure for this peer */
peer = g_malloc0(sizeof(*peer));
peer->sock_fd = newfd;