From b2c374decbc3ed1ad39429b3213078a1fcdb0bb3 Mon Sep 17 00:00:00 2001 From: Brian Somers Date: Mon, 9 Oct 2000 22:49:44 +0000 Subject: [PATCH] If write() gives -1/ENOBUFS, keep the packet and sleep for 1/10th of a second before attempting to write it again (unless there's something else to do instead). --- usr.sbin/ppp/physical.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/usr.sbin/ppp/physical.c b/usr.sbin/ppp/physical.c index e605131397a..c0979a98c29 100644 --- a/usr.sbin/ppp/physical.c +++ b/usr.sbin/ppp/physical.c @@ -408,12 +408,13 @@ physical_DescriptorWrite(struct fdescriptor *d, struct bundle *bundle, p->out = m_free(p->out); result = 1; } else if (nw < 0) { - if (errno != EAGAIN) { + if (errno == EAGAIN) + result = 1; + else if (errno != ENOBUFS) { log_Printf(LogPHASE, "%s: write (%d): %s\n", p->link.name, p->fd, strerror(errno)); datalink_Down(p->dl, CLOSE_NORMAL); } - result = 1; } /* else we shouldn't really have been called ! select() is broken ! */ }