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).
This commit is contained in:
Brian Somers 2000-10-09 22:49:44 +00:00
parent 8a52f3ecfe
commit b2c374decb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=66900

View File

@ -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 ! */
}