diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2018-12-07 12:13:10 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-01-09 23:44:17 +0100 |
commit | d101fb24eb1c58c97f2adce1f69f4b61a788933a (patch) | |
tree | e88ca52758e0860935dddc1d3bdee1ce341c1b77 | |
parent | journald: lower the maximum entry size limit to ½ for non-sealed fds (diff) | |
download | systemd-d101fb24eb1c58c97f2adce1f69f4b61a788933a.tar.xz systemd-d101fb24eb1c58c97f2adce1f69f4b61a788933a.zip |
µhttpd: use a cleanup function to call MHD_destroy_response
-rw-r--r-- | src/journal-remote/journal-gatewayd.c | 53 | ||||
-rw-r--r-- | src/journal-remote/microhttpd-util.c | 11 | ||||
-rw-r--r-- | src/journal-remote/microhttpd-util.h | 1 |
3 files changed, 18 insertions, 47 deletions
diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c index 4185af63e1..af45fa549a 100644 --- a/src/journal-remote/journal-gatewayd.c +++ b/src/journal-remote/journal-gatewayd.c @@ -461,7 +461,7 @@ static int request_handler_entries( struct MHD_Connection *connection, void *connection_cls) { - struct MHD_Response *response; + _cleanup_(MHD_destroy_responsep) struct MHD_Response *response = NULL; RequestMeta *m = connection_cls; int r; @@ -503,11 +503,7 @@ static int request_handler_entries( return respond_oom(connection); MHD_add_response_header(response, "Content-Type", mime_types[m->mode]); - - r = MHD_queue_response(connection, MHD_HTTP_OK, response); - MHD_destroy_response(response); - - return r; + return MHD_queue_response(connection, MHD_HTTP_OK, response); } static int output_field(FILE *f, OutputMode m, const char *d, size_t l) { @@ -619,7 +615,7 @@ static int request_handler_fields( const char *field, void *connection_cls) { - struct MHD_Response *response; + _cleanup_(MHD_destroy_responsep) struct MHD_Response *response = NULL; RequestMeta *m = connection_cls; int r; @@ -642,11 +638,7 @@ static int request_handler_fields( return respond_oom(connection); MHD_add_response_header(response, "Content-Type", mime_types[m->mode == OUTPUT_JSON ? OUTPUT_JSON : OUTPUT_SHORT]); - - r = MHD_queue_response(connection, MHD_HTTP_OK, response); - MHD_destroy_response(response); - - return r; + return MHD_queue_response(connection, MHD_HTTP_OK, response); } static int request_handler_redirect( @@ -654,8 +646,7 @@ static int request_handler_redirect( const char *target) { char *page; - struct MHD_Response *response; - int ret; + _cleanup_(MHD_destroy_responsep) struct MHD_Response *response = NULL; assert(connection); assert(target); @@ -671,11 +662,7 @@ static int request_handler_redirect( MHD_add_response_header(response, "Content-Type", "text/html"); MHD_add_response_header(response, "Location", target); - - ret = MHD_queue_response(connection, MHD_HTTP_MOVED_PERMANENTLY, response); - MHD_destroy_response(response); - - return ret; + return MHD_queue_response(connection, MHD_HTTP_MOVED_PERMANENTLY, response); } static int request_handler_file( @@ -683,8 +670,7 @@ static int request_handler_file( const char *path, const char *mime_type) { - struct MHD_Response *response; - int ret; + _cleanup_(MHD_destroy_responsep) struct MHD_Response *response = NULL; _cleanup_close_ int fd = -1; struct stat st; @@ -702,15 +688,10 @@ static int request_handler_file( response = MHD_create_response_from_fd_at_offset64(st.st_size, fd, 0); if (!response) return respond_oom(connection); - - fd = -1; + TAKE_FD(fd); MHD_add_response_header(response, "Content-Type", mime_type); - - ret = MHD_queue_response(connection, MHD_HTTP_OK, response); - MHD_destroy_response(response); - - return ret; + return MHD_queue_response(connection, MHD_HTTP_OK, response); } static int get_virtualization(char **v) { @@ -747,14 +728,13 @@ static int request_handler_machine( struct MHD_Connection *connection, void *connection_cls) { - struct MHD_Response *response; + _cleanup_(MHD_destroy_responsep) struct MHD_Response *response = NULL; RequestMeta *m = connection_cls; int r; _cleanup_free_ char* hostname = NULL, *os_name = NULL; uint64_t cutoff_from = 0, cutoff_to = 0, usage = 0; - char *json; sd_id128_t mid, bid; - _cleanup_free_ char *v = NULL; + _cleanup_free_ char *v = NULL, *json = NULL; assert(connection); assert(m); @@ -803,21 +783,16 @@ static int request_handler_machine( usage, cutoff_from, cutoff_to); - if (r < 0) return respond_oom(connection); response = MHD_create_response_from_buffer(strlen(json), json, MHD_RESPMEM_MUST_FREE); - if (!response) { - free(json); + if (!response) return respond_oom(connection); - } + TAKE_PTR(json); MHD_add_response_header(response, "Content-Type", "application/json"); - r = MHD_queue_response(connection, MHD_HTTP_OK, response); - MHD_destroy_response(response); - - return r; + return MHD_queue_response(connection, MHD_HTTP_OK, response); } static int request_handler( diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c index adf40b5abd..6d049d11f7 100644 --- a/src/journal-remote/microhttpd-util.c +++ b/src/journal-remote/microhttpd-util.c @@ -32,21 +32,16 @@ static int mhd_respond_internal(struct MHD_Connection *connection, const char *buffer, size_t size, enum MHD_ResponseMemoryMode mode) { - struct MHD_Response *response; - int r; - assert(connection); - response = MHD_create_response_from_buffer(size, (char*) buffer, mode); + _cleanup_(MHD_destroy_responsep) struct MHD_Response *response + = MHD_create_response_from_buffer(size, (char*) buffer, mode); if (!response) return MHD_NO; log_debug("Queueing response %u: %s", code, buffer); MHD_add_response_header(response, "Content-Type", "text/plain"); - r = MHD_queue_response(connection, code, response); - MHD_destroy_response(response); - - return r; + return MHD_queue_response(connection, code, response); } int mhd_respond(struct MHD_Connection *connection, diff --git a/src/journal-remote/microhttpd-util.h b/src/journal-remote/microhttpd-util.h index 364cd0f7cf..ba51d847e4 100644 --- a/src/journal-remote/microhttpd-util.h +++ b/src/journal-remote/microhttpd-util.h @@ -75,3 +75,4 @@ int check_permissions(struct MHD_Connection *connection, int *code, char **hostn int setup_gnutls_logger(char **categories); DEFINE_TRIVIAL_CLEANUP_FUNC(struct MHD_Daemon*, MHD_stop_daemon); +DEFINE_TRIVIAL_CLEANUP_FUNC(struct MHD_Response*, MHD_destroy_response); |