From: Daniel Stenberg Date: Wed, 22 Nov 2023 09:54:40 +0000 (+0100) Subject: CURLMOPT_MAX_CONCURRENT_STREAMS: make sure the set value is within range X-Git-Tag: curl-8_5_0~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a8bb20d4819b3eddfbb405c0045ca85137b0ff6;p=thirdparty%2Fcurl.git CURLMOPT_MAX_CONCURRENT_STREAMS: make sure the set value is within range ... or use the default value. Also clarify the documentation language somewhat. Closes #12382 --- diff --git a/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 b/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 index 64dc2b563a..d53f0460e8 100644 --- a/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 +++ b/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 @@ -34,8 +34,8 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_CONCURRENT_STREAMS, .fi .SH DESCRIPTION Pass a long indicating the \fBmax\fP. The set number is used as the maximum -number of concurrent streams for a connections that libcurl should support on -connections done using HTTP/2. +number of concurrent streams libcurl should support on connections done using +HTTP/2 or HTTP/3. Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 100. The value passed here would be honored based on other system resources properties. diff --git a/lib/multi.c b/lib/multi.c index 5fde0e75b0..e62f237693 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -3293,9 +3293,9 @@ CURLMcode curl_multi_setopt(struct Curl_multi *multi, case CURLMOPT_MAX_CONCURRENT_STREAMS: { long streams = va_arg(param, long); - if(streams < 1) + if((streams < 1) || (streams > INT_MAX)) streams = 100; - multi->max_concurrent_streams = curlx_sltoui(streams); + multi->max_concurrent_streams = (unsigned int)streams; } break; default: