From cae065477b8263c7bbbc532e1a5a4313aa535911 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Wed, 24 May 2023 10:59:02 +0200 Subject: [PATCH] Fix for windows --- file.c | 2 +- file.h | 2 +- http.c | 43 ++++++++++++++++++++++--------------------- server.c | 11 ++++++----- server.h | 4 ++-- webserver.c | 2 +- 6 files changed, 33 insertions(+), 31 deletions(-) diff --git a/file.c b/file.c index c720dba..4a866b6 100644 --- a/file.c +++ b/file.c @@ -8,7 +8,7 @@ /* read full file */ -int readfile (unsigned char **buffer, char *filename) +int readfile (char **buffer, char *filename) { /* open file */ diff --git a/file.h b/file.h index 165c276..c6edd0d 100644 --- a/file.h +++ b/file.h @@ -1,7 +1,7 @@ #ifndef __FILE_H__ #define __FILE_H__ -int readfile (unsigned char **buffer, char *filename); +int readfile (char **buffer, char *filename); #endif /* __FILE_H__ */ diff --git a/http.c b/http.c index 1322321..dce3cc8 100644 --- a/http.c +++ b/http.c @@ -63,22 +63,23 @@ typedef struct { void print_header_values (header_t *header) { - printf ("allow = '%s'\n", header->allow); - printf ("authorization = '%s'\n", header->authorization); - printf ("content_encoding = '%s'\n", header->content_encoding); - printf ("content_length = '%s'\n", header->content_length); - printf ("content_type = '%s'\n", header->content_type); - printf ("date = '%s'\n", header->date); - printf ("expires = '%s'\n", header->expires); - printf ("from = '%s'\n", header->from); - printf ("if_modified_since = '%s'\n", header->if_modified_since); - printf ("last_modified = '%s'\n", header->last_modified); - printf ("location = '%s'\n", header->location); - printf ("pragma = '%s'\n", header->pragma); - printf ("referer = '%s'\n", header->referer); - printf ("server = '%s'\n", header->server); - printf ("user_agent = '%s'\n", header->user_agent); - printf ("www_authenticate = '%s'\n", header->www_authenticate); + printf ("Header values\n"); + if (header->allow) printf ("allow = '%s'\n", header->allow); + if (header->authorization) printf ("authorization = '%s'\n", header->authorization); + if (header->content_encoding) printf ("content_encoding = '%s'\n", header->content_encoding); + if (header->content_length) printf ("content_length = '%s'\n", header->content_length); + if (header->content_type) printf ("content_type = '%s'\n", header->content_type); + if (header->date) printf ("date = '%s'\n", header->date); + if (header->expires) printf ("expires = '%s'\n", header->expires); + if (header->from) printf ("from = '%s'\n", header->from); + if (header->if_modified_since) printf ("if_modified_since = '%s'\n", header->if_modified_since); + if (header->last_modified) printf ("last_modified = '%s'\n", header->last_modified); + if (header->location) printf ("location = '%s'\n", header->location); + if (header->pragma) printf ("pragma = '%s'\n", header->pragma); + if (header->referer) printf ("referer = '%s'\n", header->referer); + if (header->server) printf ("server = '%s'\n", header->server); + if (header->user_agent) printf ("user_agent = '%s'\n", header->user_agent); + if (header->www_authenticate) printf ("www_authenticate = '%s'\n", header->www_authenticate); } /* find sequence*/ @@ -154,7 +155,7 @@ int add_response_header (char **buffer, char *uri) return strlen (*buffer); } -int add_entity (char **buffer, unsigned char *entity, int size, char *type, char *encoding) +int add_entity (char **buffer, char *entity, int size, char *type, char *encoding) { char tmp[BUFFER_SIZE] = {0}; int len = strlen (*buffer); @@ -200,7 +201,7 @@ int error_400 (char **buffer) add_response_header (buffer, NULL); char *response = "Error 400

Bad Request

"; - return add_entity (buffer, (unsigned char *)response, strlen (response), "text/html", "iso-8859-1"); + return add_entity (buffer, response, strlen (response), "text/html", "iso-8859-1"); } /* error 404 */ @@ -212,7 +213,7 @@ int error_404 (char **buffer, char *uri) add_response_header (buffer, uri); char *response = "Error 404

File not found

"; - return add_entity (buffer, (unsigned char *)response, strlen (response), "text/html", "iso-8859-1"); + return add_entity (buffer, response, strlen (response), "text/html", "iso-8859-1"); } /* response html */ @@ -223,7 +224,7 @@ int response_html (char **buffer, char *location, char *response) add_general_header (buffer); add_response_header (buffer, location); - return add_entity (buffer, (unsigned char *)response, strlen (response), "text/html", "iso-8859-1"); + return add_entity (buffer, response, strlen (response), "text/html", "iso-8859-1"); } /* trim string */ @@ -337,7 +338,7 @@ int processing (char *data, int len, char *root, char **pdata) char *buffer = NULL; switch (type) { case get_e: - len = readfile ((unsigned char **)&buffer, filename); + len = readfile (&buffer, filename); if (len == 0) { len = error_404 (pdata, "http://localhost/"); } else { diff --git a/server.c b/server.c index 039d433..a08e0c6 100644 --- a/server.c +++ b/server.c @@ -212,10 +212,10 @@ void close_connection (void) /* receive data from socket */ -int receive_data (unsigned char **pdata) +int receive_data (char **pdata) { - unsigned char buffer[BUFFER_SIZE] = {0}; - unsigned char *data = NULL; + char buffer[BUFFER_SIZE] = {0}; + char *data = NULL; int len = 0; if (conn == INVALID_SOCKET) { @@ -237,7 +237,8 @@ int receive_data (unsigned char **pdata) } /* read from socket */ - int rc = read (conn, buffer, BUFFER_SIZE); + int rc = recv (conn, buffer, BUFFER_SIZE, 0); + VERBOSE (DEBUG, PRINT ("rc: %d\nerrno: %d\n", rc, ERRNO)); if (rc == 0) { /* sock closed */ if (data) { @@ -270,7 +271,7 @@ int receive_data (unsigned char **pdata) /* send data onto socket */ -int send_data (unsigned char *data, int len) +int send_data (char *data, int len) { int index = 0; diff --git a/server.h b/server.h index 2e29b6e..98b2cbf 100644 --- a/server.h +++ b/server.h @@ -16,8 +16,8 @@ int accept_incoming_connection (void); void close_connection (void); -int receive_data (unsigned char **pdata); -int send_data (unsigned char *data, int len); +int receive_data (char **pdata); +int send_data (char *data, int len); #endif /* __SERVER_H__ */ diff --git a/webserver.c b/webserver.c index b8c6e8c..a88b586 100644 --- a/webserver.c +++ b/webserver.c @@ -130,7 +130,7 @@ int main (int argc, char *argv[]) VERBOSE (DEBUG, PRINT ("Server connected, waiting for data\n")); - unsigned char *data = {0}; + char *data = {0}; int len = receive_data (&data); if (len == 0) { -- 2.30.2