quick commit 2
authorLaurent Mazet <mazet@softndesign.org>
Tue, 23 May 2023 22:42:53 +0000 (00:42 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Tue, 23 May 2023 22:42:53 +0000 (00:42 +0200)
http.c
webserver.c

diff --git a/http.c b/http.c
index 13223210cba9497a1a5cbd67caf66c58feca1889..d2bd044e7374fae2a679e2c111eee4fc147d93db 100644 (file)
--- 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;
 }
index b8c6e8ced64251dadfdfb92d38204d5cfcf21573..b5d6039995c0ba3e1500212577f2d5da0e949c66 100644 (file)
@@ -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 ();
     }