summaryrefslogtreecommitdiffstats
path: root/contrib/bind/bin/named/ns_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bind/bin/named/ns_init.c')
-rw-r--r--contrib/bind/bin/named/ns_init.c63
1 files changed, 34 insertions, 29 deletions
diff --git a/contrib/bind/bin/named/ns_init.c b/contrib/bind/bin/named/ns_init.c
index c5842f6..553f047 100644
--- a/contrib/bind/bin/named/ns_init.c
+++ b/contrib/bind/bin/named/ns_init.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static const char sccsid[] = "@(#)ns_init.c 4.38 (Berkeley) 3/21/91";
-static const char rcsid[] = "$Id: ns_init.c,v 8.70 2000/12/23 08:14:38 vixie Exp $";
+static const char rcsid[] = "$Id: ns_init.c,v 8.73 2001/04/20 00:21:40 vixie Exp $";
#endif /* not lint */
/*
@@ -118,7 +118,11 @@ ns_refreshtime(struct zoneinfo *zp, time_t timebase) {
u_long refresh = (zp->z_refresh > 0) ? zp->z_refresh : INIT_REFRESH;
time_t half = (refresh + 1) / 2;
- zp->z_time = timebase + half + (rand() % half);
+ if (zp->z_flags & Z_NEEDREFRESH) {
+ zp->z_flags &= ~Z_NEEDREFRESH;
+ zp->z_time = timebase;
+ } else
+ zp->z_time = timebase + half + (rand() % half);
}
/*
@@ -126,6 +130,8 @@ ns_refreshtime(struct zoneinfo *zp, time_t timebase) {
*/
void
ns_retrytime(struct zoneinfo *zp, time_t timebase) {
+
+ zp->z_flags &= ~Z_NEEDREFRESH;
zp->z_time = timebase + zp->z_retry;
}
@@ -469,35 +475,34 @@ ns_nameok(const struct qinfo *qry, const char *name, int class,
s = newstr(strlen(transport_strings[transport]) +
sizeof " from [000.000.000.000] for [000.000.000.000]", 0);
if (s != NULL) {
- if ( (transport == response_trans) &&
- (qry != NULL) ) {
-
- if ( qry->q_flags & Q_PRIMING ) {
- sprintf(s, "%s from [%s] for priming",
- transport_strings[transport],
- inet_ntoa(source));
- } else if ( qry->q_flags & Q_ZSERIAL ) {
- sprintf(s, "%s from [%s] for soacheck",
- transport_strings[transport],
- inet_ntoa(source));
- } else if ( qry->q_flags & Q_SYSTEM ) {
- sprintf(s, "%s from [%s] for sysquery",
- transport_strings[transport],
- inet_ntoa(source));
+ if (transport == response_trans && qry != NULL) {
+ if ((qry->q_flags & Q_PRIMING) != 0) {
+ sprintf(s, "%s from [%s] for priming",
+ transport_strings[transport],
+ inet_ntoa(source));
+ } else if ((qry->q_flags & Q_ZSERIAL) != 0) {
+ sprintf(s, "%s from [%s] for soacheck",
+ transport_strings[transport],
+ inet_ntoa(source));
+ } else if ((qry->q_flags & Q_SYSTEM) != 0) {
+ sprintf(s, "%s from [%s] for sysquery",
+ transport_strings[transport],
+ inet_ntoa(source));
} else {
- q=strdup(inet_ntoa(qry->q_from.sin_addr));
- sprintf(s, "%s from [%s] for [%s]",
- transport_strings[transport],
- inet_ntoa(source),
- q != NULL ? q : "memget failed");
- free(q);
- }
-
- } else {
- sprintf(s, "%s from [%s]",
- transport_strings[transport],
- inet_ntoa(source));
+ q=strdup(inet_ntoa(qry->q_from.sin_addr));
+ sprintf(s, "%s from [%s] for [%s]",
+ transport_strings[transport],
+ inet_ntoa(source),
+ q != NULL ? q : "memget failed");
+ free(q);
}
+ } else {
+ sprintf(s, "%s from [%s]",
+ (transport == response_trans)
+ ? "query"
+ : transport_strings[transport],
+ inet_ntoa(source));
+ }
}
}
if (ns_samename(owner, name) == 1)
OpenPOWER on IntegriCloud