Return-Path: Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: (qmail 51672 invoked from network); 7 Nov 2010 12:36:21 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 7 Nov 2010 12:36:21 -0000 Received: (qmail 39693 invoked by uid 500); 7 Nov 2010 12:36:53 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 39498 invoked by uid 500); 7 Nov 2010 12:36:50 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 39491 invoked by uid 99); 7 Nov 2010 12:36:49 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 07 Nov 2010 12:36:49 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 07 Nov 2010 12:36:47 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 9F8A523889BB; Sun, 7 Nov 2010 12:35:32 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1032266 - /httpd/httpd/trunk/modules/proxy/mod_proxy_fcgi.c Date: Sun, 07 Nov 2010 12:35:32 -0000 To: cvs@httpd.apache.org From: trawick@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101107123532.9F8A523889BB@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: trawick Date: Sun Nov 7 12:35:32 2010 New Revision: 1032266 URL: http://svn.apache.org/viewvc?rev=1032266&view=rev Log: avoid duplicate end-of-stdin header avoid passing {iov_base = &buffer, iov_len=0} to writev() when there is no stdin data Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_fcgi.c Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_fcgi.c URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_fcgi.c?rev=1032266&r1=1032265&r2=1032266&view=diff ============================================================================== --- httpd/httpd/trunk/modules/proxy/mod_proxy_fcgi.c (original) +++ httpd/httpd/trunk/modules/proxy/mod_proxy_fcgi.c Sun Nov 7 12:35:32 2010 @@ -611,6 +611,7 @@ static apr_status_t dispatch(proxy_conn_ char writebuf[AP_IOBUFSIZE]; apr_size_t writebuflen; int last_stdin = 0; + int nvec = 0; rv = ap_get_brigade(r->input_filters, ib, AP_MODE_READBYTES, APR_BLOCK_READ, @@ -637,12 +638,16 @@ static apr_status_t dispatch(proxy_conn_ (apr_uint16_t) writebuflen, 0); fcgi_header_to_array(&header, farray); - vec[0].iov_base = farray; - vec[0].iov_len = sizeof(farray); - vec[1].iov_base = writebuf; - vec[1].iov_len = writebuflen; + vec[nvec].iov_base = farray; + vec[nvec].iov_len = sizeof(farray); + ++nvec; + if (writebuflen) { + vec[nvec].iov_base = writebuf; + vec[nvec].iov_len = writebuflen; + ++nvec; + } - rv = send_data(conn, vec, 2, &len, 0); + rv = send_data(conn, vec, nvec, &len, 0); if (rv != APR_SUCCESS) { break; } @@ -650,13 +655,15 @@ static apr_status_t dispatch(proxy_conn_ if (last_stdin) { pfd.reqevents = APR_POLLIN; /* Done with input data */ - fill_in_header(&header, FCGI_STDIN, request_id, 0, 0); - fcgi_header_to_array(&header, farray); + if (writebuflen) { /* empty FCGI_STDIN not already sent? */ + fill_in_header(&header, FCGI_STDIN, request_id, 0, 0); + fcgi_header_to_array(&header, farray); - vec[0].iov_base = farray; - vec[0].iov_len = sizeof(farray); + vec[0].iov_base = farray; + vec[0].iov_len = sizeof(farray); - rv = send_data(conn, vec, 1, &len, 1); + rv = send_data(conn, vec, 1, &len, 1); + } } }