? nsvhr/aolserver3_2-vhr.patch Index: nsvhr/nsvhr.c =================================================================== RCS file: /cvsroot/aolserver/nsvhr/nsvhr.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 nsvhr.c --- nsvhr/nsvhr.c 31 Jan 2001 21:01:56 -0000 1.1.1.1 +++ nsvhr/nsvhr.c 15 Nov 2002 05:04:33 -0000 @@ -210,7 +210,7 @@ key = Ns_SetKey(set, i); value = Ns_SetValue(set, i); if (!strcasecmp(key, CONFIG_METHOD)) { - Ns_RegisterRequest(server, value, "/", VHRProc, NULL, NULL, + Ns_RegisterRequest(server, value, "/*", VHRProc, NULL, NULL, NS_OP_NODELETE); } } @@ -339,9 +339,9 @@ headers = Ns_ConnHeaders(conn); host = Ns_SetIGet(headers, "Host"); - Ns_StrToLower(host); if (host != NULL) { + Ns_StrToLower(host); hePtr = Tcl_FindHashEntry(&map, host); } @@ -636,8 +636,15 @@ Ns_DStringVarAppend(&request, conn->request->line, HTTP_EOL, NULL); headersPtr = Ns_ConnHeaders(conn); + + /* + * Pass-through headers to the other connection. Replace + * "Connection:" header with "Connection: close" to satisfy the + * HTTP 1.1 RFC. + */ if (headersPtr != NULL) { int i; + Ns_SetUpdate(headersPtr, "Connection", "close"); for (i=0; i < Ns_SetSize(headersPtr); i++) { Ns_DStringVarAppend(&request, Ns_SetKey(headersPtr, i), ": ", Ns_SetValue(headersPtr, i), HTTP_EOL, @@ -666,12 +673,13 @@ * passed to nsunix.so. */ - Ns_ConnClose(conn); + /* Ns_ConnClose(conn); */ for (;;) { int numRead; - numRead = Ns_ConnRead(conn, buffer, BUFSIZE); - if (numRead == NS_ERROR) { + /* numRead = Ns_ConnRead(conn, buffer, BUFSIZE); */ + numRead = Ns_ConnRead(conn, buffer, -BUFSIZE); + if (numRead <= 0) { break; } buffer[numRead] = '\0'; @@ -708,6 +716,8 @@ close(unix_sock); close(dup_sock); + close(sock); + Ns_ConnClose(conn); retcode = NS_OK; done: