From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 25734 invoked from network); 25 Aug 2022 02:59:16 -0000 Received: from second.openwall.net (193.110.157.125) by inbox.vuxu.org with ESMTPUTF8; 25 Aug 2022 02:59:16 -0000 Received: (qmail 20135 invoked by uid 550); 25 Aug 2022 02:59:12 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 20103 invoked from network); 25 Aug 2022 02:59:12 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1661396340; bh=BwxmikQzoagzmWFprlA8SImCQaJAoqjpRPVy5JV0Uxw=; h=X-UI-Sender-Class:Date:From:To:Subject:References:In-Reply-To; b=fVoT2JJHjiiDA5oVTtIh3EFwtJAiwsFXBNEjDMl5W5hMld81WCrOKo96MNhGsCD76 84LD+jeVuxI51HAg+7En2WCvvIWqkrzNTlKiQOfKjzBVzWPc+7VbeW1Ut/a4sht0Q2 fU6/1wjcLJ10sZNV875TqrGirTOkBzUp95yw34iU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Date: Thu, 25 Aug 2022 04:58:59 +0200 From: Markus Wichmann To: musl@lists.openwall.com Message-ID: <20220825025859.GC1923@voyager> References: <20220824190349.GB1923@voyager> <20220824232657.GL7074@brightrain.aerifal.cx> <20220824233228.GM7074@brightrain.aerifal.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220824233228.GM7074@brightrain.aerifal.cx> User-Agent: Mutt/1.9.4 (2018-02-28) X-Provags-ID: V03:K1:pF5UjduMQ4Nf3v3OIu12ZtD5QEqioimmk11U+5AMs/HKbpoXDgH +FbGltOB++Nz7Vl8vAMSjwwD2qn7usPw/lmZCrcvhdiVC4MSUzaYqa3P1TU20raCjEIe19j nTImlajPmyqONBEai4Haudy59hjdhvrE5VjHpa26HayNOYNbCQVoEoQR+LmzipElKQmo2tr 6QQUAnJu8nh5D+Qm90lyg== X-UI-Out-Filterresults: notjunk:1;V03:K0:smFi1HBlwdc=:z2e99pGP8wvT45MCy82adO t0ehJ6K8rU1/w15q8wiLD6ET2421NECybrShvKqMdTtn3hRo8XqRACToaB4e1cr6zRsVfsveZ IqMrgDs0SHm7KzYK2M+nQpE/O4yQXZNQ+VOw87S0m3dw0l4zkfk7YiDPvLTt+ngVt/F9H/pks Sfj8+k8RKQEjvcOSUj6rcKe9s9CMcXfvG2Nr/Ooh58/XZPLHAQvheK5V2JMb4qpCGi27kD0nH qTdMZkbxpW7E0eQdZULtESfrWUcJ4Uvk3DaECec7hHOpXU3iEzOEJS+9GIFEWAWl+xEXyx9Ck bUnd21He3yieUBfKALv8is/JRBQpzfwAbDO3QOPtX0pL588oJBn2Ztn+O60fecTNt6nhJuNdy SuL2JWZzST31jJnJZCllwSJCZqXR8L6oApUaplAgRVQjkuyd475YbUOvkYL2tsRBmw0gwcwi2 wH4Rqs0bY93ggRWXJpinH4/S6OH+sxb9gTR6+B+KCwJWX48b+wlvfpKnUqgUOaZerAXRsW5EJ xxYLY6qV1NA4P9It7YV58uMGhIDAugl5BHWIhyo/yCE7L9M5VHwZ2PpfrSJ2Z7+Ep74u25AJ/ bVYz8p9WjOyuDKcsWSE5bLk7iHFMCBB80wmAnoIYA4s0SprTmOxwkqqH6s+XvMfWvsRQtfLtl pO7hHMwMR38RQjiDIJgHkcd5R4LFvmkUNHflBSOHwHK9EgCCwi7e+y+kLAqJvBYU1IIrBL9na BVNkpoIo8yKRGZ9aT2KPtDGiwwJR6H8LClTSeUbhv5tfE4qRDk3f4u0NXmrxgbYEcyvdYBVhy 83M5Ma846u1R97r5l4fO3oitCAaRBLyu3gKupt96hGsikTxsPdo6WZMotMcKWDC3eP798B/BY zOUVLUxwaHadzrMNGv7Rbs8IlRU7HKO6xSsoUO5fzusjPz/JXCcqw7ZWFtwSSLD2nwbtvtGH4 RprYceK46KicMy/qrUVBKt77y+dzEBewMeVhmosw3HPJVY1FksPOxkOZRzGTOwuJtWhRM0Z8J MmJpSEk0BTiVWjJOe1PbEZjlcGxw2c2sYSlaktlDXrHvxJrYi22RGHEbtOGS71ciRpXXIc+mJ s6lzJXV3QOuy56q434dky5F978Dl0cq6950uABKpVLQKljET423DqUVcQ== Content-Transfer-Encoding: quoted-printable Subject: Re: [musl] IPv4 fallback in __res_msend_rc not functional On Wed, Aug 24, 2022 at 07:32:28PM -0400, Rich Felker wrote: > Does this work? > > diff --git a/src/network/res_msend.c b/src/network/res_msend.c > index 3e018009..105bf598 100644 > --- a/src/network/res_msend.c > +++ b/src/network/res_msend.c > @@ -68,14 +68,15 @@ int __res_msend_rc(int nqueries, const unsigned char= *const *queries, > } > > /* Get local address and open/bind a socket */ > - sa.sin.sin_family =3D family; > fd =3D socket(family, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); > > /* Handle case where system lacks IPv6 support */ > if (fd < 0 && family =3D=3D AF_INET6 && errno =3D=3D EAFNOSUPPORT) { > fd =3D socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); > family =3D AF_INET; > + sl =3D sizeof sa.sin; > } > + sa.sin.sin_family =3D family; > if (fd < 0 || bind(fd, (void *)&sa, sl) < 0) { > if (fd >=3D 0) close(fd); > pthread_setcancelstate(cs, 0); > That would have been my proposal as well, although I would have added a "if (ns[j].sin.sin_family =3D=3D family)" in front of the sendto call as well. Another question to think about is if the function should terminate early if there are no usable servers in the config. Without the IPv4 fallback, this could only happen with conf->nns =3D=3D 0, but with it, it can also happen when all configured servers are IPv6 and IPv6 is unusable (which the callers can't know). In that case, the function would now not send anything (as sendto() fails silently), and wait in vain for a response. Ciao, Markus