Mailing List Archive

Re: svn commit: r1854963 - in /httpd/httpd/trunk: ./ modules/http2/
On 3/7/19 10:41 AM, icing@apache.org wrote:
> Author: icing
> Date: Thu Mar 7 09:41:15 2019
> New Revision: 1854963
>
> URL: http://svn.apache.org/viewvc?rev=1854963&view=rev
> Log:
> *) mod_http2: new configuration directive: ```H2Padding numbits``` to control
> padding of HTTP/2 payload frames. 'numbits' is a number from 0-8,
> controlling the range of padding bytes added to a frame. The actual number
> added is chosen randomly per frame. This applies to HEADERS, DATA and PUSH_PROMISE
> frames equally. The default continues to be 0, e.g. no padding. [Stefan Eissing]
>
> *) mod_http2: ripping out all the h2_req_engine internal features now that mod_proxy_http2
> has no more need for it. Optional functions are still declared but no longer implemented.
> While previous mod_proxy_http2 will work with this, it is recommeneded to run the matching
> versions of both modules. [Stefan Eissing]
>
> *) mod_proxy_http2: changed mod_proxy_http2 implementation and fixed several bugs which
> resolve PR63170. The proxy module does now a single h2 request on the (reused)
> connection and returns. [Stefan Eissing]
>
>
> Removed:
> httpd/httpd/trunk/modules/http2/h2_ngn_shed.c
> httpd/httpd/trunk/modules/http2/h2_ngn_shed.h
> Modified:
> httpd/httpd/trunk/CHANGES
> httpd/httpd/trunk/modules/http2/config2.m4
> httpd/httpd/trunk/modules/http2/h2.h
> httpd/httpd/trunk/modules/http2/h2_config.c
> httpd/httpd/trunk/modules/http2/h2_config.h
> httpd/httpd/trunk/modules/http2/h2_conn_io.c
> httpd/httpd/trunk/modules/http2/h2_mplx.c
> httpd/httpd/trunk/modules/http2/h2_mplx.h
> httpd/httpd/trunk/modules/http2/h2_proxy_session.c
> httpd/httpd/trunk/modules/http2/h2_proxy_session.h
> httpd/httpd/trunk/modules/http2/h2_request.c
> httpd/httpd/trunk/modules/http2/h2_session.c
> httpd/httpd/trunk/modules/http2/h2_session.h
> httpd/httpd/trunk/modules/http2/h2_stream.c
> httpd/httpd/trunk/modules/http2/h2_task.c
> httpd/httpd/trunk/modules/http2/h2_task.h
> httpd/httpd/trunk/modules/http2/h2_version.h
> httpd/httpd/trunk/modules/http2/mod_http2.c
> httpd/httpd/trunk/modules/http2/mod_http2.h
> httpd/httpd/trunk/modules/http2/mod_proxy_http2.c
>

> Modified: httpd/httpd/trunk/modules/http2/mod_http2.h
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/mod_http2.h?rev=1854963&r1=1854962&r2=1854963&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/http2/mod_http2.h (original)
> +++ httpd/httpd/trunk/modules/http2/mod_http2.h Thu Mar 7 09:41:15 2019
> @@ -30,22 +30,20 @@ APR_DECLARE_OPTIONAL_FN(int,
>
>
> /*******************************************************************************
> - * HTTP/2 request engines
> + * START HTTP/2 request engines (DEPRECATED)
> ******************************************************************************/
> +
> +/* The following functions were introduced for the experimental mod_proxy_http2
> + * support, but have been abandoned since.
> + * They are still declared here for backward compatibiliy, in case someone
> + * tries to build an old mod_proxy_http2 against it, but will disappear
> + * completely sometime in the future.
> + */
>
> struct apr_thread_cond_t;
> -
> typedef struct h2_req_engine h2_req_engine;
> -
> typedef void http2_output_consumed(void *ctx, conn_rec *c, apr_off_t consumed);
>
> -/**
> - * Initialize a h2_req_engine. The structure will be passed in but
> - * only the name and master are set. The function should initialize
> - * all fields.
> - * @param engine the allocated, partially filled structure
> - * @param r the first request to process, or NULL
> - */
> typedef apr_status_t http2_req_engine_init(h2_req_engine *engine,
> const char *id,
> const char *type,
> @@ -55,35 +53,11 @@ typedef apr_status_t http2_req_engine_in
> http2_output_consumed **pconsumed,
> void **pbaton);
>
> -/**
> - * Push a request to an engine with the specified name for further processing.
> - * If no such engine is available, einit is not NULL, einit is called
> - * with a new engine record and the caller is responsible for running the
> - * new engine instance.
> - * @param engine_type the type of the engine to add the request to
> - * @param r the request to push to an engine for processing
> - * @param einit an optional initialization callback for a new engine
> - * of the requested type, should no instance be available.
> - * By passing a non-NULL callback, the caller is willing
> - * to init and run a new engine itself.
> - * @return APR_SUCCESS iff slave was successfully added to an engine
> - */
> APR_DECLARE_OPTIONAL_FN(apr_status_t,
> http2_req_engine_push, (const char *engine_type,
> request_rec *r,
> http2_req_engine_init *einit));
>
> -/**
> - * Get a new request for processing in this engine.
> - * @param engine the engine which is done processing the slave
> - * @param block if call should block waiting for request to come
> - * @param capacity how many parallel requests are acceptable
> - * @param pr the request that needs processing or NULL
> - * @return APR_SUCCESS if new request was assigned
> - * APR_EAGAIN if no new request is available
> - * APR_EOF if engine may shut down, as no more request will be scheduled
> - * APR_ECONNABORTED if the engine needs to shut down immediately
> - */
> APR_DECLARE_OPTIONAL_FN(apr_status_t,
> http2_req_engine_pull, (h2_req_engine *engine,
> apr_read_type_e block,
> @@ -98,4 +72,8 @@ APR_DECLARE_OPTIONAL_FN(void,
> http2_get_num_workers, (server_rec *s,
> int *minw, int *max));

Is http2_get_num_workers really deprecated? I think it should move before this block. Something like the below?

Index: modules/http2/mod_http2.h
===================================================================
--- modules/http2/mod_http2.h (revision 1903169)
+++ modules/http2/mod_http2.h (working copy)
@@ -28,6 +28,9 @@
APR_DECLARE_OPTIONAL_FN(int,
http2_is_h2, (conn_rec *));

+APR_DECLARE_OPTIONAL_FN(void,
+ http2_get_num_workers, (server_rec *s,
+ int *minw, int *max));

/*******************************************************************************
* START HTTP/2 request engines (DEPRECATED)
@@ -68,9 +71,6 @@
conn_rec *rconn,
apr_status_t status));

-APR_DECLARE_OPTIONAL_FN(void,
- http2_get_num_workers, (server_rec *s,
- int *minw, int *max));

/*******************************************************************************
* END HTTP/2 request engines (DEPRECATED)


>
> +/*******************************************************************************
> + * END HTTP/2 request engines (DEPRECATED)
> + ******************************************************************************/
> +
> #endif
>


Regards

Rüdiger
Re: svn commit: r1854963 - in /httpd/httpd/trunk: ./ modules/http2/ [ In reply to ]
> Am 17.08.2022 um 09:26 schrieb Ruediger Pluem <rpluem@apache.org>:
>
>
>
> On 3/7/19 10:41 AM, icing@apache.org wrote:
>> Author: icing
>> Date: Thu Mar 7 09:41:15 2019
>> New Revision: 1854963
>>
>> URL: http://svn.apache.org/viewvc?rev=1854963&view=rev
>> Log:
>> *) mod_http2: new configuration directive: ```H2Padding numbits``` to control
>> padding of HTTP/2 payload frames. 'numbits' is a number from 0-8,
>> controlling the range of padding bytes added to a frame. The actual number
>> added is chosen randomly per frame. This applies to HEADERS, DATA and PUSH_PROMISE
>> frames equally. The default continues to be 0, e.g. no padding. [Stefan Eissing]
>>
>> *) mod_http2: ripping out all the h2_req_engine internal features now that mod_proxy_http2
>> has no more need for it. Optional functions are still declared but no longer implemented.
>> While previous mod_proxy_http2 will work with this, it is recommeneded to run the matching
>> versions of both modules. [Stefan Eissing]
>>
>> *) mod_proxy_http2: changed mod_proxy_http2 implementation and fixed several bugs which
>> resolve PR63170. The proxy module does now a single h2 request on the (reused)
>> connection and returns. [Stefan Eissing]
>>
>>
>> Removed:
>> httpd/httpd/trunk/modules/http2/h2_ngn_shed.c
>> httpd/httpd/trunk/modules/http2/h2_ngn_shed.h
>> Modified:
>> httpd/httpd/trunk/CHANGES
>> httpd/httpd/trunk/modules/http2/config2.m4
>> httpd/httpd/trunk/modules/http2/h2.h
>> httpd/httpd/trunk/modules/http2/h2_config.c
>> httpd/httpd/trunk/modules/http2/h2_config.h
>> httpd/httpd/trunk/modules/http2/h2_conn_io.c
>> httpd/httpd/trunk/modules/http2/h2_mplx.c
>> httpd/httpd/trunk/modules/http2/h2_mplx.h
>> httpd/httpd/trunk/modules/http2/h2_proxy_session.c
>> httpd/httpd/trunk/modules/http2/h2_proxy_session.h
>> httpd/httpd/trunk/modules/http2/h2_request.c
>> httpd/httpd/trunk/modules/http2/h2_session.c
>> httpd/httpd/trunk/modules/http2/h2_session.h
>> httpd/httpd/trunk/modules/http2/h2_stream.c
>> httpd/httpd/trunk/modules/http2/h2_task.c
>> httpd/httpd/trunk/modules/http2/h2_task.h
>> httpd/httpd/trunk/modules/http2/h2_version.h
>> httpd/httpd/trunk/modules/http2/mod_http2.c
>> httpd/httpd/trunk/modules/http2/mod_http2.h
>> httpd/httpd/trunk/modules/http2/mod_proxy_http2.c
>>
>
>> Modified: httpd/httpd/trunk/modules/http2/mod_http2.h
>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/mod_http2.h?rev=1854963&r1=1854962&r2=1854963&view=diff
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/http2/mod_http2.h (original)
>> +++ httpd/httpd/trunk/modules/http2/mod_http2.h Thu Mar 7 09:41:15 2019
>> @@ -30,22 +30,20 @@ APR_DECLARE_OPTIONAL_FN(int,
>>
>>
>> /*******************************************************************************
>> - * HTTP/2 request engines
>> + * START HTTP/2 request engines (DEPRECATED)
>> ******************************************************************************/
>> +
>> +/* The following functions were introduced for the experimental mod_proxy_http2
>> + * support, but have been abandoned since.
>> + * They are still declared here for backward compatibiliy, in case someone
>> + * tries to build an old mod_proxy_http2 against it, but will disappear
>> + * completely sometime in the future.
>> + */
>>
>> struct apr_thread_cond_t;
>> -
>> typedef struct h2_req_engine h2_req_engine;
>> -
>> typedef void http2_output_consumed(void *ctx, conn_rec *c, apr_off_t consumed);
>>
>> -/**
>> - * Initialize a h2_req_engine. The structure will be passed in but
>> - * only the name and master are set. The function should initialize
>> - * all fields.
>> - * @param engine the allocated, partially filled structure
>> - * @param r the first request to process, or NULL
>> - */
>> typedef apr_status_t http2_req_engine_init(h2_req_engine *engine,
>> const char *id,
>> const char *type,
>> @@ -55,35 +53,11 @@ typedef apr_status_t http2_req_engine_in
>> http2_output_consumed **pconsumed,
>> void **pbaton);
>>
>> -/**
>> - * Push a request to an engine with the specified name for further processing.
>> - * If no such engine is available, einit is not NULL, einit is called
>> - * with a new engine record and the caller is responsible for running the
>> - * new engine instance.
>> - * @param engine_type the type of the engine to add the request to
>> - * @param r the request to push to an engine for processing
>> - * @param einit an optional initialization callback for a new engine
>> - * of the requested type, should no instance be available.
>> - * By passing a non-NULL callback, the caller is willing
>> - * to init and run a new engine itself.
>> - * @return APR_SUCCESS iff slave was successfully added to an engine
>> - */
>> APR_DECLARE_OPTIONAL_FN(apr_status_t,
>> http2_req_engine_push, (const char *engine_type,
>> request_rec *r,
>> http2_req_engine_init *einit));
>>
>> -/**
>> - * Get a new request for processing in this engine.
>> - * @param engine the engine which is done processing the slave
>> - * @param block if call should block waiting for request to come
>> - * @param capacity how many parallel requests are acceptable
>> - * @param pr the request that needs processing or NULL
>> - * @return APR_SUCCESS if new request was assigned
>> - * APR_EAGAIN if no new request is available
>> - * APR_EOF if engine may shut down, as no more request will be scheduled
>> - * APR_ECONNABORTED if the engine needs to shut down immediately
>> - */
>> APR_DECLARE_OPTIONAL_FN(apr_status_t,
>> http2_req_engine_pull, (h2_req_engine *engine,
>> apr_read_type_e block,
>> @@ -98,4 +72,8 @@ APR_DECLARE_OPTIONAL_FN(void,
>> http2_get_num_workers, (server_rec *s,
>> int *minw, int *max));
>
> Is http2_get_num_workers really deprecated? I think it should move before this block. Something like the below?

That looks reasonable. When I added the deprecation warning, I did not add how far that extends.

Cheers,
Stefan

>
> Index: modules/http2/mod_http2.h
> ===================================================================
> --- modules/http2/mod_http2.h (revision 1903169)
> +++ modules/http2/mod_http2.h (working copy)
> @@ -28,6 +28,9 @@
> APR_DECLARE_OPTIONAL_FN(int,
> http2_is_h2, (conn_rec *));
>
> +APR_DECLARE_OPTIONAL_FN(void,
> + http2_get_num_workers, (server_rec *s,
> + int *minw, int *max));
>
> /*******************************************************************************
> * START HTTP/2 request engines (DEPRECATED)
> @@ -68,9 +71,6 @@
> conn_rec *rconn,
> apr_status_t status));
>
> -APR_DECLARE_OPTIONAL_FN(void,
> - http2_get_num_workers, (server_rec *s,
> - int *minw, int *max));
>
> /*******************************************************************************
> * END HTTP/2 request engines (DEPRECATED)
>
>
>>
>> +/*******************************************************************************
>> + * END HTTP/2 request engines (DEPRECATED)
>> + ******************************************************************************/
>> +
>> #endif
>>
>
>
> Regards
>
> Rüdiger
Re: svn commit: r1854963 - in /httpd/httpd/trunk: ./ modules/http2/ [ In reply to ]
On 8/17/22 9:57 AM, Stefan Eissing via dev wrote:
>
>
>> Am 17.08.2022 um 09:26 schrieb Ruediger Pluem <rpluem@apache.org>:
>>
>>
>>
>> On 3/7/19 10:41 AM, icing@apache.org wrote:
>>> Author: icing
>>> Date: Thu Mar 7 09:41:15 2019
>>> New Revision: 1854963
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1854963&view=rev
>>> Log:
>>> *) mod_http2: new configuration directive: ```H2Padding numbits``` to control
>>> padding of HTTP/2 payload frames. 'numbits' is a number from 0-8,
>>> controlling the range of padding bytes added to a frame. The actual number
>>> added is chosen randomly per frame. This applies to HEADERS, DATA and PUSH_PROMISE
>>> frames equally. The default continues to be 0, e.g. no padding. [Stefan Eissing]
>>>
>>> *) mod_http2: ripping out all the h2_req_engine internal features now that mod_proxy_http2
>>> has no more need for it. Optional functions are still declared but no longer implemented.
>>> While previous mod_proxy_http2 will work with this, it is recommeneded to run the matching
>>> versions of both modules. [Stefan Eissing]
>>>
>>> *) mod_proxy_http2: changed mod_proxy_http2 implementation and fixed several bugs which
>>> resolve PR63170. The proxy module does now a single h2 request on the (reused)
>>> connection and returns. [Stefan Eissing]
>>>
>>>
>>> Removed:
>>> httpd/httpd/trunk/modules/http2/h2_ngn_shed.c
>>> httpd/httpd/trunk/modules/http2/h2_ngn_shed.h
>>> Modified:
>>> httpd/httpd/trunk/CHANGES
>>> httpd/httpd/trunk/modules/http2/config2.m4
>>> httpd/httpd/trunk/modules/http2/h2.h
>>> httpd/httpd/trunk/modules/http2/h2_config.c
>>> httpd/httpd/trunk/modules/http2/h2_config.h
>>> httpd/httpd/trunk/modules/http2/h2_conn_io.c
>>> httpd/httpd/trunk/modules/http2/h2_mplx.c
>>> httpd/httpd/trunk/modules/http2/h2_mplx.h
>>> httpd/httpd/trunk/modules/http2/h2_proxy_session.c
>>> httpd/httpd/trunk/modules/http2/h2_proxy_session.h
>>> httpd/httpd/trunk/modules/http2/h2_request.c
>>> httpd/httpd/trunk/modules/http2/h2_session.c
>>> httpd/httpd/trunk/modules/http2/h2_session.h
>>> httpd/httpd/trunk/modules/http2/h2_stream.c
>>> httpd/httpd/trunk/modules/http2/h2_task.c
>>> httpd/httpd/trunk/modules/http2/h2_task.h
>>> httpd/httpd/trunk/modules/http2/h2_version.h
>>> httpd/httpd/trunk/modules/http2/mod_http2.c
>>> httpd/httpd/trunk/modules/http2/mod_http2.h
>>> httpd/httpd/trunk/modules/http2/mod_proxy_http2.c
>>>
>>
>>> Modified: httpd/httpd/trunk/modules/http2/mod_http2.h
>>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/mod_http2.h?rev=1854963&r1=1854962&r2=1854963&view=diff
>>> ==============================================================================
>>> --- httpd/httpd/trunk/modules/http2/mod_http2.h (original)
>>> +++ httpd/httpd/trunk/modules/http2/mod_http2.h Thu Mar 7 09:41:15 2019
>>> @@ -30,22 +30,20 @@ APR_DECLARE_OPTIONAL_FN(int,
>>>
>>>
>>> /*******************************************************************************
>>> - * HTTP/2 request engines
>>> + * START HTTP/2 request engines (DEPRECATED)
>>> ******************************************************************************/
>>> +
>>> +/* The following functions were introduced for the experimental mod_proxy_http2
>>> + * support, but have been abandoned since.
>>> + * They are still declared here for backward compatibiliy, in case someone
>>> + * tries to build an old mod_proxy_http2 against it, but will disappear
>>> + * completely sometime in the future.
>>> + */
>>>
>>> struct apr_thread_cond_t;
>>> -
>>> typedef struct h2_req_engine h2_req_engine;
>>> -
>>> typedef void http2_output_consumed(void *ctx, conn_rec *c, apr_off_t consumed);
>>>
>>> -/**
>>> - * Initialize a h2_req_engine. The structure will be passed in but
>>> - * only the name and master are set. The function should initialize
>>> - * all fields.
>>> - * @param engine the allocated, partially filled structure
>>> - * @param r the first request to process, or NULL
>>> - */
>>> typedef apr_status_t http2_req_engine_init(h2_req_engine *engine,
>>> const char *id,
>>> const char *type,
>>> @@ -55,35 +53,11 @@ typedef apr_status_t http2_req_engine_in
>>> http2_output_consumed **pconsumed,
>>> void **pbaton);
>>>
>>> -/**
>>> - * Push a request to an engine with the specified name for further processing.
>>> - * If no such engine is available, einit is not NULL, einit is called
>>> - * with a new engine record and the caller is responsible for running the
>>> - * new engine instance.
>>> - * @param engine_type the type of the engine to add the request to
>>> - * @param r the request to push to an engine for processing
>>> - * @param einit an optional initialization callback for a new engine
>>> - * of the requested type, should no instance be available.
>>> - * By passing a non-NULL callback, the caller is willing
>>> - * to init and run a new engine itself.
>>> - * @return APR_SUCCESS iff slave was successfully added to an engine
>>> - */
>>> APR_DECLARE_OPTIONAL_FN(apr_status_t,
>>> http2_req_engine_push, (const char *engine_type,
>>> request_rec *r,
>>> http2_req_engine_init *einit));
>>>
>>> -/**
>>> - * Get a new request for processing in this engine.
>>> - * @param engine the engine which is done processing the slave
>>> - * @param block if call should block waiting for request to come
>>> - * @param capacity how many parallel requests are acceptable
>>> - * @param pr the request that needs processing or NULL
>>> - * @return APR_SUCCESS if new request was assigned
>>> - * APR_EAGAIN if no new request is available
>>> - * APR_EOF if engine may shut down, as no more request will be scheduled
>>> - * APR_ECONNABORTED if the engine needs to shut down immediately
>>> - */
>>> APR_DECLARE_OPTIONAL_FN(apr_status_t,
>>> http2_req_engine_pull, (h2_req_engine *engine,
>>> apr_read_type_e block,
>>> @@ -98,4 +72,8 @@ APR_DECLARE_OPTIONAL_FN(void,
>>> http2_get_num_workers, (server_rec *s,
>>> int *minw, int *max));
>>
>> Is http2_get_num_workers really deprecated? I think it should move before this block. Something like the below?
>
> That looks reasonable. When I added the deprecation warning, I did not add how far that extends.

r1903478

Regards

Rüdiger