diff options
author | Kirill Ponomarev <krion@FreeBSD.org> | 2003-10-21 14:32:55 +0000 |
---|---|---|
committer | Kirill Ponomarev <krion@FreeBSD.org> | 2003-10-21 14:32:55 +0000 |
commit | e39abd290e9175af2922dad2f9c8712a7e3d1b85 (patch) | |
tree | 72aa6e77e96f9062b48b3ce03d774bbc86f8276a /www/pserv/files/patch-handlers.c | |
parent | - Update to version 4.6.1 (diff) |
- Update to 3.0.b2
PR: 58310
Submitted by: maintainer
Notes
Notes:
svn path=/head/; revision=91823
Diffstat (limited to 'www/pserv/files/patch-handlers.c')
-rw-r--r-- | www/pserv/files/patch-handlers.c | 100 |
1 files changed, 26 insertions, 74 deletions
diff --git a/www/pserv/files/patch-handlers.c b/www/pserv/files/patch-handlers.c index 2a943605a18d..9339502572f6 100644 --- a/www/pserv/files/patch-handlers.c +++ b/www/pserv/files/patch-handlers.c @@ -1,5 +1,5 @@ ---- handlers.c.orig Thu Sep 18 15:26:48 2003 -+++ handlers.c Thu Oct 16 14:16:05 2003 +--- handlers.c.orig Mon Oct 20 10:27:32 2003 ++++ handlers.c Tue Oct 21 00:13:59 2003 @@ -24,6 +24,7 @@ #endif @@ -8,10 +8,10 @@ extern int port; /* server port */ extern char defaultFileName[MAX_PATH_LEN+1]; /* default name for index, default or similar file */ -@@ -262,12 +263,33 @@ - newArgv[i] = NULL; /* we correctly terminate argv */ +@@ -263,6 +264,14 @@ i = 0; + /* beware of not overfilling this array, check MAX_ENVP_LEN */ + if (req.contentLength != -1) + { + sprintf(newEnvp[i++], "CONTENT_LENGTH=%ld", req.contentLength); @@ -23,33 +23,19 @@ strcpy(newEnvp[i], "SERVER_SOFTWARE="); strcat(newEnvp[i], SERVER_SOFTWARE_STR); strcat(newEnvp[i], "/"); - strcat(newEnvp[i++], SERVER_VERSION_STR); -+ strcpy(newEnvp[i], "SERVER_PROTOCOL="); -+ strcat(newEnvp[i++], req.protocolVersion); - strcpy(newEnvp[i], "REQUEST_METHOD="); - strcat(newEnvp[i++], req.method); -+ strcpy(newEnvp[i], "REMOTE_ADDR="); -+ strcat(newEnvp[i++], req.address); -+ strcpy(newEnvp[i], "HTTP_USER_AGENT="); -+ strcat(newEnvp[i++], req.userAgent); +@@ -285,6 +294,11 @@ + strcat(newEnvp[i++], req.userAgent); + strcpy(newEnvp[i], "SCRIPT_FILENAME="); + strcat(newEnvp[i++], completedPath); + if (req.cookie[0] != '\0') + { + strcpy(newEnvp[i], "HTTP_COOKIE="); + strcat(newEnvp[i++], req.cookie); + } -+ strcpy(newEnvp[i], "SCRIPT_FILENAME="); -+ strcat(newEnvp[i++], completedPath); - strcpy(newEnvp[i], "SCRIPT_NAME="); - strcat(newEnvp[i++], req.documentAddress); - strcpy(newEnvp[i], "GATEWAY_INTERFACE="); -@@ -302,13 +324,256 @@ - execve(completedPath, newArgv, newEnvp); - /* we reach this line only if an execution error occoured */ - /* logging will happen in the father */ -- printf("\n<HTML><HEAD><TITLE>CGI Error</TITLE></HEAD><BODY><H1>Cgi Exec error</H1></BODY></HTML>\n"); -+ printf("\n<HTML><HEAD><TITLE>CGI Error</TITLE></HEAD><BODY><H1>CGI Exec error</H1></BODY></HTML>\n"); - exit(-1); - } + newEnvp[i] = NULL; + + /* we change the current working directory to the scripts one */ +@@ -317,7 +331,244 @@ return 0; } @@ -228,41 +214,35 @@ + newArgv[i] = NULL; /* we correctly terminate argv */ + + i = 0; -+ if (req.contentLength != -1) -+ { -+ sprintf(newEnvp[i++], "CONTENT_LENGTH=%ld", req.contentLength); -+ strcpy(newEnvp[i], "CONTENT_TYPE="); -+ strcat(newEnvp[i++], req.contentType); -+ } + strcpy(newEnvp[i], "SERVER_NAME="); + strcat(newEnvp[i++], DEFAULT_SERVER_NAME); + strcpy(newEnvp[i], "SERVER_SOFTWARE="); + strcat(newEnvp[i], SERVER_SOFTWARE_STR); + strcat(newEnvp[i], "/"); + strcat(newEnvp[i++], SERVER_VERSION_STR); -+ strcpy(newEnvp[i], "SERVER_PROTOCOL="); -+ strcat(newEnvp[i++], req.protocolVersion); + strcpy(newEnvp[i], "REQUEST_METHOD="); + strcat(newEnvp[i++], req.method); ++ strcpy(newEnvp[i], "SCRIPT_NAME="); ++ strcat(newEnvp[i++], req.documentAddress); ++ strcpy(newEnvp[i], "GATEWAY_INTERFACE="); ++ strcat(newEnvp[i++], CGI_VERSION); ++ sprintf(newEnvp[i++], "SERVER_PORT=%d", port); ++ strcpy(newEnvp[i++], envPath); ++ strcpy(newEnvp[i], "QUERY_STRING="); ++ strcat(newEnvp[i++], req.queryString); ++ strcpy(newEnvp[i], "SERVER_PROTOCOL="); ++ strcat(newEnvp[i++], req.protocolVersion); + strcpy(newEnvp[i], "REMOTE_ADDR="); + strcat(newEnvp[i++], req.address); + strcpy(newEnvp[i], "HTTP_USER_AGENT="); + strcat(newEnvp[i++], req.userAgent); ++ strcpy(newEnvp[i], "SCRIPT_FILENAME="); ++ strcat(newEnvp[i++], completedPath); + if (req.cookie[0] != '\0') + { + strcpy(newEnvp[i], "HTTP_COOKIE="); + strcat(newEnvp[i++], req.cookie); + } -+ strcpy(newEnvp[i], "SCRIPT_FILENAME="); -+ strcat(newEnvp[i++], completedPath); -+ strcpy(newEnvp[i], "SCRIPT_NAME="); -+ strcat(newEnvp[i++], req.documentAddress); -+ strcpy(newEnvp[i], "GATEWAY_INTERFACE="); -+ strcat(newEnvp[i++], CGI_VERSION); -+ sprintf(newEnvp[i++], "SERVER_PORT=%d", port); -+ strcpy(newEnvp[i++], envPath); -+ strcpy(newEnvp[i], "QUERY_STRING="); -+ strcat(newEnvp[i++], req.queryString); + newEnvp[i] = NULL; + + /* we change the current working directory to the scripts one */ @@ -301,7 +281,7 @@ int sock; char filePath[]; char mimeType[]; -@@ -351,11 +616,11 @@ +@@ -360,11 +611,11 @@ return -1; } stat(filePath, &fileStats); @@ -315,7 +295,7 @@ fatal = NO; retry = NO; while(!feof(inFile) && !fatal) -@@ -399,11 +664,11 @@ +@@ -408,11 +659,11 @@ if (howMany > 0) { #ifdef ON_THE_FLY_CONVERSION @@ -332,31 +312,3 @@ #endif if (send(sock, outBuff, howMany, 0) < 0) { -@@ -449,7 +714,7 @@ - FILE *tempFile; - size_t generatedBytes; - char tempStr[MAX_PATH_LEN+1]; -- char linkStr[MAX_PATH_LEN+1]; -+ char linkStr[MAX_PATH_LEN+2]; - time_t currTime; - char timeStr[256]; - -@@ -497,10 +762,16 @@ - if (strcmp(dp->d_name, ".")) /* not self */ - { - if (strcmp(dp->d_name, "..")) -+ { - strcpy(linkStr, dp->d_name); -- else -+ if (dp->d_type == DT_DIR) -+ strcat(linkStr, "/"); -+ sprintf(tempStr, "<A HREF=\"%s\">%s</A><BR>\n", linkStr, linkStr); -+ } else -+ { - strcpy(linkStr, "Parent Directory"); -- sprintf(tempStr, "<A HREF=\"%s\">%s</A><BR>\n", dp->d_name, linkStr); -+ sprintf(tempStr, "<A HREF=\"%s/\">%s</A><BR>\n", dp->d_name, linkStr); -+ } - generatedBytes += strlen(tempStr); - fprintf(tempFile, "%s\n", tempStr); - } |