@ -1,4 +1,4 @@
/* $OpenBSD: ntp.c,v 1.53 2005/03/08 16:27:14 deraadt Exp $ */
/* $OpenBSD: ntp.c,v 1.54 2005/03/08 16:33:43 henning Exp $ */
/*
/*
* Copyright ( c ) 2003 , 2004 Henning Brauer < henning @ openbsd . org >
* Copyright ( c ) 2003 , 2004 Henning Brauer < henning @ openbsd . org >
@ -64,7 +64,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf)
{
{
int a , b , nfds , i , j , idx_peers , timeout , nullfd ;
int a , b , nfds , i , j , idx_peers , timeout , nullfd ;
u_int pfd_elms = 0 , idx2peer_elms = 0 ;
u_int pfd_elms = 0 , idx2peer_elms = 0 ;
u_int listener_cnt , new_cnt , sent_cnt ;
u_int listener_cnt , new_cnt , sent_cnt , trial_cnt ;
pid_t pid ;
pid_t pid ;
struct pollfd * pfd = NULL ;
struct pollfd * pfd = NULL ;
struct passwd * pw ;
struct passwd * pw ;
@ -193,13 +193,15 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf)
}
}
idx_peers = i ;
idx_peers = i ;
sent_cnt = 0 ;
sent_cnt = trial_cnt = 0 ;
TAILQ_FOREACH ( p , & conf - > ntp_peers , entry ) {
TAILQ_FOREACH ( p , & conf - > ntp_peers , entry ) {
if ( p - > next > 0 & & p - > next < nextaction )
if ( p - > next > 0 & & p - > next < nextaction )
nextaction = p - > next ;
nextaction = p - > next ;
if ( p - > next > 0 & & p - > next < = time ( NULL ) )
if ( p - > next > 0 & & p - > next < = time ( NULL ) ) {
trial_cnt + + ;
if ( client_query ( p ) = = 0 )
if ( client_query ( p ) = = 0 )
sent_cnt + + ;
sent_cnt + + ;
}
if ( p - > deadline > 0 & & p - > deadline < nextaction )
if ( p - > deadline > 0 & & p - > deadline < nextaction )
nextaction = p - > deadline ;
nextaction = p - > deadline ;
@ -225,7 +227,7 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf)
}
}
}
}
if ( sent_cnt = = 0 & & conf - > settime )
if ( trial_cnt > 0 & & sent_cnt = = 0 & & conf - > settime )
priv_settime ( 0 ) ; /* no good peers, don't wait */
priv_settime ( 0 ) ; /* no good peers, don't wait */
if ( ibuf_main - > w . queued > 0 )
if ( ibuf_main - > w . queued > 0 )