# error: no matching function for call to 'MHD_start_daemon'

--- akumulid/httpserver.h.orig	2020-05-19 18:47:08.000000000 +0545
+++ akumulid/httpserver.h	2022-08-07 06:00:50.000000000 +0545
@@ -26,6 +26,18 @@
 #include "logger.h"
 #include "server.h"
 
+// https://github.com/macports/macports-ports/pull/8941/files
+// Beginning with v0.9.71, libmicrohttpd changed the return type
+// of most functions from int to enum MHD_Result
+// https://git.gnunet.org/gnunet.git/tree/src/include/gnunet_mhd_compat.h
+// proposes to define a constant for the return type so it works well
+// with all versions of libmicrohttpd
+#if MHD_VERSION >= 0x00097002
+#define MHD_RESULT enum MHD_Result
+#else
+#define MHD_RESULT int
+#endif
+
 namespace Akumuli {
 namespace Http {
 

--- akumulid/httpserver.cpp.orig	2020-05-19 18:47:08.000000000 +0545
+++ akumulid/httpserver.cpp	2022-08-07 07:05:55.000000000 +0545
@@ -51,21 +51,21 @@
     return ApiEndpoint::UNKNOWN;
 }
 
-static int accept_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 MHD_RESULT accept_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)
 {
     std::string path = url;
     auto error_response = [&](const char* msg, unsigned int error_code) {
         char buffer[0x200];
         int len = snprintf(buffer, 0x200, "-%s\r\n", msg);
         auto response = MHD_create_response_from_buffer(len, buffer, MHD_RESPMEM_MUST_COPY);
-        int ret = MHD_queue_response(connection, error_code, response);
+        MHD_RESULT ret = MHD_queue_response(connection, error_code, response);
         MHD_destroy_response(response);
         return ret;
     };
@@ -104,7 +104,7 @@
             }
 
             auto response = MHD_create_response_from_callback(MHD_SIZE_UNKNOWN, 64*1024, &read_callback, cursor, &free_callback);
-            int ret = MHD_queue_response(connection, MHD_HTTP_OK, response);
+            MHD_RESULT ret = MHD_queue_response(connection, MHD_HTTP_OK, response);
             MHD_destroy_response(response);
             return ret;
         } else {
@@ -123,7 +123,7 @@
         if (path == "/api/stats") {
             std::string stats = queryproc->get_all_stats();
             auto response = MHD_create_response_from_buffer(stats.size(), const_cast<char*>(stats.data()), MHD_RESPMEM_MUST_COPY);
-            int ret = MHD_add_response_header(response, "content-type", "application/json");
+            MHD_RESULT ret = MHD_add_response_header(response, "content-type", "application/json");
             if (ret == MHD_NO) {
                 return ret;
             }
@@ -133,7 +133,7 @@
         } else if (path == "/api/function-names") {
             std::string stats = queryproc->get_resource("function-names");
             auto response = MHD_create_response_from_buffer(stats.size(), const_cast<char*>(stats.data()), MHD_RESPMEM_MUST_COPY);
-            int ret = MHD_add_response_header(response, "content-type", "application/json");
+            MHD_RESULT ret = MHD_add_response_header(response, "content-type", "application/json");
             if (ret == MHD_NO) {
                 return ret;
             }
@@ -143,7 +143,7 @@
         } else if (path == "/api/version") {
             std::string version = queryproc->get_resource("version");
             auto response = MHD_create_response_from_buffer(version.size(), const_cast<char*>(version.data()), MHD_RESPMEM_MUST_COPY);
-            int ret = MHD_add_response_header(response, "content-type", "application/json");
+            MHD_RESULT ret = MHD_add_response_header(response, "content-type", "application/json");
             if (ret == MHD_NO) {
                 return ret;
             }

