From nobody Sun Feb 8 08:22:26 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1532444099454162.15607826416806; Tue, 24 Jul 2018 07:54:59 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0D0D7D2EF9; Tue, 24 Jul 2018 14:54:58 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CE531CD0CD; Tue, 24 Jul 2018 14:54:57 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7647F18037F2; Tue, 24 Jul 2018 14:54:57 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w6OEIFcx014744 for ; Tue, 24 Jul 2018 10:18:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id 033A710FFE4E; Tue, 24 Jul 2018 14:18:15 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1160910FFE4D; Tue, 24 Jul 2018 14:18:13 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Tue, 24 Jul 2018 15:18:09 +0100 Message-Id: <20180724141810.26143-2-berrange@redhat.com> In-Reply-To: <20180724141810.26143-1-berrange@redhat.com> References: <20180724141810.26143-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Cc: Olaf Hering Subject: [libvirt] [PATCH 1/2] socket: preserve real errno when socket/bind calls fail X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.27 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 24 Jul 2018 14:54:58 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 When reporting socket/bind failures we want to ensure any fatal error reported is as accurate as possible. We'll prefer reporting a bind() errno over a socket() errno, because if socket() works but bind() fails that is a more significant event. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Jiri Denemark --- src/rpc/virnetsocket.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c index fee61ace60..8e04d61e98 100644 --- a/src/rpc/virnetsocket.c +++ b/src/rpc/virnetsocket.c @@ -310,8 +310,8 @@ int virNetSocketNewListenTCP(const char *nodename, struct addrinfo hints; int fd =3D -1; size_t i; - bool addrInUse =3D false; - bool familyNotSupported =3D false; + int socketErrno =3D 0; + int bindErrno =3D 0; virSocketAddr tmp_addr; =20 *retsocks =3D NULL; @@ -351,7 +351,7 @@ int virNetSocketNewListenTCP(const char *nodename, if ((fd =3D socket(runp->ai_family, runp->ai_socktype, runp->ai_protocol)) < 0) { if (errno =3D=3D EAFNOSUPPORT) { - familyNotSupported =3D true; + socketErrno =3D errno; runp =3D runp->ai_next; continue; } @@ -386,7 +386,7 @@ int virNetSocketNewListenTCP(const char *nodename, virReportSystemError(errno, "%s", _("Unable to bind to por= t")); goto error; } - addrInUse =3D true; + bindErrno =3D errno; VIR_FORCE_CLOSE(fd); runp =3D runp->ai_next; continue; @@ -409,14 +409,14 @@ int virNetSocketNewListenTCP(const char *nodename, fd =3D -1; } =20 - if (nsocks =3D=3D 0 && familyNotSupported) { - virReportSystemError(EAFNOSUPPORT, "%s", _("Unable to bind to port= ")); - goto error; - } - - if (nsocks =3D=3D 0 && - addrInUse) { - virReportSystemError(EADDRINUSE, "%s", _("Unable to bind to port")= ); + if (nsocks =3D=3D 0) { + if (bindErrno) { + virReportSystemError(bindErrno, "%s", _("Unable to bind to por= t")); + } else if (socketErrno) { + virReportSystemError(socketErrno, "%s", _("Unable to create so= cket")); + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("No addresses t= o bind to")); + } goto error; } =20 --=20 2.17.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list