From b74d15ead8cd747e75d5038c39551a33f8c8b90c Mon Sep 17 00:00:00 2001 From: Ruthenic Date: Fri, 6 May 2022 18:27:20 -0400 Subject: [PATCH] add TODO and kinda not-really fix memory issues --- TODO.md | 6 ++++++ bin/httpsrv | Bin 75160 -> 21912 bytes lib/file.h | 1 + lib/log.h | 4 ++++ src/srv.c | 2 +- 5 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..e99b5fd --- /dev/null +++ b/TODO.md @@ -0,0 +1,6 @@ +- url unescaping (uriparser? libcurl?) +- parse request headers (ie Authentication) +- threading or async +- optional allowlist of available paths (throw something else on unavailable ones) +- denylist of known-bad url strings +- fix memory issues or use a GC (bdwgc probably) diff --git a/bin/httpsrv b/bin/httpsrv index 4ec24e488efb3f84dfe283c244afa448224dd682..abbe8412d062a17d21505d8037c5c6e9f9da2a3a 100755 GIT binary patch literal 21912 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 literal 75160 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