From cfcd8a8f73aa337e8f45d287a79cd9b8e5c51dcd Mon Sep 17 00:00:00 2001
From: Bernd Kuhls <bernd.kuhls@t-online.de>
Date: Sun, 5 Jul 2020 11:42:23 +0200
Subject: [PATCH] Compatibility with libmicrohttpd 0.9.71

From the libmicrohttpd 0.9.71 release notes:

Furthermore, the release introduces an 'enum MHD_Result' instead of
defines for MHD_YES/MHD_NO. This is intended to make it easier to check
for certain API misuse bugs by providing better types (not everything is
an 'int').  While this does NOT change the binary API, this change
_will_ cause compiler warnings for all legacy code -- until 'int' is
replaced with 'enum MHD_Result'

Patch sent upstream: https://github.com/etr/libhttpserver/pull/199

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 src/http_request.cpp            |  6 +++---
 src/httpserver/http_request.hpp |  6 +++---
 src/httpserver/http_utils.hpp   |  4 ++++
 src/httpserver/webserver.hpp    | 14 +++++++-------
 src/webserver.cpp               | 22 +++++++++++++---------
 5 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/src/http_request.cpp b/src/http_request.cpp
index 5703663..be342c7 100644
--- a/src/http_request.cpp
+++ b/src/http_request.cpp
@@ -88,7 +88,7 @@ const std::string http_request::get_connection_value(const std::string& key, enu
     return header_c;
 }
 
-int http_request::build_request_header(
+MHD_Result http_request::build_request_header(
         void *cls,
         enum MHD_ValueKind kind,
         const char *key,
@@ -189,7 +189,7 @@ const std::string http_request::get_querystring() const
     return querystring;
 }
 
-int http_request::build_request_args(
+MHD_Result http_request::build_request_args(
         void *cls,
         enum MHD_ValueKind kind,
         const char *key,
@@ -204,7 +204,7 @@ int http_request::build_request_args(
     return MHD_YES;
 }
 
-int http_request::build_request_querystring(
+MHD_Result http_request::build_request_querystring(
         void *cls,
         enum MHD_ValueKind kind,
         const char *key,
diff --git a/src/httpserver/http_request.hpp b/src/httpserver/http_request.hpp
index 139272b..62e5275 100644
--- a/src/httpserver/http_request.hpp
+++ b/src/httpserver/http_request.hpp
@@ -247,15 +247,15 @@ class http_request
 
         unescaper_ptr unescaper = 0x0;
 
-        static int build_request_header(void *cls, enum MHD_ValueKind kind,
+        static MHD_Result build_request_header(void *cls, enum MHD_ValueKind kind,
                 const char *key, const char *value
         );
 
-        static int build_request_args(void *cls, enum MHD_ValueKind kind,
+        static MHD_Result build_request_args(void *cls, enum MHD_ValueKind kind,
                 const char *key, const char *value
         );
 
-        static int build_request_querystring(void *cls, enum MHD_ValueKind kind,
+        static MHD_Result build_request_querystring(void *cls, enum MHD_ValueKind kind,
                 const char *key, const char *value
         );
 
diff --git a/src/httpserver/http_utils.hpp b/src/httpserver/http_utils.hpp
index 9ad89b4..a812197 100644
--- a/src/httpserver/http_utils.hpp
+++ b/src/httpserver/http_utils.hpp
@@ -53,6 +53,10 @@
 
 #define DEFAULT_MASK_VALUE 0xFFFF
 
+#if MHD_VERSION < 0x00097002
+typedef int MHD_Result;
+#endif
+
 namespace httpserver {
 
 typedef void(*unescaper_ptr)(std::string&);
diff --git a/src/httpserver/webserver.hpp b/src/httpserver/webserver.hpp
index 1ff472b..661b6ee 100644
--- a/src/httpserver/webserver.hpp
+++ b/src/httpserver/webserver.hpp
@@ -195,14 +195,14 @@ class webserver
                 enum MHD_RequestTerminationCode toe
         );
 
-        static int answer_to_connection
+        static MHD_Result answer_to_connection
         (
             void* cls, MHD_Connection* connection,
             const char* url, const char* method,
             const char* version, const char* upload_data,
             size_t* upload_data_size, void** con_cls
         );
-        static int post_iterator
+        static MHD_Result post_iterator
         (
             void *cls,
             enum MHD_ValueKind kind,
@@ -219,25 +219,25 @@ class webserver
             void **con_cls, int upgrade_socket
         );
 
-        int requests_answer_first_step(MHD_Connection* connection,
+        MHD_Result requests_answer_first_step(MHD_Connection* connection,
                 struct details::modded_request* mr
         );
 
-        int requests_answer_second_step(MHD_Connection* connection,
+        MHD_Result requests_answer_second_step(MHD_Connection* connection,
             const char* method, const char* version, const char* upload_data,
             size_t* upload_data_size, struct details::modded_request* mr
         );
 
-        int finalize_answer(MHD_Connection* connection,
+        MHD_Result finalize_answer(MHD_Connection* connection,
                 struct details::modded_request* mr, const char* method
         );
 
-        int complete_request(MHD_Connection* connection,
+        MHD_Result complete_request(MHD_Connection* connection,
                 struct details::modded_request* mr,
                 const char* version, const char* method
         );
 
-        friend int policy_callback (void *cls,
+        friend MHD_Result policy_callback (void *cls,
                 const struct sockaddr* addr, socklen_t addrlen
         );
         friend void error_log(void* cls, const char* fmt, va_list ap);
diff --git a/src/webserver.cpp b/src/webserver.cpp
index a3104e9..3340eb0 100644
--- a/src/webserver.cpp
+++ b/src/webserver.cpp
@@ -75,6 +75,10 @@
 #define SOCK_CLOEXEC 02000000
 #endif
 
+#if MHD_VERSION < 0x00097002
+typedef int MHD_Result;
+#endif
+
 using namespace std;
 
 namespace httpserver
@@ -82,7 +86,7 @@ namespace httpserver
 
 using namespace http;
 
-int policy_callback (void *, const struct sockaddr*, socklen_t);
+MHD_Result policy_callback (void *, const struct sockaddr*, socklen_t);
 void error_log(void*, const char*, va_list);
 void* uri_log(void*, const char*);
 void access_log(webserver*, string);
@@ -421,7 +425,7 @@ void webserver::disallow_ip(const string& ip)
     allowances.erase(ip);
 }
 
-int policy_callback (void *cls, const struct sockaddr* addr, socklen_t addrlen)
+MHD_Result policy_callback (void *cls, const struct sockaddr* addr, socklen_t addrlen)
 {
     if(!(static_cast<webserver*>(cls))->ban_system_enabled) return MHD_YES;
 
@@ -468,7 +472,7 @@ size_t unescaper_func(void * cls, struct MHD_Connection *c, char *s)
     return std::string(s).size();
 }
 
-int webserver::post_iterator (void *cls, enum MHD_ValueKind kind,
+MHD_Result webserver::post_iterator (void *cls, enum MHD_ValueKind kind,
     const char *key,
     const char *filename,
     const char *content_type,
@@ -522,7 +526,7 @@ const std::shared_ptr<http_response> webserver::internal_error_page(details::mod
     }
 }
 
-int webserver::requests_answer_first_step(
+MHD_Result webserver::requests_answer_first_step(
         MHD_Connection* connection,
         struct details::modded_request* mr
 )
@@ -574,7 +578,7 @@ int webserver::requests_answer_first_step(
     return MHD_YES;
 }
 
-int webserver::requests_answer_second_step(
+MHD_Result webserver::requests_answer_second_step(
     MHD_Connection* connection, const char* method,
     const char* version, const char* upload_data,
     size_t* upload_data_size, struct details::modded_request* mr
@@ -597,7 +601,7 @@ int webserver::requests_answer_second_step(
     return MHD_YES;
 }
 
-int webserver::finalize_answer(
+MHD_Result webserver::finalize_answer(
         MHD_Connection* connection,
         struct details::modded_request* mr,
         const char* method
@@ -731,10 +735,10 @@ int webserver::finalize_answer(
     mr->dhrs->decorate_response(raw_response);
     to_ret = mr->dhrs->enqueue_response(connection, raw_response);
     MHD_destroy_response(raw_response);
-    return to_ret;
+    return (MHD_Result) to_ret;
 }
 
-int webserver::complete_request(
+MHD_Result webserver::complete_request(
         MHD_Connection* connection,
         struct details::modded_request* mr,
         const char* version,
@@ -750,7 +754,7 @@ int webserver::complete_request(
     return finalize_answer(connection, mr, method);
 }
 
-int webserver::answer_to_connection(void* cls, MHD_Connection* connection,
+MHD_Result webserver::answer_to_connection(void* cls, MHD_Connection* connection,
     const char* url, const char* method,
     const char* version, const char* upload_data,
     size_t* upload_data_size, void** con_cls
-- 
2.26.2

