Make compatibility serving a full feature. - geomyidae - A small C-based gopherd. HTML git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 81f3ec7d02246ab56d7fcc57ce18d546a3fe4b6f DIR parent 6dc65c6ce9c4a41c034aa1f21d9ff2a1573efde4 HTML Author: Christoph Lohmann <20h@r-36.net> Date: Sat, 22 Jul 2023 17:27:20 +0200 Make compatibility serving a full feature. Diffstat: M main.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) --- DIR diff --git a/main.c b/main.c @@ -187,19 +187,24 @@ handlerequest(int sock, char *req, int rlen, char *base, char *ohost, if (c) c[0] = '\0'; + memmove(recvc, recvb, rlen+1); /* * Try to guess if we have some HTTP-like protocol compatibility * mode. */ if (!nocgi && recvb[0] != '/' && (c = strchr(recvb, ' '))) { - *c = '\0'; + *c++ = '\0'; if (strchr(recvb, '/')) goto dothegopher; if (snprintf(path, sizeof(path), "%s/%s", base, recvb) <= sizeof(path)) { if (realpath(path, (char *)rpath)) { - if (stat(rpath, &dir)) { - handlecgi(sock, rpath, port, base, NULL, NULL, ohost, - clienth, serverh, istls, req, NULL); + if (stat(rpath, &dir) == 0) { + if (loglvl & FILES) + logentry(clienth, clientp, recvc, "compatibility serving"); + + handlecgi(sock, rpath, port, base, "", "", ohost, + clienth, serverh, istls, req, ""); + return; } } }