Ok, here are the diffs I promised. Sorry for the delay. The first is a
patch you sent me; the second is a really quite disgusting hack written in
desparation. It makes POSTing work most of the time and henceforth
silences screaming users.
Index: squid/src/errorpage.c
diff -u squid/src/errorpage.c:1.1.1.27.2.1 squid/src/errorpage.c:1.1.1.27.2.2
--- squid/src/errorpage.c:1.1.1.27.2.1	Sat Aug  7 18:11:33 1999
+++ squid/src/errorpage.c	Fri Oct  1 22:22:45 1999
@@ -295,9 +295,7 @@
         break;
     }
     httpReplySwapOut(rep, entry);
-    httpReplyDestroy(rep);
-    mem->reply->sline.status = err->http_status;
-    mem->reply->content_length = -1;
+    httpReplyAbsorb(mem->reply, rep);
     EBIT_CLR(entry->flags, ENTRY_FWD_HDR_WAIT);
     storeBufferFlush(entry);
     storeComplete(entry);
--- client_side.c.orig	Thu Sep 23 00:06:53 1999
+++ client_side.c	Tue Dec 21 16:52:34 1999
@@ -1921,6 +1930,7 @@
 parseHttpRequest(ConnStateData * conn, method_t * method_p, int *status,
     char **prefix_p, size_t * req_line_sz_p)
 {
+    char *mlist[] = { "GET", "POST", "PUT", "HEAD", "CONNECT", "TRACE", "PURGE", NULL };
     char *inbuf = NULL;
     char *mstr = NULL;
     char *url = NULL;
@@ -1940,6 +1950,8 @@
     struct natlookup natLookup;
     static int natfd = -1;
 #endif
+    int lastcr, i, getout, ncr;
+    char *pinbuf;
 
     if ((req_sz = headersEnd(conn->in.buf, conn->in.offset)) == 0) {
         debug(33, 5) ("Incomplete request, waiting for end of headers\n");
@@ -1964,6 +1976,30 @@
         debug(33, 1) ("parseHttpRequest: Requestheader contains NULL characters\n");
         return parseHttpRequestAbort(conn, "error:invalid-request");
     }
+
+    pinbuf = inbuf;
+
+    for (lastcr = 1, getout = 0, ncr = 0; *inbuf != '\0'; inbuf++) {
+    	if (lastcr) {
+    		for (i = 0; mlist[i]; i++) {
+    			if (strncmp(inbuf, mlist[i], strlen(mlist[i])) == 0) {
+    				getout = 1;
+		    		break;
+		    	}
+		}
+	}
+	if (getout)
+		break;
+    	
+    	if ((lastcr = (*inbuf == '\n')) != 0) {
+    		if (ncr++ == 1)
+    			break;
+    	}
+    }
+
+    if (getout == 0)
+        inbuf = pinbuf;
+
     /* Look for request method */
     if ((mstr = strtok(inbuf, "\t ")) == NULL) {
         debug(33, 1) ("parseHttpRequest: Can't get request method\n");
Received on Mon Jan 17 2000 - 11:03:58 MST
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:12:20 MST