This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4/4] resolv: fix rotate option


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
> 

Attachment: pgpsjdMhubnUB.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]