Browse Source

don't panic when sendto() fails; for the client part just re-schedule

noticed & fix tested by fries@
OPENBSD_3_6
henning 20 years ago
parent
commit
cb18fdd6ed
2 changed files with 12 additions and 6 deletions
  1. +7
    -3
      src/usr.sbin/ntpd/client.c
  2. +5
    -3
      src/usr.sbin/ntpd/ntp_msg.c

+ 7
- 3
src/usr.sbin/ntpd/client.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: client.c,v 1.18 2004/07/09 10:53:33 henning Exp $ */
/* $OpenBSD: client.c,v 1.19 2004/07/09 15:02:15 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -104,8 +104,12 @@ client_query(struct ntp_peer *p)
p->query->msg.xmttime.fraction = arc4random();
p->query->xmttime = gettime();
ntp_sendmsg(p->query->fd, (struct sockaddr *)&p->addr->ss,
&p->query->msg, NTP_MSGSIZE_NOAUTH, 0);
if (ntp_sendmsg(p->query->fd, (struct sockaddr *)&p->addr->ss,
&p->query->msg, NTP_MSGSIZE_NOAUTH, 0) == -1) {
p->next = time(NULL) + INTERVAL_QUERY_PATHETIC;
return (-1);
}
p->state = STATE_QUERY_SENT;
p->next = 0;
p->deadline = time(NULL) + QUERYTIME_MAX;


+ 5
- 3
src/usr.sbin/ntpd/ntp_msg.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: ntp_msg.c,v 1.2 2004/07/07 07:32:05 alexander Exp $ */
/* $OpenBSD: ntp_msg.c,v 1.3 2004/07/09 15:02:15 henning Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -135,8 +135,10 @@ ntp_sendmsg(int fd, struct sockaddr *sa, struct ntp_msg *msg, ssize_t len,
/* XXX */
}
if (sendto(fd, &buf, len, 0, sa, sa->sa_len) != len)
fatal("sendto");
if (sendto(fd, &buf, len, 0, sa, sa->sa_len) != len) {
log_warn("sendto");
return (-1);
}
return (0);
}

Loading…
Cancel
Save