From 1b7185f555d06faa9831c3b2345ddd9e88f03edf Mon Sep 17 00:00:00 2001 Message-Id: <1b7185f555d06faa9831c3b2345ddd9e88f03edf.1715388655.git.mdw@distorted.org.uk> From: Mark Wooding Date: Tue, 18 Apr 2017 00:39:24 +0100 Subject: [PATCH] uslip/uslip.c: Abstract out the server's EOF-on-stdin behaviour. Organization: Straylight/Edgeware From: Mark Wooding --- uslip/uslip.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/uslip/uslip.c b/uslip/uslip.c index 7752458c..853df5b2 100644 --- 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); } +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; @@ -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) { - 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) -- [mdw]