diff options
author | José Bollo <jose.bollo@iot.bzh> | 2016-04-21 13:03:39 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2016-04-21 13:03:39 +0200 |
commit | 84d02312c1946a23751b6eaaeff113ca1025b9b0 (patch) | |
tree | e860e861e039ebeb279b4f81c5458153bf4b75ae | |
parent | 04b1757467bcb4e287dd1c34d5a21f76705340d6 (diff) |
handles disconnection
Change-Id: I0fce95b5ff4de8e826ceb4da1bc2ac86f21d70b1
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r-- | src/afb-ws.c | 7 |
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) |