From ef8df74bd538a38c2bf837576819f9256a5a72db Mon Sep 17 00:00:00 2001
From: Sergey Linev <S.Linev@gsi.de>
Date: Tue, 23 Aug 2016 15:59:17 +0200
Subject: [PATCH] http: adjust to new civetweb API

Signed-off-by: Sergey Linev <S.Linev@gsi.de>
Signed-off-by: Bertrand Bellenot <bertrand.bellenot@cern.ch>
---
 net/http/src/TCivetweb.cxx | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/net/http/src/TCivetweb.cxx b/net/http/src/TCivetweb.cxx
index 6d384dcb9b8..26a8c4c7a5b 100644
--- a/net/http/src/TCivetweb.cxx
+++ b/net/http/src/TCivetweb.cxx
@@ -27,15 +27,15 @@ static int log_message_handler(const struct mg_connection *conn, const char *mes
 }
 
 
-static int begin_request_handler(struct mg_connection *conn)
+static int begin_request_handler(struct mg_connection *conn, void*)
 {
-   TCivetweb *engine = (TCivetweb *) mg_get_request_info(conn)->user_data;
+   const struct mg_request_info *request_info = mg_get_request_info(conn);
+
+   TCivetweb *engine = (TCivetweb *) request_info->user_data;
    if (engine == 0) return 0;
    THttpServer *serv = engine->GetServer();
    if (serv == 0) return 0;
 
-   const struct mg_request_info *request_info = mg_get_request_info(conn);
-
    THttpCallArg arg;
 
    TString filename;
@@ -242,7 +242,7 @@ Bool_t TCivetweb::Create(const char *args)
 {
    fCallbacks = malloc(sizeof(struct mg_callbacks));
    memset(fCallbacks, 0, sizeof(struct mg_callbacks));
-   ((struct mg_callbacks *) fCallbacks)->begin_request = begin_request_handler;
+   //((struct mg_callbacks *) fCallbacks)->begin_request = begin_request_handler;
    ((struct mg_callbacks *) fCallbacks)->log_message = log_message_handler;
    TString sport = "8080";
    TString num_threads = "5";
@@ -315,6 +315,18 @@ Bool_t TCivetweb::Create(const char *args)
    // Start the web server.
    fCtx = mg_start((struct mg_callbacks *) fCallbacks, this, options);
 
-   return fCtx != 0;
+   if (fCtx == 0) return kFALSE;
+
+   mg_set_request_handler((struct mg_context *) fCtx, "/", begin_request_handler, 0);
+
+   mg_set_websocket_handler((struct mg_context *) fCtx,
+                            "**root.websocket$",
+                             websocket_connect_handler,
+                             websocket_ready_handler,
+                             websocket_data_handler,
+                             websocket_close_handler,
+                             0);
+
+   return kTRUE;
 }
 
-- 
GitLab