Refactoring requests and context handling
[src/app-framework-binder.git] / src / afb-websock.c
index 283a88b..0247aae 100644 (file)
@@ -28,6 +28,7 @@
 #include "afb-ws-json.h"
 
 #include "afb-method.h"
+#include "afb-context.h"
 #include "afb-hreq.h"
 #include "afb-websock.h"
 
@@ -162,7 +163,7 @@ static int check_websocket_upgrade(struct MHD_Connection *con, const struct prot
        }
 
        /* create the web socket */
-       ws = proto->create(dup(MHD_get_connection_info(con, MHD_CONNECTION_INFO_CONNECTION_FD)->connect_fd),
+       ws = proto->create(MHD_get_connection_info(con, MHD_CONNECTION_INFO_CONNECTION_FD)->connect_fd,
                        context,
                        (void*)MHD_resume_connection,
                        con);
@@ -203,9 +204,12 @@ int afb_websock_check_upgrade(struct afb_hreq *hreq)
                return 0;
 
        ws = NULL;
-       rc = check_websocket_upgrade(hreq->connection, protodefs, afb_hreq_context(hreq), &ws);
-       if (rc && ws != NULL)
-               hreq->upgrade = 1;
+       rc = check_websocket_upgrade(hreq->connection, protodefs, hreq->context.session, &ws);
+       if (rc == 1) {
+               hreq->replied = 1;
+               if (ws != NULL)
+                       hreq->upgrade = 1;
+       }
        return rc;
 }