int processing (char *data, int len, char *root, char **pdata)
{
- char *saved_data = data;
VERBOSE (DEBUG, PRINT ("Start processing\n"));
/* check method */
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);
}
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/");
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;
}
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) {
// 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) {
if (data) {
free (data);
}
+ if (output) {
+ free (output);
+ }
close_connection ();
}