diff options
author | Yann Ylavic <ylavic@apache.org> | 2024-06-11 16:46:29 +0200 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2024-06-11 16:46:29 +0200 |
commit | 0d71da4bdfff4c18abcea77ffa76227f70be0f73 (patch) | |
tree | 86b029a563a1184b7f360049ece10348cc02f963 /include/ap_mmn.h | |
parent | CI: Set the path to php-fpm so it's found by proxy_fcgi.t (after r1918149). (diff) | |
download | apache2-0d71da4bdfff4c18abcea77ffa76227f70be0f73.tar.xz apache2-0d71da4bdfff4c18abcea77ffa76227f70be0f73.zip |
mpm_event,mod_http2: Keep compatibility with CONN_STATE_PROCESSING + OK
Before r1918022, returning OK with CONN_STATE_PROCESSING to mpm_event was
handled like/by CONN_STATE_LINGER "to not break old or third-party modules
which might return OK w/o touching the state and expect lingering close,
like with worker or prefork MPMs".
So we need a new return code to be allowed to apply the new POLLIN/POLLOUT
behaviour for CONN_STATE_PROCESSING, thus revive AGAIN as introduced by
Graham some times ago for a nonblocking WIP (moved to a branch/PR since then).
MPM event will advertise its ability to handle CONN_STATE_PROCESSING + AGAIN
with AP_MPMQ_CAN_AGAIN, and mod_http2 can use that to know how to return to
the MPM as expected. When !AP_MPMQ_CAN_AGAIN modules/mod_http2 can still use
CONN_STATE_WRITE_COMPLETION + CONN_SENSE_WANT_READ + c->clogging_input_filters
which will work in mpm_even-2.4.x still.
* include/ap_mmn.h:
Bump MMN minor for AP_MPMQ_CAN_AGAIN and AGAIN.
* include/ap_mpm.h:
Define AP_MPMQ_CAN_AGAIN.
* include/httpd.h:
Define AGAIN.
* modules/http2/h2.h:
No need for H2_USE_STATE_PROCESSING anymore with AP_MPMQ_CAN_AGAIN.
* modules/http2/h2_c1.c:
For !keepalive case return to the MPM using CONN_STATE_PROCESSING + AGAIN
or CONN_STATE_WRITE_COMPLETION + c->clogging_input_filters depending on
AP_MPMQ_CAN_AGAIN only.
* modules/http2/h2_session.c:
Can return to the MPM for h2_send_flow_blocked() provided it's async only.
* server/mpm/event/event.c:
Rework process_socket()'s CONN_STATE_PROCESSING to handle AGAIN and preserve
compatibility. Have a lingering_close label to goto there faster when
process_lingering_close() is to be called. Improve relevant comments.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1918257 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'include/ap_mmn.h')
-rw-r--r-- | include/ap_mmn.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/ap_mmn.h b/include/ap_mmn.h index 34abf61654..fcf98e8908 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -725,6 +725,7 @@ * 20211221.19 (2.5.1-dev) Add AP_REG_NOTEMPTY_ATSTART * 20211221.20 (2.5.1-dev) Add CONN_STATE_KEEPALIVE and CONN_STATE_PROCESSING * 20211221.21 (2.5.1-dev) Add processing field struct process_score + * 20211221.22 (2.5.1-dev) Add AGAIN, AP_MPMQ_CAN_AGAIN. */ #define MODULE_MAGIC_COOKIE 0x41503235UL /* "AP25" */ @@ -732,7 +733,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20211221 #endif -#define MODULE_MAGIC_NUMBER_MINOR 21 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 22 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a |