DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=30
730>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=30730
a>
------- Additional Comments From basant.kukreja sun.com
2007-03-29 17:16 -------
I debugged the issue in trunk. eor_bucket_cleanup is getting
called. It also
invokes ap_increment_count. But there are two request
objects. One is main
request object and another one is the redirected request
object which is created
by ap_internal_redirect_handler
request_rec *new = internal_internal_redirect(new_uri,
r);
eor_bucket_cleanup is called with main request object. In
the case of
redirect, bytes_sent are stored in second (redirected)
request object (named
new). The result is that access counters are incremented
correctly but
bytes_sent never incremented correctly. We can't call
ap_increment_counts for
redirected request because in that case access count will be
incremented
twice.
$ curl --dump-header - -o /tmp/one.jpeg http://localhost
:4014/conv_test.jpeg
Here is the debugging session :
Breakpoint 1, ap_process_request (r=0x96ba458) at
http_request.c:278
278 conn_rec *c = r->connection;
(gdb) c
Continuing.
Breakpoint 3, ap_internal_redirect_handler
(new_uri=0x96bbf30
"/cgi-bin/watermark1.php/conv_test.jpeg",
r=0x96ba458) at http_request.c:513
513 request_rec *new =
internal_internal_redirect(new_uri, r);
(gdb) n
516 if (!new) {
(gdb) n
520 if (r->handler)
(gdb) n
521 ap_set_content_type(new,
r->content_type);
(gdb) n
522 access_status =
ap_process_request_internal(new);
(gdb) n
523 if (access_status == OK) {
(gdb) n
524 if ((access_status = ap_invoke_handler(new))
!= 0) {
(gdb) n
528 ap_finalize_request_protocol(new);
(gdb) n
533 }
(gdb) p new
$10 = (request_rec *) 0x96bbf58
(gdb) p r
$11 = (request_rec *) 0x96ba458
(gdb) p new->bytes_sent
$12 = 5046
(gdb) p r->bytes_sent
$13 = 0
(gdb) c
Continuing.
Breakpoint 4, eor_bucket_cleanup (data=0x96b47f0) at
eor_bucket.c:24
24 apr_bucket *b = (apr_bucket *)data;
(gdb) n
25 request_rec *r = (request_rec *)b->data;
(gdb) n
27 if (r != NULL) {
(gdb) p r
$14 = (request_rec *) 0x96ba458
(gdb) p r->bytes_sent
$15 = 0
(gdb) n
32 b->data = NULL;
(gdb)
34
ap_update_child_status(r->connection->sbh,
SERVER_BUSY_LOG, r);
(gdb)
35 ap_run_log_transaction(r);
(gdb)
36 if (ap_extended_status) {
(gdb)
37
ap_increment_counts(r->connection->sbh, r);
(gdb)
40 return APR_SUCCESS;
(gdb) p r->bytes_sent
$16 = 0
(gdb) c
I considered transferring for bytes from redirected request
object to main
request object but I think that might create other
problems.
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=ema
il
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the
assignee.
------------------------------------------------------------
---------
To unsubscribe, e-mail: bugs-unsubscribe httpd.apache.org
For additional commands, e-mail: bugs-help httpd.apache.org
|