From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46397) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TJriJ-0001TM-03 for qemu-devel@nongnu.org; Thu, 04 Oct 2012 16:08:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TJriG-00064c-Nf for qemu-devel@nongnu.org; Thu, 04 Oct 2012 16:08:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40704) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TJriG-00064F-Cm for qemu-devel@nongnu.org; Thu, 04 Oct 2012 16:08:04 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q94K83rv000359 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 4 Oct 2012 16:08:03 -0400 Date: Thu, 4 Oct 2012 17:08:56 -0300 From: Luiz Capitulino Message-ID: <20121004170856.5941bed1@doriath.home> In-Reply-To: <1349275025-5093-12-git-send-email-pbonzini@redhat.com> References: <1349275025-5093-1-git-send-email-pbonzini@redhat.com> <1349275025-5093-12-git-send-email-pbonzini@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 11/18] nbd: ask and print error information from qemu-sockets List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: qemu-devel@nongnu.org On Wed, 3 Oct 2012 16:36:58 +0200 Paolo Bonzini wrote: > Before: > > $ qemu-system-x86_64 nbd:localhost:12345 > inet_connect_opts: connect(ipv4,yakj.usersys.redhat.com,127.0.0.1,12345): Connection refused > qemu-system-x86_64: could not open disk image nbd:localhost:12345: Connection refused > > After: > > $ x86_64-softmmu/qemu-system-x86_64 nbd:localhost:12345 > qemu-system-x86_64: Failed to connect to socket: Connection refused > qemu-system-x86_64: could not open disk image nbd:localhost:12345: Connection refused > > Signed-off-by: Paolo Bonzini > --- > nbd.c | 39 +++++++++++++++++++++++++++++++-------- > 1 file modificato, 31 inserzioni(+), 8 rimozioni(-) > > diff --git a/nbd.c b/nbd.c > index f61a288..cec5a94 100644 > --- a/nbd.c > +++ b/nbd.c > @@ -208,7 +208,14 @@ int tcp_socket_outgoing(const char *address, uint16_t port) > > int tcp_socket_outgoing_spec(const char *address_and_port) > { > - return inet_connect(address_and_port, NULL); > + Error *local_err = NULL; > + int fd = inet_connect(address_and_port, &local_err); > + > + if (local_err != NULL) { > + qerror_report_err(local_err); > + error_free(local_err); Can't you propagate errp instead of using qerror_report_err()? This function should only be used when the caller expects QError semantics. > + } > + return fd; > } > > int tcp_socket_incoming(const char *address, uint16_t port) > @@ -220,22 +227,38 @@ int tcp_socket_incoming(const char *address, uint16_t port) > > int tcp_socket_incoming_spec(const char *address_and_port) > { > - char *ostr = NULL; > - int olen = 0; > - return inet_listen(address_and_port, ostr, olen, SOCK_STREAM, 0, NULL); > + Error *local_err = NULL; > + int fd = inet_listen(address_and_port, NULL, 0, SOCK_STREAM, 0, &local_err); > + > + if (local_err != NULL) { > + qerror_report_err(local_err); > + error_free(local_err); > + } > + return fd; > } > > int unix_socket_incoming(const char *path) > { > - char *ostr = NULL; > - int olen = 0; > + Error *local_err = NULL; > + int fd = unix_listen(path, NULL, 0, &local_err); > > - return unix_listen(path, ostr, olen, NULL); > + if (local_err != NULL) { > + qerror_report_err(local_err); > + error_free(local_err); > + } > + return fd; > } > > int unix_socket_outgoing(const char *path) > { > - return unix_connect(path, NULL); > + Error *local_err = NULL; > + int fd = unix_connect(path, &local_err); > + > + if (local_err != NULL) { > + qerror_report_err(local_err); > + error_free(local_err); > + } > + return fd; > } > > /* Basic flow for negotiation