2005. [bug] libbind: Retransmission timeouts should be

based on which attempt it is to the nameserver
                        and not the nameserver itself. [RT #13548]
This commit is contained in:
Mark Andrews 2006-03-08 04:14:10 +00:00
parent ae9e705032
commit f678d94a8a
2 changed files with 11 additions and 7 deletions

View file

@ -1,3 +1,7 @@
2005. [bug] libbind: Retransmission timeouts should be
based on which attempt it is to the nameserver
and not the nameserver itself. [RT #13548]
2004. [bug] dns_tsig_sign() could pass a NULL pointer to
dst_context_destroy() when cleaning up after a
error. [RT #15835]

View file

@ -70,7 +70,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
static const char sccsid[] = "@(#)res_send.c 8.1 (Berkeley) 6/4/93";
static const char rcsid[] = "$Id: res_send.c,v 1.5.2.9 2005/08/15 02:05:45 marka Exp $";
static const char rcsid[] = "$Id: res_send.c,v 1.5.2.10 2006/03/08 04:14:10 marka Exp $";
#endif /* LIBC_SCCS and not lint */
/*
@ -130,7 +130,7 @@ static struct sockaddr * get_nsaddr __P((res_state, size_t));
static int send_vc(res_state, const u_char *, int,
u_char *, int, int *, int);
static int send_dg(res_state, const u_char *, int,
u_char *, int, int *, int,
u_char *, int, int *, int, int,
int *, int *);
static void Aerror(const res_state, FILE *, const char *, int,
const struct sockaddr *, int);
@ -458,7 +458,7 @@ res_nsend(res_state statp,
} else {
/* Use datagrams. */
n = send_dg(statp, buf, buflen, ans, anssiz, &terrno,
ns, &v_circuit, &gotsomewhere);
ns, try, &v_circuit, &gotsomewhere);
if (n < 0)
goto fail;
if (n == 0)
@ -766,9 +766,9 @@ send_vc(res_state statp,
}
static int
send_dg(res_state statp,
const u_char *buf, int buflen, u_char *ans, int anssiz,
int *terrno, int ns, int *v_circuit, int *gotsomewhere)
send_dg(res_state statp, const u_char *buf, int buflen, u_char *ans,
int anssiz, int *terrno, int ns, int try, int *v_circuit,
int *gotsomewhere)
{
const HEADER *hp = (const HEADER *) buf;
HEADER *anhp = (HEADER *) ans;
@ -849,7 +849,7 @@ send_dg(res_state statp,
/*
* Wait for reply.
*/
seconds = (statp->retrans << ns);
seconds = (statp->retrans << try);
if (ns > 0)
seconds /= statp->nscount;
if (seconds <= 0)