The qemu_*block() functions are meant to be be used with sockets (the
win32 implementation expects SOCKET)
Over time, those functions where used with Win32 SOCKET or
file-descriptors interchangeably. But for portability, they must only be
used with socket-like file-descriptors. FDs can use
g_unix_set_fd_nonblocking() instead.
Rename the functions with "socket" in the name to prevent bad usages.
This is effectively reverting commit
f9e8cacc5557e43 ("oslib-posix:
rename socket_set_nonblock() to qemu_set_nonblock()").
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
}
/* O_NONBLOCK is preserved across SCM_RIGHTS so reset it */
- qemu_set_block(fd);
+ qemu_socket_set_block(fd);
#ifndef MSG_CMSG_CLOEXEC
qemu_set_cloexec(fd);
return -1;
}
- qemu_set_nonblock(newfd);
+ qemu_socket_set_nonblock(newfd);
IVSHMEM_SERVER_DEBUG(server, "accept()=%d\n", newfd);
/* allocate new structure for this peer */
return;
}
- qemu_set_nonblock(syndbg->socket);
+ qemu_socket_set_nonblock(syndbg->socket);
syndbg->servaddr.sin_port = htons(syndbg->host_port);
syndbg->servaddr.sin_family = AF_INET;
error_setg(errp, "%s: Failed to get ufd", __func__);
return -EIO;
}
- qemu_set_nonblock(ufd);
+ qemu_socket_set_nonblock(ufd);
/* register ufd with userfault thread */
u->postcopy_fd.fd = ufd;
int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
int socket_set_cork(int fd, int v);
int socket_set_nodelay(int fd);
-void qemu_set_block(int fd);
-int qemu_try_set_nonblock(int fd);
-void qemu_set_nonblock(int fd);
+void qemu_socket_set_block(int fd);
+int qemu_socket_try_set_nonblock(int fd);
+void qemu_socket_set_nonblock(int fd);
int socket_set_fast_reuse(int fd);
#ifdef WIN32
}
/* O_NONBLOCK is preserved across SCM_RIGHTS so reset it */
- qemu_set_block(fd);
+ qemu_socket_set_block(fd);
#ifndef MSG_CMSG_CLOEXEC
qemu_set_cloexec(fd);
QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
if (enabled) {
- qemu_set_block(sioc->fd);
+ qemu_socket_set_block(sioc->fd);
} else {
- qemu_set_nonblock(sioc->fd);
+ qemu_socket_set_nonblock(sioc->fd);
}
return 0;
}
s->vec = g_new(struct iovec, MAX_L2TPV3_IOVCNT);
s->header_buf = g_malloc(s->header_size);
- qemu_set_nonblock(fd);
+ qemu_socket_set_nonblock(fd);
s->fd = fd;
s->counter = 0;
}
}
- qemu_set_nonblock(fd);
+ qemu_socket_set_nonblock(fd);
return fd;
fail:
if (fd >= 0)
error_setg_errno(errp, errno, "can't create stream socket");
return -1;
}
- qemu_set_nonblock(fd);
+ qemu_socket_set_nonblock(fd);
socket_set_fast_reuse(fd);
error_setg_errno(errp, errno, "can't create stream socket");
return -1;
}
- qemu_set_nonblock(fd);
+ qemu_socket_set_nonblock(fd);
connected = 0;
for(;;) {
closesocket(fd);
return -1;
}
- qemu_set_nonblock(fd);
+ qemu_socket_set_nonblock(fd);
s = net_socket_fd_init(peer, model, name, fd, 0, NULL, errp);
if (!s) {
if (fd == -1) {
return -1;
}
- ret = qemu_try_set_nonblock(fd);
+ ret = qemu_socket_try_set_nonblock(fd);
if (ret < 0) {
error_setg_errno(errp, -ret, "%s: Can't use file descriptor %d",
name, fd);
g_warning("error converting fd to gsocket: %s", strerror(errno));
goto out;
}
- qemu_set_nonblock(client_fd);
+ qemu_socket_set_nonblock(client_fd);
ret = ga_channel_client_add(c, client_fd);
if (ret) {
g_warning("error setting up connection");
goto cleanup;
}
- qemu_set_nonblock(cfd);
+ qemu_socket_set_nonblock(cfd);
if (connect(cfd, (struct sockaddr *)&ss, sslen) < 0) {
if (errno == EINPROGRESS) {
check_soerr = true;
* thread, so we need these non-blocking to avoid deadlock
* of ourselves
*/
- qemu_set_nonblock(channel[0]);
- qemu_set_nonblock(channel[1]);
+ qemu_socket_set_nonblock(channel[0]);
+ qemu_socket_set_nonblock(channel[1]);
clientCreds = test_tls_creds_psk_create(
QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT,
* thread, so we need these non-blocking to avoid deadlock
* of ourselves
*/
- qemu_set_nonblock(channel[0]);
- qemu_set_nonblock(channel[1]);
+ qemu_socket_set_nonblock(channel[0]);
+ qemu_socket_set_nonblock(channel[1]);
#define CLIENT_CERT_DIR "tests/test-crypto-tlssession-client/"
#define SERVER_CERT_DIR "tests/test-crypto-tlssession-server/"
qemu_ram_munmap(-1, ptr, size);
}
-void qemu_set_block(int fd)
+void qemu_socket_set_block(int fd)
{
g_unix_set_fd_nonblocking(fd, false, NULL);
}
-int qemu_try_set_nonblock(int fd)
+int qemu_socket_try_set_nonblock(int fd)
{
return g_unix_set_fd_nonblocking(fd, true, NULL) ? 0 : -errno;
}
-void qemu_set_nonblock(int fd)
+void qemu_socket_set_nonblock(int fd)
{
int f;
- f = qemu_try_set_nonblock(fd);
+ f = qemu_socket_try_set_nonblock(fd);
assert(f == 0);
}
}
}
-void qemu_set_block(int fd)
+void qemu_socket_set_block(int fd)
{
unsigned long opt = 0;
WSAEventSelect(fd, NULL, 0);
ioctlsocket(fd, FIONBIO, &opt);
}
-int qemu_try_set_nonblock(int fd)
+int qemu_socket_try_set_nonblock(int fd)
{
unsigned long opt = 1;
if (ioctlsocket(fd, FIONBIO, &opt) != NO_ERROR) {
return 0;
}
-void qemu_set_nonblock(int fd)
+void qemu_socket_set_nonblock(int fd)
{
- (void)qemu_try_set_nonblock(fd);
+ (void)qemu_socket_try_set_nonblock(fd);
}
int socket_set_fast_reuse(int fd)
{
int i;
for (i = 0; i < vmsg->fd_num; i++) {
- qemu_set_nonblock(vmsg->fds[i]);
+ qemu_socket_set_nonblock(vmsg->fds[i]);
}
}
vu_fd_watch->fd = fd;
vu_fd_watch->cb = cb;
- qemu_set_nonblock(fd);
+ qemu_socket_set_nonblock(fd);
aio_set_fd_handler(server->ioc->ctx, fd, true, kick_handler,
NULL, NULL, NULL, vu_fd_watch);
vu_fd_watch->vu_dev = vu_dev;