From c17d674ea68515a2de6814fae48545b9399deefa Mon Sep 17 00:00:00 2001 From: Pin Date: Sat, 29 Jan 2022 18:41:07 -0500 Subject: [PATCH] added fail support --- cmd/server.c | 40 ++++++++++++++++++++++++++++++++-------- include/httpStruct.h | 1 + 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/cmd/server.c b/cmd/server.c index 86d0b20..73badd1 100644 --- a/cmd/server.c +++ b/cmd/server.c @@ -26,8 +26,19 @@ int parseHTTPRequest(char buffer[], struct HTTPRequest *r) { token = strtok(checkLine, " "); // HTTP Request Type if (!strcmp(token, "GET")) { + // Grabbing HTTP Request Type r->requestType = malloc(strlen(token)); strcpy(r->requestType, token); + // Grabbing HTTP Request Dir + token = strtok(NULL, " "); + r->requestDir = malloc(strlen(token)); + strcpy(r->requestDir, token); + // Grabbing HTTP Request Version + token = strtok(NULL, ""); + r->requestVersion = malloc(strlen(token)); + strcpy(r->requestVersion, token); + } else { + return 1; } } else { token = strtok(checkLine, ":"); @@ -52,18 +63,32 @@ int parseHTTPRequest(char buffer[], struct HTTPRequest *r) { return 0; } -int returnRequest(int socket) { - char *hello = "HTTP/1.1 200 OK\nContent-Length: 5\nConnection: close\n\nhello\n\n"; - printf("Returning\n%s", hello); - send(socket, hello, strlen(hello), 0); +int returnRequest(int socket, char *message) { + send(socket, message, strlen(message), 0); return 0; } +int return200Request(int socket) { + char *message = "HTTP/1.1 200 OK\nContent-Length: 6\nConnection: close\n\nhello\n"; + return returnRequest(socket, message); +} + +int return404Request(int socket) { + char *message = "HTTP/1.1 404 Not Found\nContent-Length: 12\nConnection: close\n\n404 Request\n"; + return returnRequest(socket, message); +} + int handleRequest(char buffer[], int socket) { - struct HTTPRequest r; + struct HTTPRequest r; // Holds relevant HTTP request information + int checkerr = 0; // Grabbing relevant information out of request - parseHTTPRequest(buffer, &r); - returnRequest(socket); + checkerr = parseHTTPRequest(buffer, &r); + if (checkerr != 0) { // Checking for HTTP parsing error + perror("Badness!!!"); + return return404Request(socket); + } + // Return response to socket + return200Request(socket); return 0; } @@ -90,7 +115,6 @@ int main(int argc, char const *argv[]) { exit(EXIT_FAILURE); } read(new_socket, buffer, 1024); - printf("Conn received:\n%s\n", buffer); handleRequest(buffer, new_socket); } diff --git a/include/httpStruct.h b/include/httpStruct.h index 85f2764..1f5e85b 100644 --- a/include/httpStruct.h +++ b/include/httpStruct.h @@ -6,4 +6,5 @@ struct HTTPRequest { char *requestType; char *requestVersion; char *requestHost; + char *requestDir; };