chiark
/
gitweb
/
~mdw
/
tripe
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2a74827
)
uslip/uslip.c: Abstract out the server's EOF-on-stdin behaviour.
author
Mark Wooding
<mdw@distorted.org.uk>
Mon, 17 Apr 2017 23:39:24 +0000
(
00:39
+0100)
committer
Mark Wooding
<mdw@distorted.org.uk>
Sun, 23 Apr 2017 03:13:33 +0000
(
04:13
+0100)
uslip/uslip.c
patch
|
blob
|
blame
|
history
diff --git
a/uslip/uslip.c
b/uslip/uslip.c
index 7752458c286031d3156f1c6f359dc1d32f015b95..853df5b2233ea853bc3a851d3373462432436240 100644
(file)
--- a/
uslip/uslip.c
+++ b/
uslip/uslip.c
@@
-461,6
+461,16
@@
static void done_slip_dribble(dribbler *d, int err, void *hunoz)
cripple_dribbler(d);
}
cripple_dribbler(d);
}
+static void close_slip(int fd)
+{
+ switch (slipstate) {
+ case SYNC1: case SYNC2: case START: case BAD: break;
+ default: moan("eof found while processing packet (discarding)"); break;
+ }
+ close(fd); sel_rmfile(&slip_in);
+ reasons--;
+}
+
static void do_slip_in(int fd, unsigned mode, void *hunoz)
{
ssize_t i, n;
static void do_slip_in(int fd, unsigned mode, void *hunoz)
{
ssize_t i, n;
@@
-477,19
+487,7
@@
static void do_slip_in(int fd, unsigned mode, void *hunoz)
for (;;) {
n = read(fd, buf, sizeof(buf));
if (n == 0) {
for (;;) {
n = read(fd, buf, sizeof(buf));
if (n == 0) {
- switch (slipstate) {
- case SYNC1:
- case SYNC2:
- case START:
- case BAD:
- break;
- default:
- moan("eof found while processing packet (discarding)");
- break;
- }
- close(fd);
- sel_rmfile(&slip_in);
- reasons--;
+ close_slip(fd);
return;
} else if (n < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR)
return;
} else if (n < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR)