aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2019-08-20 12:32:02 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2019-08-20 12:42:56 +0200
commit99ad30bf29c683da833efeac42d8f178b6d2ca8c (patch)
treee2c082dbd05dbc91d91bda4e76498bcae1da22d1
parent91de2500d8a3e96a5d6d486a31f51270eb8cdc61 (diff)
Before that change, the client disconection made a loop on read but wasn't closing the link. Bug-AGL: SPEC-2759 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Iecfbb95cb1b7079e695ff5c08155b2310bf4b8d8
-rw-r--r--src/afb-api-ws.c6
-rw-r--r--src/afb-ws.c6
-rw-r--r--src/afs-supervisor.c6
3 files changed, 9 insertions, 9 deletions
diff --git a/src/afb-api-ws.c b/src/afb-api-ws.c
index 6b242e15..72f4cec4 100644
--- a/src/afb-api-ws.c
+++ b/src/afb-api-ws.c
@@ -144,10 +144,10 @@ static void api_ws_server_listen_callback(void *closure, uint32_t revents, struc
{
struct api_ws_server *apiws = closure;
- if ((revents & EPOLLIN) != 0)
- api_ws_server_accept(apiws);
- else if ((revents & EPOLLHUP) != 0)
+ if ((revents & EPOLLHUP) != 0)
api_ws_server_connect(apiws);
+ else if ((revents & EPOLLIN) != 0)
+ api_ws_server_accept(apiws);
}
static void api_ws_server_disconnect(struct api_ws_server *apiws)
diff --git a/src/afb-ws.c b/src/afb-ws.c
index fb31e4fe..bb35c9d1 100644
--- a/src/afb-ws.c
+++ b/src/afb-ws.c
@@ -132,10 +132,10 @@ static void aws_disconnect(struct afb_ws *ws, int call_on_hangup)
static void fdevcb(void *ws, uint32_t revents, struct fdev *fdev)
{
- if ((revents & EPOLLIN) != 0)
- aws_on_readable(ws);
- else if ((revents & EPOLLHUP) != 0)
+ if ((revents & EPOLLHUP) != 0)
afb_ws_hangup(ws);
+ else if ((revents & EPOLLIN) != 0)
+ aws_on_readable(ws);
}
/*
diff --git a/src/afs-supervisor.c b/src/afs-supervisor.c
index 31b8b7c3..9746a0f3 100644
--- a/src/afs-supervisor.c
+++ b/src/afs-supervisor.c
@@ -280,12 +280,12 @@ static void accept_supervision_link(int sock)
*/
static void listening(void *closure, uint32_t revents, struct fdev *fdev)
{
- if ((revents & EPOLLIN) != 0)
- accept_supervision_link((int)(intptr_t)closure);
- else if ((revents & EPOLLHUP) != 0) {
+ if ((revents & EPOLLHUP) != 0) {
ERROR("supervision socket closed");
exit(1);
}
+ if ((revents & EPOLLIN) != 0)
+ accept_supervision_link((int)(intptr_t)closure);
}
/*