summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2020-10-26 18:16:05 -0400
committerDrew DeVault <sir@cmpwn.com>2020-10-26 18:16:05 -0400
commitda6f7e9f05ae40446dab41cc45f44bbd7d4aa98a (patch)
tree99b642b6a8273d16b469166a811e1fbd5eab14dd /src
parent5d725ff4ee0ccea5c83cd10b5354550a4c831a95 (diff)
downloadgmnisrv-da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a.tar.gz
gmnisrv-da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a.tar.xz
gmnisrv-da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a.zip
CGI: Fix SCRIPT_NAME variable
Diffstat (limited to 'src')
-rw-r--r--src/serve.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/serve.c b/src/serve.c
index cb8d634..4a8e778 100644
--- a/src/serve.c
+++ b/src/serve.c
@@ -121,7 +121,8 @@ internal_error:
}
static void
-serve_cgi(struct gmnisrv_client *client, const char *path, const char *pathinfo)
+serve_cgi(struct gmnisrv_client *client, const char *path,
+ const char *script_name, const char *pathinfo)
{
int pfd[2];
if (pipe(pfd) == -1) {
@@ -170,7 +171,7 @@ serve_cgi(struct gmnisrv_client *client, const char *path, const char *pathinfo)
setenv("SERVER_PROTOCOL", "GEMINI", 1);
setenv("SERVER_SOFTWARE", "gmnisrv/0.0.0", 1);
setenv("GEMINI_URL", client->buf, 1);
- setenv("SCRIPT_NAME", path, 1);
+ setenv("SCRIPT_NAME", script_name, 1);
setenv("PATH_INFO", pathinfo, 1);
setenv("SERVER_NAME", client->host->hostname, 1);
setenv("HOSTNAME", client->host->hostname, 1);
@@ -330,7 +331,9 @@ serve_request(struct gmnisrv_client *client)
}
if (route->cgi) {
- serve_cgi(client, real_path, (const char *)pathinfo);
+ serve_cgi(client, real_path,
+ (const char *)client_path,
+ (const char *)pathinfo);
return;
}