@ -1,4 +1,4 @@
/* $OpenBSD: ntp.c,v 1.50 2005/02/02 19:03:52 henning Exp $ */
/* $OpenBSD: ntp.c,v 1.51 2005/02/22 12:03:24 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 ;
u_int listener_cnt , new_cnt , sent_cnt ;
pid_t pid ;
pid_t pid ;
struct pollfd * pfd = NULL ;
struct pollfd * pfd = NULL ;
struct passwd * pw ;
struct passwd * pw ;
@ -191,11 +191,13 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf)
}
}
idx_peers = i ;
idx_peers = i ;
sent_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 ) )
client_query ( p ) ;
if ( client_query ( p ) = = 0 )
sent_cnt + + ;
if ( p - > deadline > 0 & & p - > deadline < nextaction )
if ( p - > deadline > 0 & & p - > deadline < nextaction )
nextaction = p - > deadline ;
nextaction = p - > deadline ;
@ -221,6 +223,9 @@ ntp_main(int pipe_prnt[2], struct ntpd_conf *nconf)
}
}
}
}
if ( sent_cnt = = 0 & & conf - > settime )
priv_settime ( 0 ) ; /* no good peers, don't wait */
if ( ibuf_main - > w . queued > 0 )
if ( ibuf_main - > w . queued > 0 )
pfd [ PFD_PIPE_MAIN ] . events | = POLLOUT ;
pfd [ PFD_PIPE_MAIN ] . events | = POLLOUT ;