Mercurial > hg > nginx
comparison src/http/ngx_http_request.c @ 7934:61abb35bb8cf
HTTP/2: removed support for NPN.
NPN was replaced with ALPN, published as RFC 7301 in July 2014.
It used to negotiate SPDY (and, in transition, HTTP/2).
NPN supported appeared in OpenSSL 1.0.1. It does not work with TLSv1.3 [1].
ALPN is supported since OpenSSL 1.0.2.
The NPN support was dropped in Firefox 53 [2] and Chrome 51 [3].
[1] https://github.com/openssl/openssl/issues/3665.
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=1248198
[3] https://www.chromestatus.com/feature/5767920709795840
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Fri, 15 Oct 2021 10:02:15 +0300 |
parents | 7a6afd584eb4 |
children | 65946a191197 |
comparison
equal
deleted
inserted
replaced
7933:2f443cac3f1e | 7934:61abb35bb8cf |
---|---|
804 */ | 804 */ |
805 | 805 |
806 c->ssl->no_wait_shutdown = 1; | 806 c->ssl->no_wait_shutdown = 1; |
807 | 807 |
808 #if (NGX_HTTP_V2 \ | 808 #if (NGX_HTTP_V2 \ |
809 && (defined TLSEXT_TYPE_application_layer_protocol_negotiation \ | 809 && defined TLSEXT_TYPE_application_layer_protocol_negotiation) |
810 || defined TLSEXT_TYPE_next_proto_neg)) | |
811 { | 810 { |
812 unsigned int len; | 811 unsigned int len; |
813 const unsigned char *data; | 812 const unsigned char *data; |
814 ngx_http_connection_t *hc; | 813 ngx_http_connection_t *hc; |
815 | 814 |
816 hc = c->data; | 815 hc = c->data; |
817 | 816 |
818 if (hc->addr_conf->http2) { | 817 if (hc->addr_conf->http2) { |
819 | 818 |
820 #ifdef TLSEXT_TYPE_application_layer_protocol_negotiation | |
821 SSL_get0_alpn_selected(c->ssl->connection, &data, &len); | 819 SSL_get0_alpn_selected(c->ssl->connection, &data, &len); |
822 | |
823 #ifdef TLSEXT_TYPE_next_proto_neg | |
824 if (len == 0) { | |
825 SSL_get0_next_proto_negotiated(c->ssl->connection, &data, &len); | |
826 } | |
827 #endif | |
828 | |
829 #else /* TLSEXT_TYPE_next_proto_neg */ | |
830 SSL_get0_next_proto_negotiated(c->ssl->connection, &data, &len); | |
831 #endif | |
832 | 820 |
833 if (len == 2 && data[0] == 'h' && data[1] == '2') { | 821 if (len == 2 && data[0] == 'h' && data[1] == '2') { |
834 ngx_http_v2_init(c->read); | 822 ngx_http_v2_init(c->read); |
835 return; | 823 return; |
836 } | 824 } |