From e4f5318768d1987056b156f7eb45596d80af19c3 Mon Sep 17 00:00:00 2001 From: fireice-uk Date: Tue, 14 Mar 2017 19:41:49 +0000 Subject: [PATCH] 302 Redirect instead of error --- httpd.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/httpd.cpp b/httpd.cpp index 84612dd..927bc39 100644 --- a/httpd.cpp +++ b/httpd.cpp @@ -101,12 +101,20 @@ int httpd::req_handler(void * cls, } else { - char buffer[1024]; - snprintf(buffer, sizeof(buffer), "Error" - "
Unkown url %s - please use /h, /r or /c as url
", url); + //Do a 302 redirect to /h + char loc_path[256]; + const char* host_val = MHD_lookup_connection_value(connection, MHD_HEADER_KIND, "Host"); - rsp = MHD_create_response_from_buffer(strlen(buffer), - (void*)buffer, MHD_RESPMEM_MUST_COPY); + if(host_val != nullptr) + snprintf(loc_path, sizeof(loc_path), "http://%s/h", host_val); + else + snprintf(loc_path, sizeof(loc_path), "/h"); + + rsp = MHD_create_response_from_buffer(0, nullptr, MHD_RESPMEM_PERSISTENT); + int ret = MHD_queue_response(connection, MHD_HTTP_TEMPORARY_REDIRECT, rsp); + MHD_add_response_header(rsp, "Location", loc_path); + MHD_destroy_response(rsp); + return ret; } int ret = MHD_queue_response(connection, MHD_HTTP_OK, rsp);