From: Jose M. Guisado Gomez Date: Sat, 18 Jul 2020 10:25:21 +0000 (+0200) Subject: [PATCH 1/2] capabilities: conditionalize mhd callback return type X-Git-Tag: archive/raspbian/5.12.0-3+rpi1~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0f6670aec00f65beb47ac126af9e03cedc380c02;p=collectd.git [PATCH 1/2] capabilities: conditionalize mhd callback return type libmicrohttpd introduced an API change with respect its callback return types. Now its signature says that an enum must be returned instead of an int. This causes collectd to not finish compilation because of the compiler warnings this arised (in addition to -Werror) Add conditional compiling so systems with microhttpd >=0.9.71 can compile collectd with -Werror Fixes #3511 Gbp-Pq: Name 3512.patch --- diff --git a/src/capabilities.c b/src/capabilities.c index 5c27e6a..a3a31c1 100644 --- a/src/capabilities.c +++ b/src/capabilities.c @@ -33,6 +33,11 @@ #include "utils/dmi/dmi.h" #include +#if MHD_VERSION >= 0x00097002 +#define MHD_RESULT enum MHD_Result +#else +#define MHD_RESULT int +#endif #include #include @@ -187,10 +192,11 @@ static int cap_get_dmi_variables(json_t *parent, const dmi_type type, /* http_handler is the callback called by the microhttpd library. It essentially * handles all HTTP request aspects and creates an HTTP response. */ -static int cap_http_handler(void *cls, struct MHD_Connection *connection, - const char *url, const char *method, - const char *version, const char *upload_data, - size_t *upload_data_size, void **connection_state) { +static MHD_RESULT cap_http_handler(void *cls, struct MHD_Connection *connection, + const char *url, const char *method, + const char *version, const char *upload_data, + size_t *upload_data_size, + void **connection_state) { if (strcmp(method, MHD_HTTP_METHOD_GET) != 0) { return MHD_NO; } diff --git a/src/capabilities_test.c b/src/capabilities_test.c index 16061d2..8207740 100644 --- a/src/capabilities_test.c +++ b/src/capabilities_test.c @@ -93,14 +93,14 @@ struct MHD_Response *MHD_create_response_from_data(size_t size, void *data, return mhd_res; } -int MHD_add_response_header(struct MHD_Response *response, const char *header, - const char *content) { +MHD_RESULT MHD_add_response_header(struct MHD_Response *response, + const char *header, const char *content) { return 0; } -int MHD_queue_response(struct MHD_Connection *connection, - unsigned int status_code, - struct MHD_Response *response) { +MHD_RESULT MHD_queue_response(struct MHD_Connection *connection, + unsigned int status_code, + struct MHD_Response *response) { return MHD_HTTP_OK; } diff --git a/src/write_prometheus.c b/src/write_prometheus.c index b904022..9d3df08 100644 --- a/src/write_prometheus.c +++ b/src/write_prometheus.c @@ -51,6 +51,13 @@ "encoding=delimited" #define CONTENT_TYPE_TEXT "text/plain; version=0.0.4" +#if MHD_VERSION >= 0x00097002 +#define MHD_RESULT enum MHD_Result +#else +#define MHD_RESULT int +#endif + + static c_avl_tree_t *metrics; static pthread_mutex_t metrics_lock = PTHREAD_MUTEX_INITIALIZER; @@ -227,7 +234,7 @@ static void format_text(ProtobufCBuffer *buffer) { /* http_handler is the callback called by the microhttpd library. It essentially * handles all HTTP request aspects and creates an HTTP response. */ -static int http_handler(void *cls, struct MHD_Connection *connection, +static MHD_RESULT http_handler(void *cls, struct MHD_Connection *connection, const char *url, const char *method, const char *version, const char *upload_data, size_t *upload_data_size, void **connection_state) { @@ -268,7 +275,7 @@ static int http_handler(void *cls, struct MHD_Connection *connection, MHD_add_response_header(res, MHD_HTTP_HEADER_CONTENT_TYPE, want_proto ? CONTENT_TYPE_PROTO : CONTENT_TYPE_TEXT); - int status = MHD_queue_response(connection, MHD_HTTP_OK, res); + MHD_RESULT status = MHD_queue_response(connection, MHD_HTTP_OK, res); MHD_destroy_response(res); PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple);