diff options
| author | Syndamia <kamen@syndamia.com> | 2023-12-07 16:55:45 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2023-12-07 16:55:45 +0200 |
| commit | 4740d6095ec909ddd37ca212fae7329f40738fa2 (patch) | |
| tree | f21221e5446485f33f41403bf167ad51e04a4c0f | |
| parent | 4c5733cf47362f1cbd90ce43bf5122e76c0bf22f (diff) | |
| download | pico-web-4740d6095ec909ddd37ca212fae7329f40738fa2.tar pico-web-4740d6095ec909ddd37ca212fae7329f40738fa2.tar.gz pico-web-4740d6095ec909ddd37ca212fae7329f40738fa2.zip | |
[server] Fixed memory leak by not freeing memory in forks
| -rw-r--r-- | server.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -85,6 +85,14 @@ void on_connection(const char* client, const int fd_client, sds **vhosts, const printf("[%s@%d] Served!\n", client, fd_client); } + +void freeVhosts(sds **vhosts, int argc) { + for (int i = 1; i < argc; i++) { + sdsfreesplitres(vhosts[i-1], 3); + } + free(vhosts); +} + int main(int argc, char* argv[]) { /* * Get hosts @@ -135,6 +143,7 @@ int main(int argc, char* argv[]) { close(fd_socket); on_connection(strAddr, fd_client, vhosts, argc - 1); close(fd_client); + freeVhosts(vhosts, argc); return 0; } close(fd_client); @@ -144,8 +153,5 @@ int main(int argc, char* argv[]) { printf("Exiting"); while(wait(NULL) > 0); - for (int i = 1; i < argc; i++) { - sdsfreesplitres(vhosts[i-1], 3); - } - free(vhosts); + freeVhosts(vhosts, argc); } |
