From 9ce998b93770708ce992b53e93c3c7781ec9a8a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 22 Oct 2014 23:18:47 -0500 Subject: [PATCH] journal-remote: better error message on failure Return a proper code instead of simply NULL for failure. --- src/journal-remote/journal-remote.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c index d78607c54..d94b2afc0 100644 --- a/src/journal-remote/journal-remote.c +++ b/src/journal-remote/journal-remote.c @@ -449,33 +449,32 @@ static int setup_raw_socket(RemoteServer *s, const char *address) { ********************************************************************** **********************************************************************/ -static RemoteSource *request_meta(void **connection_cls, int fd, char *hostname) { +static int request_meta(void **connection_cls, int fd, char *hostname) { RemoteSource *source; Writer *writer; int r; assert(connection_cls); if (*connection_cls) - return *connection_cls; + return 0; r = get_writer(server, hostname, &writer); if (r < 0) { log_warning("Failed to get writer for source %s: %s", hostname, strerror(-r)); - return NULL; + return r; } source = source_new(fd, true, hostname, writer); if (!source) { - log_oom(); writer_unref(writer); - return NULL; + return log_oom(); } log_debug("Added RemoteSource as connection metadata %p", source); *connection_cls = source; - return source; + return 0; } static void request_meta_free(void *cls, @@ -487,9 +486,11 @@ static void request_meta_free(void *cls, assert(connection_cls); s = *connection_cls; - log_debug("Cleaning up connection metadata %p", s); - source_free(s); - *connection_cls = NULL; + if (s) { + log_debug("Cleaning up connection metadata %p", s); + source_free(s); + *connection_cls = NULL; + } } static int process_http_upload( @@ -622,8 +623,13 @@ static int request_handler( assert(hostname); - if (!request_meta(connection_cls, fd, hostname)) + r = request_meta(connection_cls, fd, hostname); + if (r == -ENOMEM) return respond_oom(connection); + else if (r < 0) + return mhd_respond(connection, MHD_HTTP_INTERNAL_SERVER_ERROR, + strerror(-r)); + hostname = NULL; return MHD_YES; } -- 2.30.2