summaryrefslogtreecommitdiffstats
path: root/buffer-poll.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-11-07 19:41:17 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-11-07 19:41:17 +0000
commit35591ecd4eccb96bb1c34909f3f463b09f1db7db (patch)
treee910be6214c2c3a9cf69ceae820c8ab8c2237dd4 /buffer-poll.c
parent08d9f46aae69e942a5db9a20463c27ac3c0ebbb8 (diff)
Try write even if read gets signal, some other tweaks.
Diffstat (limited to 'buffer-poll.c')
-rw-r--r--buffer-poll.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/buffer-poll.c b/buffer-poll.c
index e3c64832..06cbf81f 100644
--- a/buffer-poll.c
+++ b/buffer-poll.c
@@ -1,4 +1,4 @@
-/* $Id: buffer-poll.c,v 1.1.1.1 2007-07-09 19:04:12 nicm Exp $ */
+/* $Id: buffer-poll.c,v 1.2 2007-11-07 19:41:17 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -40,18 +40,16 @@ buffer_poll(struct pollfd *pfd, struct buffer *in, struct buffer *out)
if (n == -1) {
if (errno != EINTR && errno != EAGAIN)
return (-1);
- return (0);
- }
- buffer_add(in, n);
+ } else
+ buffer_add(in, n);
}
if (BUFFER_USED(out) > 0 && pfd->revents & POLLOUT) {
n = write(pfd->fd, BUFFER_OUT(out), BUFFER_USED(out));
if (n == -1) {
if (errno != EINTR && errno != EAGAIN)
return (-1);
- return (0);
- }
- buffer_remove(out, n);
+ } else
+ buffer_remove(out, n);
}
return (0);
}