Add more DDoS prevention. - bitreich-httpd - Bitreich HTTPD service HTML git clone git://bitreich.org/bitreich-httpd git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-httpd DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit bf9101e0e7efc8918d6122efef1339ac12b25b63 DIR parent e5dfc5fbfe93266da5edb1bb2e903734738296cf HTML Author: Christoph Lohmann <20h@r-36.net> Date: Tue, 22 Aug 2023 07:11:56 +0200 Add more DDoS prevention. Diffstat: M bitreich-httpd.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- DIR diff --git a/bitreich-httpd.c b/bitreich-httpd.c @@ -138,7 +138,7 @@ main(int argc, char *argv[]) char *wwwbase, *wwwindex, *request, *ctype, *path, *le_file, *le_base, clienth[NI_MAXHOST], clientp[NI_MAXSERV], *zuccbase, *requested, *header, *headerval, *hosthdr; - int rlen; + int rlen, i; struct sockaddr_storage clt; socklen_t cltlen = sizeof(clt); time_t tim; @@ -170,9 +170,10 @@ main(int argc, char *argv[]) request[rlen-1] = '\0'; /* Header parsing. */ - for (;;) { + /* At max read 16 headers. Do not allow DDoS. */ + for (i = 0; i < 16; i++) { header = read_line(0, &rlen, 512); - if (header == NULL) + if (header == NULL || rlen == 0) break; if (header[rlen-1] == '\r') { header[rlen-1] = '\0';