From 6add28e96fa028444775fb67b8642436d8721148 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Wed, 24 May 2023 00:42:53 +0200 Subject: [PATCH] quick commit 2 --- http.c | 18 ++++++++---------- webserver.c | 11 ++++++++--- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/http.c b/http.c index 1322321..d2bd044 100644 --- a/http.c +++ b/http.c @@ -242,7 +242,6 @@ char *trim (char *str) int processing (char *data, int len, char *root, char **pdata) { - char *saved_data = data; VERBOSE (DEBUG, PRINT ("Start processing\n")); /* check method */ @@ -268,13 +267,12 @@ int processing (char *data, int len, char *root, char **pdata) type = post_e; } else { VERBOSE (WARNING, PRINT ("Unkown method: %s\n", method)); - free (saved_data); return error_400 (pdata); } VERBOSE (INFO, PRINT ("%s %s (%s)\n", (type == get_e) ? "Get" : (type == head_e) ? "Head" : "Post", uri, version)); /* analyse uri */ - char *filename = calloc (strlen (root) + strlen (uri) + 2, 1); + char *filename = (char *)calloc (strlen (root) + strlen (uri) + 2, 1); //sprintf (filename, "%s%s%s", root, ((root[strlen (root) - 1] != '/') && (uri[0] != '/')) ? "/" : "", uri); sprintf (filename, "%s/%s", root, uri); @@ -328,15 +326,11 @@ int processing (char *data, int len, char *root, char **pdata) } VERBOSE (DEBUG, print_header_values (&header)); - /* processing data */ - if (data) { - VERBOSE (DEBUG, PRINT ("Processing data: %s\n", data)); - } - /* response */ char *buffer = NULL; switch (type) { case get_e: + VERBOSE (DEBUG, PRINT ("Read file %s\n", filename)); len = readfile ((unsigned char **)&buffer, filename); if (len == 0) { len = error_404 (pdata, "http://localhost/"); @@ -348,14 +342,18 @@ int processing (char *data, int len, char *root, char **pdata) case head_e: break; case post_e: + VERBOSE (DEBUG, PRINT ("Write file %s\n", filename)); break; case not_supported_e: break; } /* cleaning */ - free (saved_data); - free (filename); + VERBOSE (DEBUG, PRINT ("Cleaning\n")); + if (filename) { + VERBOSE (DEBUG, PRINT ("Cleaning filename\n")); + free (filename); + } return len; } diff --git a/webserver.c b/webserver.c index b8c6e8c..b5d6039 100644 --- a/webserver.c +++ b/webserver.c @@ -130,7 +130,8 @@ int main (int argc, char *argv[]) VERBOSE (DEBUG, PRINT ("Server connected, waiting for data\n")); - unsigned char *data = {0}; + unsigned char *data = NULL; + unsigned char *output = NULL; int len = receive_data (&data); if (len == 0) { @@ -142,9 +143,10 @@ int main (int argc, char *argv[]) // processing VERBOSE (DEBUG, PRINT ("Processing %s\n", data)); - len = processing ((char *)data, len, root, (char **)&data); + len = processing ((char *)data, len, root, (char **)&output); - int rc = send_data (data, len); + VERBOSE (DEBUG, PRINT ("Sending data (%d)\n%s\n", len, data)); + int rc = send_data (output, len); if (rc == 0) { VERBOSE (WARNING, PRINT ("Connection closed by peer (tx)\n")); } else if (rc < 0) { @@ -156,6 +158,9 @@ int main (int argc, char *argv[]) if (data) { free (data); } + if (output) { + free (output); + } close_connection (); } -- 2.30.2