first http server working
authorLaurent Mazet <laurent.mazet@thalesgroup.com>
Wed, 24 May 2023 13:51:21 +0000 (15:51 +0200)
committerLaurent Mazet <laurent.mazet@thalesgroup.com>
Wed, 24 May 2023 13:51:21 +0000 (15:51 +0200)
file.c
http.c

diff --git a/file.c b/file.c
index 4a866b681bacc77a7aa3a5ff0ac371d0457fbab9..47f91a7c8b21b647844bd8a378bfbcb271e103c7 100644 (file)
--- a/file.c
+++ b/file.c
@@ -13,23 +13,26 @@ int readfile (char **buffer, char *filename)
 
     /* open file */
 
+    VERBOSE (DEBUG, PRINT ("Opening file %s\n", filename));
     FILE *fd = fopen (filename, "rb");
     if (fd == NULL) {
         VERBOSE (WARNING, PRINT ("Can't open file (%s)\n", filename));
         return -1;
     }
 
+    VERBOSE (DEBUG, PRINT ("Seek file size\n"));
     fseek (fd, 0, SEEK_END);
     int size = ftell (fd);
     fseek (fd, 0, SEEK_SET);  /* same as rewind(f); */
 
     /* read full file */
 
+    VERBOSE (DEBUG, PRINT ("Reading %d bytes\n", size));
     *buffer = calloc (size + 1, 1);
     fread (*buffer, size, 1, fd);
     fclose (fd);
 
-    *buffer[size] = 0;
+    (*buffer)[size] = 0;
     return size;
 }
 
diff --git a/http.c b/http.c
index 4c37459136c6558bb77d4660c686d07342cd61c6..403dd1f762b5ef47fa3287a95c5d7d1ea82b46bf 100644 (file)
--- a/http.c
+++ b/http.c
@@ -107,8 +107,14 @@ char *find_sequence (char *data, int len, char *seq, char **pdata)
 
 int add_line (char **buffer, char *str)
 {
-    int len = strlen (*buffer) + strlen (str) + 1;
-    *buffer = realloc (*buffer, len);
+    VERBOSE (DEBUG, PRINT ("add line: %s", str));
+    int len = ((*buffer) ? strlen (*buffer) : 0) + strlen (str) + 1;
+    VERBOSE (DEBUG, PRINT ("len: %d\n", len));
+    if (*buffer) {
+        *buffer = (char *)realloc (*buffer, len);
+    } else {
+        *buffer = (char *)calloc (len, 1);
+    }
     strcat (*buffer, str);
     return len;
 }
@@ -220,10 +226,15 @@ int error_404 (char **buffer, char *uri)
 
 int response_html (char **buffer, char *location, char *response)
 {
-    add_status_line (buffer, c200);
-    add_general_header (buffer);
-    add_response_header (buffer, location);
-
+    int len = 0;
+    VERBOSE (DEBUG, PRINT ("add_status_line %d\n", len));
+    len = add_status_line (buffer, c200);
+    VERBOSE (DEBUG, PRINT ("add_general_header %d\n", len));
+    len = add_general_header (buffer);
+    VERBOSE (DEBUG, PRINT ("add_response_header %d\n", len));
+    len = add_response_header (buffer, location);
+
+    VERBOSE (DEBUG, PRINT ("add_entity %d\n", len));
     return add_entity (buffer, response, strlen (response), "text/html", "iso-8859-1");
 }