diff --git a/src/headers.c b/src/headers.c index 1ffa93b..0bc58e3 100644 --- a/src/headers.c +++ b/src/headers.c @@ -196,8 +196,8 @@ int headers_metadata(struct metaData* metaData, char* header) { method = DELETE; else if (strcmp(_method, "CONNECT") == 0) method = CONNECT; - else if (strcmp(_method, "OPTION") == 0) - method = OPTION; + else if (strcmp(_method, "OPTIONS") == 0) + method = OPTIONS; else if (strcmp(_method, "TRACE") == 0) method = TRACE; else if (strcmp(_method, "PATCH") == 0) @@ -224,11 +224,22 @@ int headers_metadata(struct metaData* metaData, char* header) { return HEADERS_ALLOC_ERROR; } strcpy(queryString, _queryString); + + char* uri = malloc(strlen(_path) + 1 + strlen(_queryString) + 1); + if (uri == NULL) { + free(path); + free(queryString); + return HEADERS_ALLOC_ERROR; + } + strcpy(uri, path); + strcat(uri, "?"); + strcat(uri, queryString); metaData->method = method; metaData->httpVersion = httpVersion; metaData->path = path; metaData->queryString = queryString; + metaData->uri = uri; return HEADERS_SUCCESS; } @@ -241,21 +252,19 @@ const char* methodString(struct metaData metaData) { return "HEAD"; case POST: return "POST"; - case POST: - return "POST"; case PUT: return "PUT"; case DELETE: return "DELETE"; case CONNECT: return "CONNECT"; - case OPTION: - return "OPTION"; + case OPTIONS: + return "OPTIONS"; case TRACE: return "TRACE"; case PATCH: return "PATCH"; default: - return NULL + return NULL; } } diff --git a/src/misc.h b/src/misc.h index e64e6dc..a63ed41 100644 --- a/src/misc.h +++ b/src/misc.h @@ -20,6 +20,7 @@ struct metaData { enum httpVersion httpVersion; char* path; char* queryString; + char* uri; }; /* diff --git a/src/networking.c b/src/networking.c index ef398be..03494a3 100644 --- a/src/networking.c +++ b/src/networking.c @@ -95,6 +95,8 @@ void cleanup() { free(connection->metaData.path); if (connection->metaData.queryString != NULL) free(connection->metaData.queryString); + if (connection->metaData.uri != NULL) + free(connection->metaData.uri); if (connection->currentHeader != NULL) free(connection->currentHeader);