On Sat, Nov 17, 2007 at 05:37:17PM +0100, Otto Moerbeek wrote:

> On Fri, Nov 16, 2007 at 01:39:09PM +0100, Otto Moerbeek wrote:
> 
> > On Fri, Nov 16, 2007 at 01:13:42PM +0100, Otto Moerbeek wrote:
> > 
> > > On Fri, Nov 16, 2007 at 12:40:29PM +0100, frantisek holop wrote:
> > > > hmm, on Fri, Nov 16, 2007 at 12:30:00PM +0100, Toni Mueller said that
> > > > > > could someone test this before i submit a bug report?
> > > > > 
> > > > > I've removed the '-s' flag for this reason, although I would very much
> > > > > prefer to have it in place in the case that I have net access. I don't
> > > > > know whether it would be feasible for ntpd to see whether there's an
> > > > > appropriate route, and whether the relevant interfaces are up.
> > > > 
> > > > it definitely worked in 4.1 even with "-s".
> > > 
> > > It is this commit, which manages to keep the outging buffer full.
> > > 
> > > http://www.openbsd.org/cgi-bin/cvsweb/src/usr.sbin/ntpd/client.c.diff?r1=1.75&r2=1.76&f=h
> > > 
> > > Reverting it makes the problem go away.
> > > 
> > > Still thinking how to solve this.
> > > 
> > >   -Otto
> > 
> > This seems to work for me,
> > 
> >     -Otto
> 
> Grrrr, sent the wrong diff. This has a far batter chanche.

So, did anybody test this?

        -Otto

> 
> Index: client.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ntpd/client.c,v
> retrieving revision 1.76
> diff -u -p -r1.76 client.c
> --- client.c  1 May 2007 07:40:45 -0000       1.76
> +++ client.c  17 Nov 2007 16:34:07 -0000
> @@ -123,7 +123,8 @@ client_query(struct ntp_peer *p)
>       int     tos = IPTOS_LOWDELAY;
>  
>       if (p->addr == NULL && client_nextaddr(p) == -1) {
> -             set_next(p, scale_interval(INTERVAL_QUERY_AGGRESSIVE));
> +             set_next(p, MAX(SETTIME_TIMEOUT,
> +                 scale_interval(INTERVAL_QUERY_AGGRESSIVE)));
>               return (0);
>       }
>  
> @@ -140,8 +141,8 @@ client_query(struct ntp_peer *p)
>                       if (errno == ECONNREFUSED || errno == ENETUNREACH ||
>                           errno == EHOSTUNREACH || errno == EADDRNOTAVAIL) {
>                               client_nextaddr(p);
> -                             set_next(p,
> -                                 scale_interval(INTERVAL_QUERY_AGGRESSIVE));
> +                             set_next(p, MAX(SETTIME_TIMEOUT,
> +                                 scale_interval(INTERVAL_QUERY_AGGRESSIVE)));
>                               return (-1);
>                       } else
>                               fatal("client_query connect");

Reply via email to