You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "William A. Rowe, Jr." <wr...@rowe-clan.net> on 2001/08/30 20:49:45 UTC
Fw: mod_log-any/8021: [PATCH] %b,%B in LogFormat not logged zero for HEAD request
Would someone be willing to review, patch, and close this PR?
Bill
----- Original Message -----
From: "Taketo Kabe" <ka...@sra-tohoku.co.jp>
To: <su...@bugz.apache.org>
Sent: Friday, July 13, 2001 5:31 AM
Subject: mod_log-any/8021: [PATCH] %b,%B in LogFormat not logged zero for HEAD request
>
> >Number: 8021
> >Category: mod_log-any
> >Synopsis: [PATCH] %b,%B in LogFormat not logged zero for HEAD request
> >Confidential: no
> >Severity: non-critical
> >Priority: medium
> >Responsible: apache
> >State: open
> >Quarter:
> >Keywords:
> >Date-Required:
> >Class: sw-bug
> >Submitter-Id: apache
> >Arrival-Date: Fri Jul 13 03:40:05 PDT 2001
> >Closed-Date:
> >Last-Modified:
> >Originator: kabe@sra-tohoku.co.jp
> >Release: 2.0.20
> >Organization:
> apache
> >Environment:
>
> SunOS 5.8 Generic_108528-05 sun4u sparc SUNW,Ultra-60
> gcc version 2.95.2 19991024 (release)
> ./configure [--enable-log-config]
>
> >Description:
>
> The "%b" "%B" directives in LogFormat should indicate "-" or "0" for
> HEAD requests, because no response body is sent --
> but actually, the file size is logged.
>
> This was because r->sent_bodyct flag, which tells logger to
> log r->bytes_sent, is set to 1 BEFORE checking & discarding the body in
> modules/http/http_protocol.c:ap_http_header_filter() .
>
> Setting r->sent_bodyct AFTER checking for HEAD fixed it.
>
> >How-To-Repeat:
>
> * Setup a LogFormat with "%b" or "%B" within
> (the default combined log is enough)
> * Issue a HEAD request for a plain file.
> * Examine the access_log.
> The 7th field (bytes transmitted) should be "-" or "0",
> but actually is the size of the file.
>
> >Fix:
>
> #
> #****** modules/http/http_protocol.c HEAD logs full content bytes
> #
> # This patch fixes that "%b" "%B" (bytes sent, excluding response headers)
> # directives for mod_log_config, is logged as full file size (should be zero).
> #
> ##find httpd-2_0_20 -name '*.dist7' -exec ./0diff {} \;
> /usr/local/gnu/bin/patch -p1 --backup --suffix=.dist7 << 'EOP'
> =============================== {
> diff -u httpd-2_0_20/modules/http/http_protocol.c.dist7 httpd-2_0_20/modules/http/http_protocol.c
> --- httpd-2_0_20/modules/http/http_protocol.c.dist7 Fri Jul 13 07:32:53 2001
> +++ httpd-2_0_20/modules/http/http_protocol.c Fri Jul 13 07:37:42 2001
> @@ -1206,14 +1206,14 @@
>
> terminate_header(b2);
>
> - r->sent_bodyct = 1; /* Whatever follows is real body stuff... */
> -
> ap_pass_brigade(f->next, b2);
>
> if (r->header_only) {
> apr_brigade_destroy(b);
> return OK;
> }
> +
> + r->sent_bodyct = 1; /* Whatever follows is real body stuff... */
>
> if (r->chunked) {
> /* We can't add this filter until we have already sent the headers.
> =============================== }}
> EOP
>
> >Release-Note:
> >Audit-Trail:
> >Unformatted:
> [In order for any reply to be added to the PR database, you need]
> [to include <ap...@Apache.Org> in the Cc line and make sure the]
> [subject line starts with the report component and number, with ]
> [or without any 'Re:' prefixes (such as "general/1098:" or ]
> ["Re: general/1098:"). If the subject doesn't match this ]
> [pattern, your message will be misfiled and ignored. The ]
> ["apbugs" address is not added to the Cc line of messages from ]
> [the database automatically because of the potential for mail ]
> [loops. If you do not include this Cc, your reply may be ig- ]
> [nored unless you are responding to an explicit request from a ]
> [developer. Reply only with text; DO NOT SEND ATTACHMENTS! ]
>
>
>
>