[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