Check-in by ben on 2025-08-01 07:00:15

Wait to block clients until CGI input has been parsed.

 INSERTED    DELETED
       21         20 src/cgi.awk
       21         20 TOTAL over 1 changed file

Index: src/cgi.awk
==================================================================
--- src/cgi.awk
+++ src/cgi.awk
@@ -16,30 +16,10 @@
    return
}

function cgi_init(    ip) {
    ip = ENVIRON["REMOTE_ADDR"]
-    if (pass_enabled) {
-        # default deny access except client IP addresses in pass list
-        blocked = 1
-        FS = "\t"
-        while ((getline < pass_list) > 0) {
-            if (match(/^#/, $0)) {
-                # ignore comments
-                continue
-            }
-            if (ip == $1) {
-                blocked = 0
-                break
-            }
-        }
-        close(pass_list)
-        if (blocked) {
-            block_msg(ip)
-            exit(0)
-        }
-    }

    search = ARGV[1]
    arguments = ARGV[2]
    traversal = ARGV[5]
    selector = ARGV[6]
@@ -87,10 +67,31 @@
        path = substr(path, 1, RSTART - 1)
    }

    split(path, parts, "/")
    topdir = parts[2]
+
+    if (pass_enabled) {
+        # default deny access except client IP addresses in pass list
+        blocked = 1
+        FS = "\t"
+        while ((getline < pass_list) > 0) {
+            if (match(/^#/, $0)) {
+                # ignore comments
+                continue
+            }
+            if (ip == $1) {
+                blocked = 0
+                break
+            }
+        }
+        close(pass_list)
+        if (blocked) {
+            block_msg(ip)
+            exit(0)
+        }
+    }

    return
}

function gph_encode(str,     retval) {