r2115 - trunk/varnish-cache/bin/varnishd
cecilihf at projects.linpro.no
cecilihf at projects.linpro.no
Thu Oct 18 15:38:45 CEST 2007
Author: cecilihf
Date: 2007-10-18 15:38:45 +0200 (Thu, 18 Oct 2007)
New Revision: 2115
Modified:
trunk/varnish-cache/bin/varnishd/cache_fetch.c
Log:
Make pass mode work for POST requests. Solves ticket #47.
Modified: trunk/varnish-cache/bin/varnishd/cache_fetch.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_fetch.c 2007-10-18 13:30:52 UTC (rev 2114)
+++ trunk/varnish-cache/bin/varnishd/cache_fetch.c 2007-10-18 13:38:45 UTC (rev 2115)
@@ -261,6 +261,9 @@
int mklen, is_head;
struct http_conn htc[1];
int i;
+ int content_length;
+ char hdr[20];
+ char *ptr;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(sp->wrk, WORKER_MAGIC);
@@ -287,6 +290,17 @@
return (__LINE__);
WRK_Reset(w, &vc->fd);
http_Write(w, hp, 0);
+
+ /* If a POST request was passed to fetch, we must send
+ * any pipelined bytes to the backend as well */
+ if (!strcmp(http_GetReq(sp->http), "POST")) {
+ sprintf(hdr, "%ccontent-length:", 15);
+ assert(http_GetHdr(sp->http, hdr, &ptr));
+ content_length = atoi(ptr);
+ if (sp->htc->pipeline.b != NULL && content_length > 0)
+ WRK_Write(w, sp->htc->pipeline.b, content_length);
+ }
+
if (WRK_Flush(w)) {
VBE_UpdateHealth(sp, vc, -1);
VBE_ClosedFd(sp->wrk, vc);
More information about the varnish-commit
mailing list