aboutsummaryrefslogtreecommitdiffstats
path: root/src/afb-ws.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-04-21 13:03:39 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2016-04-21 13:03:39 +0200
commit84d02312c1946a23751b6eaaeff113ca1025b9b0 (patch)
treee860e861e039ebeb279b4f81c5458153bf4b75ae /src/afb-ws.c
parent04b1757467bcb4e287dd1c34d5a21f76705340d6 (diff)
handles disconnection
Change-Id: I0fce95b5ff4de8e826ceb4da1bc2ac86f21d70b1 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-ws.c')
-rw-r--r--src/afb-ws.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/afb-ws.c b/src/afb-ws.c
index 66d1e8d1..2ebfbb93 100644
--- a/src/afb-ws.c
+++ b/src/afb-ws.c
@@ -148,12 +148,17 @@ static ssize_t aws_readv(struct afb_ws *ws, const struct iovec *iov, int iovcnt)
do {
rc = readv(ws->fd, iov, iovcnt);
} while(rc == -1 && errno == EINTR);
+ if (rc == 0) {
+ errno = EPIPE;
+ rc = -1;
+ }
return rc;
}
static void aws_on_readable(struct afb_ws *ws)
{
- websock_dispatch(ws->ws);
+ if (websock_dispatch(ws->ws) < 0 && errno == EPIPE)
+ afb_ws_disconnect(ws);
}
static void aws_on_hangup(struct afb_ws *ws)