From 9a29874f9f2f388ab4bf7e286f2e8e94c938cea7 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Mon, 4 Dec 2017 15:08:18 +0000 Subject: [PATCH] Better verbose message. The parsing of the request in the `RequestContext` constructor may be buggy and make kiwix-serve crash. If we print debug information only after the request is parsed, we will never print the debug information if the parsing crash. It is better to, at least, write that we've got a new request to avoid us to try to debug previous request where everything were ok. --- src/server/kiwix-serve.cpp | 16 +++++++++++----- src/server/request_context.cpp | 2 -- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/server/kiwix-serve.cpp b/src/server/kiwix-serve.cpp index 1102fdb..29862ee 100644 --- a/src/server/kiwix-serve.cpp +++ b/src/server/kiwix-serve.cpp @@ -724,17 +724,23 @@ static int accessHandlerCallback(void* cls, size_t* upload_data_size, void** ptr) { + if (isVerbose.load() ) { + printf("======================\n"); + printf("Requesting : \n"); + printf("full_url : %s\n", url); + } RequestContext request(connection, rootLocation, url, method, version); + + if (isVerbose.load() ) { + request.print_debug_info(); + } /* Unexpected method */ if (request.get_method() != RequestMethod::GET && request.get_method() != RequestMethod::POST) { + printf("Reject request because of unhandled request method.\n"); + printf("----------------------\n"); return MHD_NO; } - if (isVerbose.load()) { - printf("======================\n"); - request.print_debug_info(); - } - /* Prepare the variables */ struct MHD_Response* response; request.httpResponseCode = request.has_range() ? MHD_HTTP_PARTIAL_CONTENT : MHD_HTTP_OK; diff --git a/src/server/request_context.cpp b/src/server/request_context.cpp index 9caa1dc..212f660 100644 --- a/src/server/request_context.cpp +++ b/src/server/request_context.cpp @@ -127,8 +127,6 @@ int RequestContext::fill_argument(void *__this, enum MHD_ValueKind kind, } void RequestContext::print_debug_info() { - printf("Requesting : \n"); - printf("full_url : %s\n", full_url.c_str()); printf("method : %s (%d)\n", method==RequestMethod::GET ? "GET" : method==RequestMethod::POST ? "POST" : "OTHER", method);