[PATCH 4/4] resolv: fix rotate option
Siddhesh Poyarekar
siddhesh@redhat.com
Fri Jun 20 03:03:00 GMT 2014
On Fri, Jun 13, 2014 at 05:32:13PM +0200, Aurelien Jarno wrote:
> The rotate option doesn't work correctly, and only send the query to the
> same server (the second in the list). The rotation code in itself is not
> broken, but the nsaddrs structure is reinitialized each time at the
> beginning of __libc_res_nsend unless RES_STAYOPEN is enabled.
>
> This is due to a call to __res_iclose from the end of __libc_res_nsend
> when answers from the name server have been received. This function
> closes all the sockets, but doesn't free the addresses (it can do that,
> but in that case the second argument is false).
>
> This patch change the code of __res_iclose to clear
> statp->_u._ext.nsinit only when the addresses are actually freed.
>
> 2014-06-13 Aurelien Jarno <aurelien@aurel32.net>
>
> * resolv/res_init.c (__res_iclose): Only clear nsinit if the
> addresses have been freed.
Looks good to me, but I think this deserves a separate bug report from
the general 'ipv6 name resolution is broken' bug report you filed for
this patchset.
Siddhesh
>
> diff --git a/resolv/res_init.c b/resolv/res_init.c
> index 95564af..42e16b6 100644
> --- a/resolv/res_init.c
> +++ b/resolv/res_init.c
> @@ -621,7 +621,8 @@ __res_iclose(res_state statp, bool free_addr) {
> statp->_u._ext.nsaddrs[ns] = NULL;
> }
> }
> - statp->_u._ext.nsinit = 0;
> + if (free_addr)
> + statp->_u._ext.nsinit = 0;
> }
> libc_hidden_def (__res_iclose)
>
> --
> 2.0.0
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20140620/b1d4711d/attachment.sig>
More information about the Libc-alpha
mailing list