mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
ALPN support, based on mod_spdy/mod_h2 patch set
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1670397 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -283,6 +283,12 @@ static const command_rec ssl_config_cmds[] = {
|
||||
"OpenSSL configuration command")
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_TLS_ALPN) || defined(HAVE_TLS_NPN)
|
||||
SSL_CMD_SRV(AlpnPreference, ITERATE,
|
||||
"Preference in Application-Layer Protocol Negotiation (ALPN), "
|
||||
"protocols are chosed in the specified order")
|
||||
#endif
|
||||
|
||||
/* Deprecated directives. */
|
||||
AP_INIT_RAW_ARGS("SSLLog", ap_set_deprecated, NULL, OR_ALL,
|
||||
"SSLLog directive is no longer supported - use ErrorLog."),
|
||||
@@ -473,6 +479,37 @@ static int modssl_register_npn(conn_rec *c,
|
||||
#endif
|
||||
}
|
||||
|
||||
static int modssl_register_alpn(conn_rec *c,
|
||||
ssl_alpn_propose_protos advertisefn,
|
||||
ssl_alpn_proto_negotiated negotiatedfn)
|
||||
{
|
||||
#if defined(HAVE_TLS_ALPN) || defined(HAVE_TLS_NPN)
|
||||
SSLConnRec *sslconn = myConnConfig(c);
|
||||
|
||||
if (!sslconn) {
|
||||
return DECLINED;
|
||||
}
|
||||
|
||||
if (!sslconn->alpn_proposefns) {
|
||||
sslconn->alpn_proposefns =
|
||||
apr_array_make(c->pool, 5, sizeof(ssl_alpn_propose_protos));
|
||||
sslconn->alpn_negofns =
|
||||
apr_array_make(c->pool, 5, sizeof(ssl_alpn_proto_negotiated));
|
||||
}
|
||||
|
||||
if (advertisefn)
|
||||
APR_ARRAY_PUSH(sslconn->alpn_proposefns, ssl_alpn_propose_protos) =
|
||||
advertisefn;
|
||||
if (negotiatedfn)
|
||||
APR_ARRAY_PUSH(sslconn->alpn_negofns, ssl_alpn_proto_negotiated) =
|
||||
negotiatedfn;
|
||||
|
||||
return OK;
|
||||
#else
|
||||
return DECLINED;
|
||||
#endif
|
||||
}
|
||||
|
||||
int ssl_init_ssl_connection(conn_rec *c, request_rec *r)
|
||||
{
|
||||
SSLSrvConfigRec *sc;
|
||||
@@ -642,6 +679,7 @@ static void ssl_register_hooks(apr_pool_t *p)
|
||||
APR_REGISTER_OPTIONAL_FN(ssl_proxy_enable);
|
||||
APR_REGISTER_OPTIONAL_FN(ssl_engine_disable);
|
||||
APR_REGISTER_OPTIONAL_FN(modssl_register_npn);
|
||||
APR_REGISTER_OPTIONAL_FN(modssl_register_alpn);
|
||||
|
||||
ap_register_auth_provider(p, AUTHZ_PROVIDER_GROUP, "ssl",
|
||||
AUTHZ_PROVIDER_VERSION,
|
||||
|
Reference in New Issue
Block a user