aboutsummaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorame <[email protected]>2025-01-22 02:45:23 -0600
committerame <[email protected]>2025-01-22 02:45:23 -0600
commit08cddd087a95bc54c0804d3f81a792cbfc40640a (patch)
tree0de207c53c902fc86fedb9a6196e4abebbd5277d /src/net
parent7a11601d5f97c5bcf93eb7d9b534ef39cedb58a8 (diff)
work on websockets
Diffstat (limited to 'src/net')
-rw-r--r--src/net/util.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/net/util.c b/src/net/util.c
index 10a58fa..b54c253 100644
--- a/src/net/util.c
+++ b/src/net/util.c
@@ -114,6 +114,7 @@ int parse_header(char* buffer, int header_eof, parray_t** _table){
str* current = str_init("");
int oi = 0;
int item = 0;
+
for(; oi != header_eof; oi++){
if(buffer[oi] == ' ' || buffer[oi] == '\n'){
if(buffer[oi] == '\n') current->c[current->len - 1] = 0;
@@ -133,6 +134,7 @@ int parse_header(char* buffer, int header_eof, parray_t** _table){
}
if(item != 3){
+ str_free(current);
*_table = table;
return -1;
}
@@ -148,6 +150,10 @@ int parse_header(char* buffer, int header_eof, parray_t** _table){
key = 0;
} else {
if(buffer[oi] == '\n') current->c[current->len - 1] = 0;
+ //duplicate keys would cause memory leaks, ignore them for now
+ //todo: figure out system to handle this
+ str* id = (str*)parray_get(table, sw->c);
+ if(id != NULL) str_free(id);
parray_set(table, sw->c, (void*)str_init(current->c));
str_clear(current);
str_free(sw);