diff -Nrup a/src/thinsrv/webadmin/qmhttp.cpp b/src/thinsrv/webadmin/qmhttp.cpp --- a/src/thinsrv/webadmin/qmhttp.cpp 2020-02-16 17:35:42.000000000 +0100 +++ b/src/thinsrv/webadmin/qmhttp.cpp 2020-07-26 17:34:33.831915428 +0200 @@ -30,6 +30,10 @@ #include <microhttpd.h> +#if MHD_VERSION < 0x00097002 +typedef int MHD_Result; +#endif + static const char *MSG_401 = "<html><body>401 - Unauthorized</body></html>"; static const char *MSG_404 = "<html><body>404 - Page not found</body></html>"; @@ -80,7 +84,7 @@ static void logMessage(MHD_Connection *c statusCode, qPrintable(clientAddress.toString()), method, url); } -int iterate_post(void *con_cls, enum MHD_ValueKind kind, const char *key, const char *filename, const char *content_type, const char *transfer_encoding, const char *data, uint64_t off, size_t size) +MHD_Result iterate_post(void *con_cls, enum MHD_ValueKind kind, const char *key, const char *filename, const char *content_type, const char *transfer_encoding, const char *data, uint64_t off, size_t size) { Q_UNUSED(kind); Q_UNUSED(filename); @@ -97,7 +101,7 @@ int iterate_post(void *con_cls, enum MHD return MHD_YES; } -int assign_to_hash(void *cls, enum MHD_ValueKind kind, const char *key, const char *value) +MHD_Result assign_to_hash(void *cls, enum MHD_ValueKind kind, const char *key, const char *value) { Q_UNUSED(kind); QHash<QString,QString> *hash = reinterpret_cast<QHash<QString,QString>*>(cls); @@ -117,7 +121,7 @@ void request_completed(void *cls, struct *con_cls = nullptr; } -int request_handler(void *cls, MHD_Connection *connection, const char *url, const char *methodstr, const char *version, const char *upload_data, size_t *upload_data_size, void **con_cls) +MHD_Result request_handler(void *cls, MHD_Connection *connection, const char *url, const char *methodstr, const char *version, const char *upload_data, size_t *upload_data_size, void **con_cls) { Q_UNUSED(version); MicroHttpd::Private *d = reinterpret_cast<MicroHttpd::Private*>(cls); @@ -195,7 +199,7 @@ int request_handler(void *cls, MHD_Conne MHD_RESPMEM_PERSISTENT ); - int ret; + MHD_Result ret; // If a header indicating this was an AJAX request is set, // don't return the full basic auth response so the browser // won't pop up a password dialog. @@ -206,10 +210,15 @@ int request_handler(void *cls, MHD_Conne response); } else { - ret = MHD_queue_basic_auth_fail_response( + // This MHD_Result cast is only necessary for libmicrohttpd 0.9.71 + // The return type of MHD_queue_basic_auth_fail_response was fixed for future versions + // See + // https://git.gnunet.org/libmicrohttpd.git/commit/?id=860b42e9180da4dcd7e8690a3fcdb4e37e5772c5 + ret = static_cast<MHD_Result>( + MHD_queue_basic_auth_fail_response( connection, d->baRealm.constData(), - response); + response)); } MHD_destroy_response(response); return ret; @@ -277,7 +286,7 @@ int request_handler(void *cls, MHD_Conne return ret; } -int access_policy(void *cls, const struct sockaddr * addr, socklen_t addrlen) +MHD_Result access_policy(void *cls, const struct sockaddr * addr, socklen_t addrlen) { Q_UNUSED(addrlen); MicroHttpd::Private *d = reinterpret_cast<MicroHttpd::Private*>(cls);