[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 18/29] qemu-sockets: add error propagation to inet_c
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 18/29] qemu-sockets: add error propagation to inet_connect_addr |
Date: |
Fri, 19 Oct 2012 15:31:57 +0200 |
perror and fprintf can be removed because all clients can now consume
Errors properly. However, we'll need to change the non-blocking connect
handlers to take an Error, in order to improve error handling for
migration with the TCP protocol.
This is a minor degradation in error reporting for outgoing migration.
However, until 1.2 this case just failed without even attempting to
connect, so it is still an improvement as far as overall QoI is
concerned.
Reviewed-by: Luiz Capitulino <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
qemu-sockets.c | 15 ++++++---------
1 file modificato, 6 inserzioni(+), 9 rimozioni(-)
diff --git a/qemu-sockets.c b/qemu-sockets.c
index 9e3d233..88d58fe 100644
--- a/qemu-sockets.c
+++ b/qemu-sockets.c
@@ -216,7 +216,7 @@ typedef struct ConnectState {
} ConnectState;
static int inet_connect_addr(struct addrinfo *addr, bool *in_progress,
- ConnectState *connect_state);
+ ConnectState *connect_state, Error **errp);
static void wait_for_connect(void *opaque)
{
@@ -246,7 +246,7 @@ static void wait_for_connect(void *opaque)
if (s->current_addr) {
while (s->current_addr->ai_next != NULL && s->fd < 0) {
s->current_addr = s->current_addr->ai_next;
- s->fd = inet_connect_addr(s->current_addr, &in_progress, s);
+ s->fd = inet_connect_addr(s->current_addr, &in_progress, s, NULL);
/* connect in progress */
if (in_progress) {
return;
@@ -263,7 +263,7 @@ static void wait_for_connect(void *opaque)
}
static int inet_connect_addr(struct addrinfo *addr, bool *in_progress,
- ConnectState *connect_state)
+ ConnectState *connect_state, Error **errp)
{
int sock, rc;
@@ -271,8 +271,7 @@ static int inet_connect_addr(struct addrinfo *addr, bool
*in_progress,
sock = qemu_socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
if (sock < 0) {
- fprintf(stderr, "%s: socket(%s): %s\n", __func__,
- inet_strfamily(addr->ai_family), strerror(errno));
+ error_set_errno(errp, errno, QERR_SOCKET_CREATE_FAILED);
return -1;
}
qemu_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
@@ -293,6 +292,7 @@ static int inet_connect_addr(struct addrinfo *addr, bool
*in_progress,
connect_state);
*in_progress = true;
} else if (rc < 0) {
+ error_set_errno(errp, errno, QERR_SOCKET_CONNECT_FAILED);
closesocket(sock);
return -1;
}
@@ -375,7 +375,7 @@ int inet_connect_opts(QemuOpts *opts, Error **errp,
if (connect_state != NULL) {
connect_state->current_addr = e;
}
- sock = inet_connect_addr(e, &in_progress, connect_state);
+ sock = inet_connect_addr(e, &in_progress, connect_state, errp);
if (in_progress) {
return sock;
} else if (sock >= 0) {
@@ -386,9 +386,6 @@ int inet_connect_opts(QemuOpts *opts, Error **errp,
break;
}
}
- if (sock < 0) {
- error_set(errp, QERR_SOCKET_CONNECT_FAILED);
- }
g_free(connect_state);
freeaddrinfo(res);
return sock;
--
1.7.12.1
- [Qemu-devel] [PATCH 25/29] qemu-sockets: return InetSocketAddress from inet_parse, (continued)
- [Qemu-devel] [PATCH 25/29] qemu-sockets: return InetSocketAddress from inet_parse, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 27/29] block: prepare code for adding block notifiers, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 26/29] qemu-sockets: add socket_listen, socket_connect, socket_parse, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 12/29] qemu-ga: ask and print error information from qemu-sockets, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 29/29] qmp: add NBD server commands, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 13/29] vnc: avoid Yoda conditionals, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 24/29] qapi: add socket address types, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 28/29] block: add close notifiers, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 09/29] migration (incoming): add error propagation to fd and exec protocols, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 10/29] qemu-char: ask and print error information from qemu-sockets, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 18/29] qemu-sockets: add error propagation to inet_connect_addr,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 22/29] vnc: drop QERR_VNC_SERVER_FAILED, Paolo Bonzini, 2012/10/19
- [Qemu-devel] [PATCH 17/29] qemu-sockets: include strerror or gai_strerror output in error messages, Paolo Bonzini, 2012/10/19
- Re: [Qemu-devel] [PULL 00/29] qemu-sockets error propagation + NBD server, Markus Armbruster, 2012/10/22
- Re: [Qemu-devel] [PULL 00/29] qemu-sockets error propagation + NBD server, Anthony Liguori, 2012/10/22
- Re: [Qemu-devel] [PULL 00/29] qemu-sockets error propagation + NBD server, Anthony Liguori, 2012/10/26