Changes with Apache 2.4.18
+ *) mod_ssl: for all ssl_engine_vars.c lookups, fall back to master connection
+ if conn_rec itself holds no valid SSLConnRec*. Fixes PR58666.
+ [Stefan Eissing]
+
+
*) mod_http2: connection level window for flow control is set to protocol
maximum of 2GB-1, preventing window exhaustion when sending data on many
streams with higher cumulative window size.
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- *) mod_ssl: for all ssl_engine_vars.c lookups, fall back to master connection
- if conn_rec itself holds no valid SSLConnRec*. Fixes PR58666.
- trunk patch: http://svn.apache.org/r1717958
- 2.4.x patch: trunk works apart from CHANGES
- +1: icing, ylavic, jim
*) Easy patches: synch 2.4.x and trunk
- mod_auth_basic: Use 'ap_pbase64decode' to simplify code.
static char *ssl_var_lookup_ssl_version(apr_pool_t *p, char *var);
static char *ssl_var_lookup_ssl_compress_meth(SSL *ssl);
-static int ssl_is_https(conn_rec *c)
+static SSLConnRec *ssl_get_effective_config(conn_rec *c)
{
SSLConnRec *sslconn = myConnConfig(c);
+ if (!(sslconn && sslconn->ssl) && c->master) {
+ /* use master connection if no SSL defined here */
+ sslconn = myConnConfig(c->master);
+ }
+ return sslconn;
+}
+
+static int ssl_is_https(conn_rec *c)
+{
+ SSLConnRec *sslconn = ssl_get_effective_config(c);
return sslconn && sslconn->ssl;
}
static const char *expr_var_fn(ap_expr_eval_ctx_t *ctx, const void *data)
{
char *var = (char *)data;
- SSLConnRec *sslconn = myConnConfig(ctx->c);
+ SSLConnRec *sslconn = ssl_get_effective_config(ctx->c);
return sslconn ? ssl_var_lookup_ssl(ctx->p, sslconn, ctx->r, var) : NULL;
}
* Connection stuff
*/
if (result == NULL && c != NULL) {
- SSLConnRec *sslconn = myConnConfig(c);
- if (!(sslconn && sslconn->ssl) && c->master) {
- /* use master connection if no SSL defined here */
- sslconn = myConnConfig(c->master);
- }
+ SSLConnRec *sslconn = ssl_get_effective_config(c);
if (strlen(var) > 4 && strcEQn(var, "SSL_", 4)
&& sslconn && sslconn->ssl)
result = ssl_var_lookup_ssl(p, sslconn, r, var+4);
apr_array_header_t *ssl_ext_list(apr_pool_t *p, conn_rec *c, int peer,
const char *extension)
{
- SSLConnRec *sslconn = myConnConfig(c);
+ SSLConnRec *sslconn = ssl_get_effective_config(c);
SSL *ssl = NULL;
apr_array_header_t *array = NULL;
X509 *xs = NULL;
*/
static const char *ssl_var_log_handler_c(request_rec *r, char *a)
{
- SSLConnRec *sslconn = myConnConfig(r->connection);
+ SSLConnRec *sslconn = ssl_get_effective_config(r->connection);
char *result;
if (sslconn == NULL || sslconn->ssl == NULL)