first http server working
[webserver.git] / http.c
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");
 }