afb-websock: Fix double close
authorJosé Bollo <jose.bollo@iot.bzh>
Fri, 16 Mar 2018 10:39:07 +0000 (11:39 +0100)
committerJosé Bollo <jose.bollo@iot.bzh>
Fri, 16 Mar 2018 15:27:01 +0000 (16:27 +0100)
Integration with newer versions of libmicrohttpd
was closing two times the file descriptor:
 - one time by the websocket within afb
 - one time by the upgrade close of libmicrohttpd

Thanks to 'autoclose' feature of 'fdev', the solution
is quiet easily.

Bug-AGL: SPEC-1345

Change-Id: Ifb691b3f69c095b5ff44bfd7f7267ea24d52df6d
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-websock.c

index 257bd19..fdfca9d 100644 (file)
@@ -31,6 +31,7 @@
 #include "afb-websock.h"
 #include "afb-ws-json1.h"
 #include "afb-fdev.h"
+#include "fdev.h"
 
 /**************** WebSocket connection upgrade ****************************/
 
@@ -150,6 +151,7 @@ static void upgrade_to_websocket(
                /* TODO */
                close_websocket(urh);
        } else {
+               fdev_set_autoclose(fdev, 0);
                ws = memo->proto->create(fdev, memo->apiset, &memo->hreq->xreq.context, close_websocket, urh);
                if (ws == NULL) {
                        /* TODO */