ngtcp2: advertise h3 as well as h3-29
Advertise h3 as well as h3-29 since some servers out there require h3 for QUIC v1. Closes #7979
This commit is contained in:
parent
10bc426dd2
commit
9db25d213b
@ -61,6 +61,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define H3_ALPN_H3_29 "\x5h3-29"
|
#define H3_ALPN_H3_29 "\x5h3-29"
|
||||||
|
#define H3_ALPN_H3 "\x2h3"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This holds outgoing HTTP/3 stream data that is used by nghttp3 until acked.
|
* This holds outgoing HTTP/3 stream data that is used by nghttp3 until acked.
|
||||||
@ -305,8 +306,8 @@ static int quic_init_ssl(struct quicsocket *qs)
|
|||||||
SSL_set_connect_state(qs->ssl);
|
SSL_set_connect_state(qs->ssl);
|
||||||
SSL_set_quic_use_legacy_codepoint(qs->ssl, 0);
|
SSL_set_quic_use_legacy_codepoint(qs->ssl, 0);
|
||||||
|
|
||||||
alpn = (const uint8_t *)H3_ALPN_H3_29;
|
alpn = (const uint8_t *)H3_ALPN_H3_29 H3_ALPN_H3;
|
||||||
alpnlen = sizeof(H3_ALPN_H3_29) - 1;
|
alpnlen = sizeof(H3_ALPN_H3_29) - 1 + sizeof(H3_ALPN_H3) - 1;
|
||||||
if(alpn)
|
if(alpn)
|
||||||
SSL_set_alpn_protos(qs->ssl, alpn, (int)alpnlen);
|
SSL_set_alpn_protos(qs->ssl, alpn, (int)alpnlen);
|
||||||
|
|
||||||
@ -418,7 +419,7 @@ static int tp_send_func(gnutls_session_t ssl, gnutls_buffer_t extdata)
|
|||||||
|
|
||||||
static int quic_init_ssl(struct quicsocket *qs)
|
static int quic_init_ssl(struct quicsocket *qs)
|
||||||
{
|
{
|
||||||
gnutls_datum_t alpn = {NULL, 0};
|
gnutls_datum_t alpn[2];
|
||||||
/* this will need some attention when HTTPS proxy over QUIC get fixed */
|
/* this will need some attention when HTTPS proxy over QUIC get fixed */
|
||||||
const char * const hostname = qs->conn->host.name;
|
const char * const hostname = qs->conn->host.name;
|
||||||
int rc;
|
int rc;
|
||||||
@ -483,10 +484,12 @@ static int quic_init_ssl(struct quicsocket *qs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* strip the first byte (the length) from NGHTTP3_ALPN_H3 */
|
/* strip the first byte (the length) from NGHTTP3_ALPN_H3 */
|
||||||
alpn.data = (unsigned char *)H3_ALPN_H3_29 + 1;
|
alpn[0].data = (unsigned char *)H3_ALPN_H3_29 + 1;
|
||||||
alpn.size = sizeof(H3_ALPN_H3_29) - 2;
|
alpn[0].size = sizeof(H3_ALPN_H3_29) - 2;
|
||||||
if(alpn.data)
|
alpn[1].data = (unsigned char *)H3_ALPN_H3 + 1;
|
||||||
gnutls_alpn_set_protocols(qs->ssl, &alpn, 1, 0);
|
alpn[1].size = sizeof(H3_ALPN_H3) - 2;
|
||||||
|
|
||||||
|
gnutls_alpn_set_protocols(qs->ssl, alpn, 2, GNUTLS_ALPN_MANDATORY);
|
||||||
|
|
||||||
/* set SNI */
|
/* set SNI */
|
||||||
gnutls_server_name_set(qs->ssl, GNUTLS_NAME_DNS, hostname, strlen(hostname));
|
gnutls_server_name_set(qs->ssl, GNUTLS_NAME_DNS, hostname, strlen(hostname));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user