From: Jim Jagielski Date: Mon, 2 Jan 2006 16:52:58 +0000 (+0000) Subject: Avoid magic numbers. Since we are reading the header, let's X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=708752821b1de86760ba1bbcb7cecf43bc1e70e3;p=thirdparty%2Fapache%2Fhttpd.git Avoid magic numbers. Since we are reading the header, let's be explicit about it. Also removes the need to clean up the readbuf again, and any potential for confusion on what we are doing ;) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365376 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c index 2d8d83c6e57..fef8874ed9c 100644 --- a/modules/proxy/mod_proxy_fcgi.c +++ b/modules/proxy/mod_proxy_fcgi.c @@ -454,25 +454,27 @@ static apr_status_t dispatch(proxy_conn_rec *conn, request_rec *r, int rid, type = 0; char plen = 0; apr_bucket *b; + fcgi_header rheader; + int rheader_size = sizeof(fcgi_header); memset(readbuf, 0, sizeof(readbuf)); /* First, we grab the header... */ - readbuflen = 8; + readbuflen = rheader_size; - rv = apr_socket_recv(conn->sock, readbuf, &readbuflen); + rv = apr_socket_recv(conn->sock, (char *)&rheader, &readbuflen); if (rv != APR_SUCCESS) { break; } - if (readbuflen != 8) { + if (readbuflen != rheader_size) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server, "proxy: FCGI: Failed to read entire header"); rv = APR_EINVAL; break; } - if (readbuf[0] != FCGI_VERSION) { + if (rheader.version != FCGI_VERSION) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server, "proxy: FCGI: Got bogus version %d", (int) readbuf[0]); @@ -480,10 +482,10 @@ static apr_status_t dispatch(proxy_conn_rec *conn, request_rec *r, break; } - type = readbuf[1]; + type = rheader.type; - rid |= readbuf[2] << 8; - rid |= readbuf[3] << 0; + rid |= rheader.requestIdB1 << 8; + rid |= rheader.requestIdB0 << 0; if (rid != request_id) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server, @@ -493,13 +495,10 @@ static apr_status_t dispatch(proxy_conn_rec *conn, request_rec *r, break; } - clen |= readbuf[4] << 8; - clen |= readbuf[5] << 0; + clen |= rheader.contentLengthB1 << 8; + clen |= rheader.contentLengthB0 << 0; - plen = readbuf[6]; - - /* Clear out the header so our buffer is zeroed out again */ - memset(readbuf, 0, 8); + plen = rheader.paddingLength; recv_again: if (clen > sizeof(readbuf) - 1) {