diff options
author | Yann Ylavic <ylavic@apache.org> | 2020-04-01 22:56:44 +0000 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2020-04-01 22:56:44 +0000 |
commit | 343cdd9bb4488c4f0c632583af8bb4bdae0a32dc (patch) | |
tree | 94f3e8526ca2a497d660930a9b945ab2b5a7d52f /server/util_filter.c | |
parent | fd5afc092ccd71a4e48a0f6c891ed6e1b14e187f (diff) | |
download | httpd-343cdd9bb4488c4f0c632583af8bb4bdae0a32dc.tar.gz |
core: add r->flushed flag and set it when the response is sent.
By setting EOR->r->flushed in the core output filter, allow one to determine at
log_transaction hook time whether the request has been fully flushed through
the network, or not (network issue, filter error, n-th pipelined resposne...).
Introduce the ap_bucket_eor_request() helper to get the request bound to an EOR
bucket, and uses it in ap_core_output_filter() to mark the EOR's request just
before destroying it, after all the previous buckets have been sent.
While at it, rename the request_rec* member of struct ap_bucket_eor from "data"
to "r", which makes the code clearer (not to be confused with b->data).
Finally, add CustomLog format %F, showing "F" or "-" depending on r->flushed,
for admins to figure out for each request.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1876017 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'server/util_filter.c')
-rw-r--r-- | server/util_filter.c | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/server/util_filter.c b/server/util_filter.c index 8f34a8771c..136237a601 100644 --- a/server/util_filter.c +++ b/server/util_filter.c @@ -1017,17 +1017,6 @@ AP_DECLARE(apr_status_t) ap_filter_setaside_brigade(ap_filter_t *f, * * XXX: Should we cleanup all previous c->output_filters' setaside * brigades? - * - * XXX: For each EOR we potentially destroy here, there is a - * request handler/module which "thought" everything went well - * on the output filters side, and returned OK. Should we mark - * something in each EOR's request_rec (e.g. r->aborted) for - * the log_transaction hooks to know at least? - * Or alternatively (and possibly more robustly) have the - * ap_core_output_filter() set r->flushed when it sees an EOR - * up to which it sent everything (before destroying it)? - * Anyway we can't set c->aborted here, because close_notify - * for instance can/should still be sent out. */ AP_DEBUG_ASSERT(rv != APR_SUCCESS); f->c->keepalive = AP_CONN_CLOSE; |