aboutsummaryrefslogtreecommitdiff
path: root/src/net/util.c
diff options
context:
space:
mode:
authoramelia squires <[email protected]>2024-09-04 01:17:25 -0500
committeramelia squires <[email protected]>2024-09-04 01:19:51 -0500
commitaf2da4242cfe192e49ee490d8dd3a3b7fff02000 (patch)
tree91991ae730237ae4bea3f62679f8f05a288426d5 /src/net/util.c
parent13741880363269ac960b9a5578c07acaa7c72b63 (diff)
add to server, and fix leaks
Diffstat (limited to 'src/net/util.c')
-rw-r--r--src/net/util.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/net/util.c b/src/net/util.c
index 41069fb..868da0f 100644
--- a/src/net/util.c
+++ b/src/net/util.c
@@ -316,19 +316,31 @@ int match_param(char* path, char* match, parray_t* arr){
return path[pi] == 0 && match[mi] == 0;
}
-parray_t* route_match(parray_t* paths, char* request){
- parray_t* out = parray_initl(paths->len);
+parray_t* route_match(parray_t* paths, char* request, larray_t** _params){
+ larray_t* params = *_params;
+ parray_t* out = parray_initl(paths->len * 2);
+ parray_t* temp;
out->len = 0;
for(int i = 0; i != paths->len; i++){
//if(match_param(paths->P[i].key->c, request))
//*if(strcmp(request, paths->P[i].key->c) == 0)*/{
//printf("pass!\n");
+ //printf("%i\n", i);
+
+ temp = parray_init();
+
+ if(match_param(paths->P[i].key->c, request, temp)){
out->P[out->len] = paths->P[i];
+ larray_set(&params, out->len, (void*)temp);
out->len++;
+ } else {
+ parray_clear(temp, FREE);
+ }
//}
}
- printf("\n");
+
+ *_params = params;
return out;
}