diff options
author | Piotr Sikora <piotr@cloudflare.com> | 2014-01-28 15:33:49 -0800 |
---|---|---|
committer | Piotr Sikora <piotr@cloudflare.com> | 2014-01-28 15:33:49 -0800 |
commit | 4ae889c9f2c6c79402630aa2197bfbdd8cc42fd5 (patch) | |
tree | e120558450e8d2832bc2eeefc0864997e770c1d9 /src/http/ngx_http_request.c | |
parent | d3e0bf306b86ac08b828886e75b8c30218a16377 (diff) | |
download | nginx-4ae889c9f2c6c79402630aa2197bfbdd8cc42fd5.tar.gz nginx-4ae889c9f2c6c79402630aa2197bfbdd8cc42fd5.zip |
SSL: support ALPN (IETF's successor to NPN).
Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
Diffstat (limited to 'src/http/ngx_http_request.c')
-rw-r--r-- | src/http/ngx_http_request.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c index badb804a1..a882cca5b 100644 --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -705,13 +705,25 @@ ngx_http_ssl_handshake_handler(ngx_connection_t *c) c->ssl->no_wait_shutdown = 1; -#if (NGX_HTTP_SPDY && defined TLSEXT_TYPE_next_proto_neg) +#if (NGX_HTTP_SPDY \ + && (defined TLSEXT_TYPE_application_layer_protocol_negotiation \ + || defined TLSEXT_TYPE_next_proto_neg)) { unsigned int len; const unsigned char *data; static const ngx_str_t spdy = ngx_string(NGX_SPDY_NPN_NEGOTIATED); - SSL_get0_next_proto_negotiated(c->ssl->connection, &data, &len); + len = 0; + +#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation + SSL_get0_alpn_selected(c->ssl->connection, &data, &len); +#endif + +#ifdef TLSEXT_TYPE_next_proto_neg + if (len == 0) { + SSL_get0_next_proto_negotiated(c->ssl->connection, &data, &len); + } +#endif if (len == spdy.len && ngx_strncmp(data, spdy.data, spdy.len) == 0) { ngx_http_spdy_init(c->read); |