From: Stefan Eissing Date: Mon, 30 Oct 2017 14:27:18 +0000 (+0000) Subject: *) mod_http2: avoid unnecessary data retrieval for a trace log. Allow certain X-Git-Tag: 2.5.0-alpha~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8446105e2811ed6b71ed88929dd72f3763a5df10;p=apache *) mod_http2: avoid unnecessary data retrieval for a trace log. Allow certain information retrievals on null bucket beams where it makes sense. [Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1813767 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index d02b98d854..769c9afe82 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_http2: avoid unnecessary data retrieval for a trace log. Allow certain + information retrievals on null bucket beams where it makes sense. [Stefan Eissing] + *) mod_macro: fix usability of globally defined macros in .htaccess files. PR 57525. [Jose Kahan , Yann Ylavic] diff --git a/modules/http2/h2_bucket_beam.c b/modules/http2/h2_bucket_beam.c index 6b8c645be2..38291b0acf 100644 --- a/modules/http2/h2_bucket_beam.c +++ b/modules/http2/h2_bucket_beam.c @@ -663,7 +663,7 @@ apr_size_t h2_beam_buffer_size_get(h2_bucket_beam *beam) h2_beam_lock bl; apr_size_t buffer_size = 0; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { buffer_size = beam->max_buf_size; leave_yellow(beam, &bl); } @@ -696,7 +696,7 @@ void h2_beam_abort(h2_bucket_beam *beam) { h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { if (!beam->aborted) { beam->aborted = 1; r_purge_sent(beam); @@ -712,7 +712,7 @@ apr_status_t h2_beam_close(h2_bucket_beam *beam) { h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { r_purge_sent(beam); beam_close(beam); report_consumption(beam, &bl); @@ -725,7 +725,7 @@ apr_status_t h2_beam_leave(h2_bucket_beam *beam) { h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { recv_buffer_cleanup(beam, &bl); beam->aborted = 1; beam_close(beam); @@ -1165,7 +1165,7 @@ apr_off_t h2_beam_get_buffered(h2_bucket_beam *beam) apr_off_t l = 0; h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { for (b = H2_BLIST_FIRST(&beam->send_list); b != H2_BLIST_SENTINEL(&beam->send_list); b = APR_BUCKET_NEXT(b)) { @@ -1183,7 +1183,7 @@ apr_off_t h2_beam_get_mem_used(h2_bucket_beam *beam) apr_off_t l = 0; h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { for (b = H2_BLIST_FIRST(&beam->send_list); b != H2_BLIST_SENTINEL(&beam->send_list); b = APR_BUCKET_NEXT(b)) { @@ -1199,7 +1199,7 @@ int h2_beam_empty(h2_bucket_beam *beam) int empty = 1; h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { empty = (H2_BLIST_EMPTY(&beam->send_list) && (!beam->recv_buffer || APR_BRIGADE_EMPTY(beam->recv_buffer))); leave_yellow(beam, &bl); @@ -1212,7 +1212,7 @@ int h2_beam_holds_proxies(h2_bucket_beam *beam) int has_proxies = 1; h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { has_proxies = !H2_BPROXY_LIST_EMPTY(&beam->proxies); leave_yellow(beam, &bl); } @@ -1224,7 +1224,7 @@ int h2_beam_was_received(h2_bucket_beam *beam) int happend = 0; h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { happend = (beam->received_bytes > 0); leave_yellow(beam, &bl); } @@ -1236,7 +1236,7 @@ apr_size_t h2_beam_get_files_beamed(h2_bucket_beam *beam) apr_size_t n = 0; h2_beam_lock bl; - if (enter_yellow(beam, &bl) == APR_SUCCESS) { + if (beam && enter_yellow(beam, &bl) == APR_SUCCESS) { n = beam->files_beamed; leave_yellow(beam, &bl); } diff --git a/modules/http2/h2_mplx.c b/modules/http2/h2_mplx.c index a04962ec9e..fb3712bfdc 100644 --- a/modules/http2/h2_mplx.c +++ b/modules/http2/h2_mplx.c @@ -376,11 +376,12 @@ static int report_stream_iter(void *ctx, void *val) { h2_mplx *m = ctx; h2_stream *stream = val; h2_task *task = stream->task; - ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, m->c, - H2_STRM_MSG(stream, "started=%d, scheduled=%d, ready=%d, " - "out_buffer=%ld"), - !!stream->task, stream->scheduled, h2_stream_is_ready(stream), - (long)h2_beam_get_buffered(stream->output)); + if (APLOGctrace1(m->c)) { + ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, m->c, + H2_STRM_MSG(stream, "started=%d, scheduled=%d, ready=%d, out_buffer=%ld"), + !!stream->task, stream->scheduled, h2_stream_is_ready(stream), + (long)h2_beam_get_buffered(stream->output)); + } if (task) { ap_log_cerror(APLOG_MARK, APLOG_DEBUG, 0, m->c, /* NO APLOGNO */ H2_STRM_MSG(stream, "->03198: %s %s %s" diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index d843f25b2d..aa5ff3c58c 100644 --- a/modules/http2/h2_version.h +++ b/modules/http2/h2_version.h @@ -26,7 +26,7 @@ * @macro * Version number of the http2 module as c string */ -#define MOD_HTTP2_VERSION "1.10.12" +#define MOD_HTTP2_VERSION "1.10.13-DEV" /** * @macro @@ -34,7 +34,7 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define MOD_HTTP2_VERSION_NUM 0x010a0b +#define MOD_HTTP2_VERSION_NUM 0x010a0d #endif /* mod_h2_h2_version_h */