Changes with Apache 2.4.21
+ *) mod_proxy_http2: properly care for HTTP2 flow control of the frontend
+ connection is HTTP/1.1. [Patch supplied by Evgeny Kotkov]
+
*) mod_http2: improved cleanup of connection/streams/tasks to always
have deterministic order regardless of event initiating it. Addresses
reported crashes due to memory read after free issues.
const char *url;
request_rec *r;
h2_request *req;
+ int standalone;
h2_stream_state_t state;
unsigned int suspended : 1;
stream_id, NGHTTP2_STREAM_CLOSED);
return NGHTTP2_ERR_STREAM_CLOSING;
}
+ if (stream->standalone) {
+ nghttp2_session_consume(ngh2, stream_id, len);
+ ap_log_rerror(APLOG_MARK, APLOG_TRACE2, 0, stream->r,
+ "h2_proxy_session(%s): stream %d, win_update %d bytes",
+ session->id, stream_id, (int)len);
+ }
return 0;
}
}
static apr_status_t open_stream(h2_proxy_session *session, const char *url,
- request_rec *r, h2_proxy_stream **pstream)
+ request_rec *r, int standalone,
+ h2_proxy_stream **pstream)
{
h2_proxy_stream *stream;
apr_uri_t puri;
stream->pool = r->pool;
stream->url = url;
stream->r = r;
+ stream->standalone = standalone;
stream->session = session;
stream->state = H2_STREAM_ST_IDLE;
}
apr_status_t h2_proxy_session_submit(h2_proxy_session *session,
- const char *url, request_rec *r)
+ const char *url, request_rec *r,
+ int standalone)
{
h2_proxy_stream *stream;
apr_status_t status;
- status = open_stream(session, url, r, &stream);
+ status = open_stream(session, url, r, standalone, &stream);
if (status == APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(03381)
"process stream(%d): %s %s%s, original: %s",
* @macro
* Version number of the http2 module as c string
*/
-#define MOD_HTTP2_VERSION "1.5.8"
+#define MOD_HTTP2_VERSION "1.5.9"
/**
* @macro
* 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 0x010508
+#define MOD_HTTP2_VERSION_NUM 0x010509
#endif /* mod_h2_h2_version_h */
url = apr_table_get(r->notes, H2_PROXY_REQ_URL_NOTE);
apr_table_setn(r->notes, "proxy-source-port", apr_psprintf(r->pool, "%hu",
ctx->p_conn->connection->local_addr->port));
- status = h2_proxy_session_submit(session, url, r);
+ status = h2_proxy_session_submit(session, url, r, ctx->standalone);
if (status != APR_SUCCESS) {
ap_log_cerror(APLOG_MARK, APLOG_ERR, status, r->connection, APLOGNO(03351)
"pass request body failed to %pI (%s) from %s (%s)",