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] | |
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] |