aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReyk Floeter <reyk@esdenera.com>2015-01-13 10:13:45 +0100
committerReyk Floeter <reyk@esdenera.com>2015-01-13 10:13:45 +0100
commitfaa9e65a23cdb2e3971b36d7a22fb9d04dabb52c (patch)
tree39582f9f8ef154889a73a2f602508a8e1b487dfd
parentfe34543bc7df2a1e3de5f05657e10aac355475a9 (diff)
downloadhttpd-faa9e65a23cdb2e3971b36d7a22fb9d04dabb52c.tar.gz
httpd-faa9e65a23cdb2e3971b36d7a22fb9d04dabb52c.zip
server_fcgi.c revision 1.45: Abort if fcgi_chunked is not true to
avoid sending additional garbage after the response. Found by Erik Lax ok florian@
-rw-r--r--server_fcgi.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/server_fcgi.c b/server_fcgi.c
index a6055cd..012e2ea 100644
--- a/server_fcgi.c
+++ b/server_fcgi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server_fcgi.c,v 1.44 2015/01/04 22:23:58 chrisz Exp $ */
+/* $OpenBSD: server_fcgi.c,v 1.45 2015/01/13 08:54:01 reyk Exp $ */
/*
* Copyright (c) 2014 Florian Obser <florian@openbsd.org>
@@ -674,16 +674,15 @@ server_fcgi_writechunk(struct client *clt)
} else
len = EVBUFFER_LENGTH(evb);
- /* If len is 0, make sure to write the end marker only once */
- if (len == 0 && clt->clt_fcgi_end++)
- return (0);
-
if (clt->clt_fcgi_chunked) {
+ /* If len is 0, make sure to write the end marker only once */
+ if (len == 0 && clt->clt_fcgi_end++)
+ return (0);
if (server_bufferevent_printf(clt, "%zx\r\n", len) == -1 ||
server_bufferevent_write_chunk(clt, evb, len) == -1 ||
server_bufferevent_print(clt, "\r\n") == -1)
return (-1);
- } else
+ } else if (len)
return (server_bufferevent_write_buffer(clt, evb));
return (0);