diff options
| author | Drew DeVault <sir@cmpwn.com> | 2020-10-26 18:16:05 -0400 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2020-10-26 18:16:05 -0400 |
| commit | da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a (patch) | |
| tree | 99b642b6a8273d16b469166a811e1fbd5eab14dd /src | |
| parent | 5d725ff4ee0ccea5c83cd10b5354550a4c831a95 (diff) | |
| download | gmnisrv-da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a.tar.gz gmnisrv-da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a.tar.xz gmnisrv-da6f7e9f05ae40446dab41cc45f44bbd7d4aa98a.zip | |
CGI: Fix SCRIPT_NAME variable
Diffstat (limited to 'src')
| -rw-r--r-- | src/serve.c | 9 |
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; } |
