diff --git a/src/ssl_sock.c b/src/ssl_sock.c index 158cb48ff..2f030bab1 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -1974,17 +1974,26 @@ static int ssl_sock_advertise_alpn_protos(SSL *s, const unsigned char **out, unsigned int server_len, void *arg) { struct ssl_bind_conf *conf = arg; +#ifdef USE_QUIC + struct connection *conn = SSL_get_ex_data(s, ssl_app_data_index); +#endif if (SSL_select_next_proto((unsigned char**) out, outlen, (const unsigned char *)conf->alpn_str, conf->alpn_len, server, server_len) != OPENSSL_NPN_NEGOTIATED) { #ifdef USE_QUIC - struct connection *conn = SSL_get_ex_data(s, ssl_app_data_index); - if (conn->qc) quic_set_tls_alert(conn->qc, SSL_AD_NO_APPLICATION_PROTOCOL); #endif return SSL_TLSEXT_ERR_NOACK; } + +#ifdef USE_QUIC + if (conn->qc && !quic_set_app_ops(conn->qc, *out, *outlen)) { + quic_set_tls_alert(conn->qc, SSL_AD_NO_APPLICATION_PROTOCOL); + return SSL_TLSEXT_ERR_NOACK; + } +#endif + return SSL_TLSEXT_ERR_OK; } #endif