From f186358fc76294f14deb2f64ff8dbdecbc3aecff Mon Sep 17 00:00:00 2001 From: PreacherDHM Date: Thu, 9 Oct 2025 13:41:21 -0700 Subject: [PATCH] working on adding requests --- DesignedWorlds | Bin 13896 -> 14096 bytes source/http.c | 65 ++++++++++++++++++++++++++----------------------- source/http.h | 2 +- source/main.c | 40 ++++++++++++++++++++++++------ 4 files changed, 69 insertions(+), 38 deletions(-) diff --git a/DesignedWorlds b/DesignedWorlds index 4cfa879a7abdaec2155a7afcdfed6e30749f055d..d5ef02e0fc3198b4e99d0a6e6eb525f29ba97595 100755 GIT binary patch delta 4201 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 = HTTP_GET; - } else if (strstr(buffer, "POST") != NULL) { - rh->method = HTTP_POST; - } else if (strstr(buffer, "PUT") != NULL) { - rh->method = HTTP_PUT; - } else if (strstr(buffer, "DELETE") != NULL) { - rh->method = HTTP_DELETE; - } else if (strstr(buffer, "HEAD") != NULL) { - rh->method = HTTP_HEAD; - } else if (strstr(buffer, "OPTIONS") != NULL) { - rh->method = HTTP_OPTIONS; - } else if (strstr(buffer, "PATCH") != NULL) { - rh->method = HTTP_PATCH; - } else if (strstr(buffer, "CONNECT") != NULL) { - rh->method = HTTP_CONNECT; - } else if (strstr(buffer, "CONNECT") != NULL) { - rh->method = HTTP_CONNECT; - } else { - rh->method = HTTP_UNKNOWN; - } +void HttpRequestHeaderFromS(HttpRequestHeader* rh, char* buffer, int bufferSize) { + + int bufferLen, wordIndex; // Find the bufferLen of the string bufferLen = strlen(buffer); - int start, end = 0; + int start = 0; + int end = 0; + // Initialize the tokenization state - char** saveTokenState; + char* saveTokenState = buffer; char* token; // Tokenize the request line - token = strtok_r(buffer, " ", saveTokenState); - while ((token = strtok_r(NULL, " ", saveTokenState)) != NULL) { - // Tokenize + while ((token = strtok_r(saveTokenState, "\n\r", &saveTokenState)) != NULL) { + printf("Token: %s\n", token); } // GET /path/to/file/ HTTP:1.1 + + +// int methodLen = 0; +// char methodStr[8] = ""; +// if (strstr(buffer, "GET") != NULL) { +// rh->method = HTTP_GET; +// } else if (strstr(buffer, "POST") != NULL) { +// rh->method = HTTP_POST; +// } else if (strstr(buffer, "PUT") != NULL) { +// rh->method = HTTP_PUT; +// } else if (strstr(buffer, "DELETE") != NULL) { +// rh->method = HTTP_DELETE; +// } else if (strstr(buffer, "HEAD") != NULL) { +// rh->method = HTTP_HEAD; +// } else if (strstr(buffer, "OPTIONS") != NULL) { +// rh->method = HTTP_OPTIONS; +// } else if (strstr(buffer, "PATCH") != NULL) { +// rh->method = HTTP_PATCH; +// } else if (strstr(buffer, "CONNECT") != NULL) { +// rh->method = HTTP_CONNECT; +// } else if (strstr(buffer, "CONNECT") != NULL) { +// rh->method = HTTP_CONNECT; +// } else { +// rh->method = HTTP_UNKNOWN; +// } + } diff --git a/source/http.h b/source/http.h index 468c8fe..e7c6feb 100644 --- a/source/http.h +++ b/source/http.h @@ -71,7 +71,7 @@ HttpResponseHeader* createHttpResponse(int statusCode,const char* contentType, void HttpResponseHeaderToS(HttpResponseHeader* rh, char* d, char* buffer, int bs); -void HttpRequestHeaderFromS(HttpRequestHeader* rh, char* buffer); +void HttpRequestHeaderFromS(HttpRequestHeader* rh, char* buffer, int bufferSize); int HttpCreate(); int HttpGetReqest(char* buffer); diff --git a/source/main.c b/source/main.c index a3d1c67..ed23c47 100644 --- a/source/main.c +++ b/source/main.c @@ -14,6 +14,7 @@ #include #include #include +#include #include @@ -25,19 +26,39 @@ void handleClient(int sock) { continue; } + sleep(1); HttpRequestHeader rh; - char packetBuilder[HTTP_RECIVE_PACKET_SIZE] = ""; + char packetBuilder[HTTP_RECIVE_PACKET_SIZE + 1] = ""; + int sizeOfBuffer = HTTP_RECIVE_PACKET_SIZE; + char* packetBuffer = malloc(HTTP_RECIVE_PACKET_SIZE); - int sizeOfPacket = recv(sock, packetBuilder, HTTP_RECIVE_PACKET_SIZE, 0); + int sizeOfPacket = 0;//= read(client_sock, packetBuilder, HTTP_RECIVE_PACKET_SIZE - 1); - char* packetBuffer = malloc(sizeOfPacket); - while ((sizeOfPacket = recv(sock, packetBuilder, HTTP_RECIVE_PACKET_SIZE, 0)) > 0) { - strncat(packetBuffer, packetBuilder, sizeOfPacket); + while ((sizeOfPacket = recv(client_sock, packetBuilder, + HTTP_RECIVE_PACKET_SIZE, 0)) > 0) { + printf("size of packet: %d\n", sizeOfPacket); + if(sizeOfPacket > HTTP_RECIVE_PACKET_SIZE) { + char* tmp = packetBuffer; + int tmpSize = sizeOfBuffer; + sizeOfBuffer += sizeOfPacket; + packetBuffer = malloc(sizeOfPacket); + memcpy(packetBuilder, tmp, tmpSize); + free(tmp); + memcpy(&packetBuffer[tmpSize], packetBuilder, sizeOfPacket); + continue; + } + memcpy(packetBuffer, packetBuilder, sizeOfPacket); + } + if(sizeOfPacket < 0) { + exit(-1); + } + printf("size of packet: %d\n", sizeOfPacket); - HttpRequestHeaderFromS(&rh, packetBuffer); + + HttpRequestHeaderFromS(&rh, packetBuffer, sizeOfPacket); free(packetBuffer); @@ -75,6 +96,11 @@ void handleClient(int sock) { } int main() { + char tmp[] = "testing this is a test"; + HttpRequestHeaderFromS(NULL,tmp, 23); + + + int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("socket"); @@ -83,7 +109,7 @@ int main() { struct sockaddr_in addr; addr.sin_family = AF_INET; - addr.sin_port = htons(9090); + addr.sin_port = htons(9091); inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr); if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {