123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- 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
|