commit 3a876cbe4fb9b93ecf98decfa79e7f9b27dbc320
parent 646c0c9ac1c8944393c3640c63ffefd6f400c2a5
Author: Christoph Lohmann <20h@r-36.net>
Date:   Sat, 22 Jul 2023 17:14:59 +0200
First stub for new http-compatibility feature.
Diffstat:
| M | main.c |  |  | 19 | +++++++++++++++++++ | 
1 file changed, 19 insertions(+), 0 deletions(-)
diff --git a/main.c b/main.c
@@ -187,6 +187,25 @@ handlerequest(int sock, char *req, int rlen, char *base, char *ohost,
 	if (c)
 		c[0] = '\0';
 
+	/*
+	 * Try to guess if we have some HTTP-like protocol compatibility
+	 * mode.
+	 */
+	if (!nocgi && recvb[0] != '/' && (c = strchr(recvb, " "))) {
+		*c = '\0';
+		if (strchr(recvb, '/'))
+			goto dothegopher;
+		if (snprintf(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);
+				}
+			}
+		}
+	}
+dothegopher:
+
 	/* Do not allow requests including "..". */
 	if (strstr(recvb, "..")) {
 		dprintf(sock, "%s", selinval);