aboutsummaryrefslogtreecommitdiff
path: root/src/net.c
diff options
context:
space:
mode:
authoramelia squires <[email protected]>2025-09-08 21:18:33 -0500
committeramelia squires <[email protected]>2025-09-08 21:18:33 -0500
commit90a9c8706facf1ee2a5b253bbbb5ddc1bf0a63da (patch)
treedaa8cdc4f170b3d97ccf413124655126ea15d57e /src/net.c
parent88a12e1ed5f15cc7039c9ad94cfb78f33d31bee9 (diff)
allow empty headers + tests
Diffstat (limited to 'src/net.c')
-rw-r--r--src/net.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/net.c b/src/net.c
index 53a5ceb..ba7a134 100644
--- a/src/net.c
+++ b/src/net.c
@@ -565,6 +565,7 @@ int _request(lua_State* L, struct request_state* state){
char* request = calloc(cont_len + header->len + strlen(host) + strlen(path) + 512, sizeof * request);
sprintf(request, "%s %s HTTP/1.1\r\nHost: %s\r\nConnection: Close%s\r\n\r\n%s", action, path, host, header->c, cont);
+
str_free(header);
int s = _request_write(state, request, strlen(request));
@@ -597,7 +598,7 @@ int _request(lua_State* L, struct request_state* state){
parray_t* owo = NULL;
//handle errors
- int err = parse_header(a->c, header_eof - a->c, &owo);
+ int err = parse_header(a->c, header_eof - a->c + 2, &owo);
assert(err == 0);
for(int i = 0; i != owo->len; i++){
@@ -669,7 +670,7 @@ void path_parse(struct net_path_t* path, str* raw){
str** reading = &path->path;
- for(int i = 0; i <= raw->len; i++){
+ for(int i = 0; i <= raw->len - 1; i++){
if(raw->len - i > 1){
switch(raw->c[i]){
case '&':
@@ -720,7 +721,7 @@ void* handle_client(void *_arg){
parray_t* table;
//checks for a valid header
- int val = parse_header(buffer, header_eof, &table);
+ int val = parse_header(buffer, header_eof + 2, &table);
if(val == -2) net_error(client_fd, 414);