diff options
author | José Bollo <jose.bollo@iot.bzh> | 2019-08-20 12:32:02 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2019-08-20 12:42:56 +0200 |
commit | 99ad30bf29c683da833efeac42d8f178b6d2ca8c (patch) | |
tree | e2c082dbd05dbc91d91bda4e76498bcae1da22d1 | |
parent | 91de2500d8a3e96a5d6d486a31f51270eb8cdc61 (diff) |
Fix client disconnection closehalibut_8.0.2halibut_8.0.1halibut/8.0.2halibut/8.0.18.0.28.0.1
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.c | 6 | ||||
-rw-r--r-- | src/afb-ws.c | 6 | ||||
-rw-r--r-- | src/afs-supervisor.c | 6 |
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); } /* |