diff options
author | Daniel Stenberg <daniel@haxx.se> | 2022-12-30 17:37:11 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2022-12-31 16:53:21 +0100 |
commit | df856cb5c94665c9083dc8be5bb02392d841cc1e (patch) | |
tree | 32ae63da4d04f6fba31914e025e84649d6ac3b72 /lib/vtls/schannel.c | |
parent | 49f39dfac9278060cb750e006d4f46e841cdfeb2 (diff) | |
download | curl-df856cb5c94665c9083dc8be5bb02392d841cc1e.tar.gz |
vtls: use ALPN HTTP/1.0 when HTTP/1.0 is used
Previously libcurl would use the HTTP/1.1 ALPN id even when the
application specified HTTP/1.0.
Reported-by: William Tang
Ref: #10183
Diffstat (limited to 'lib/vtls/schannel.c')
-rw-r--r-- | lib/vtls/schannel.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c index 7eab9542a..7a279839f 100644 --- a/lib/vtls/schannel.c +++ b/lib/vtls/schannel.c @@ -1215,19 +1215,27 @@ schannel_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) list_start_index = cur; -#ifdef USE_HTTP2 - if(data->state.httpwant >= CURL_HTTP_VERSION_2) { - alpn_buffer[cur++] = ALPN_H2_LENGTH; - memcpy(&alpn_buffer[cur], ALPN_H2, ALPN_H2_LENGTH); - cur += ALPN_H2_LENGTH; - infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2); + if(data->state.httpwant == CURL_HTTP_VERSION_1_0) { + alpn_buffer[cur++] = ALPN_HTTP_1_0_LENGTH; + memcpy(&alpn_buffer[cur], ALPN_HTTP_1_0, ALPN_HTTP_1_0_LENGTH); + cur += ALPN_HTTP_1_0_LENGTH; + infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_0); } + else { +#ifdef USE_HTTP2 + if(data->state.httpwant >= CURL_HTTP_VERSION_2) { + alpn_buffer[cur++] = ALPN_H2_LENGTH; + memcpy(&alpn_buffer[cur], ALPN_H2, ALPN_H2_LENGTH); + cur += ALPN_H2_LENGTH; + infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2); + } #endif - alpn_buffer[cur++] = ALPN_HTTP_1_1_LENGTH; - memcpy(&alpn_buffer[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH); - cur += ALPN_HTTP_1_1_LENGTH; - infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1); + alpn_buffer[cur++] = ALPN_HTTP_1_1_LENGTH; + memcpy(&alpn_buffer[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH); + cur += ALPN_HTTP_1_1_LENGTH; + infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1); + } *list_len = curlx_uitous(cur - list_start_index); *extension_len = *list_len + sizeof(unsigned int) + sizeof(unsigned short); |