mirror of
https://github.com/curl/curl.git
synced 2026-08-09 12:14:18 +03:00
ConnectionExists: respect the max_concurrent_streams limits
A regression made the code use 'multiplexed' as a boolean instead of the
counter it is intended to be. This made curl try to "over-populate"
connections with new streams.
This regression came with 41fcdf71a1, shipped in curl 7.65.0.
Also, respect the CURLMOPT_MAX_CONCURRENT_STREAMS value in the same
check.
Reported-by: Kunal Ekawde
Fixes #4779
Closes #4784
This commit is contained in:
parent
4431ed2484
commit
9607532873
5 changed files with 22 additions and 16 deletions
11
lib/multi.c
11
lib/multi.c
|
|
@ -369,6 +369,7 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
|
|||
|
||||
/* -1 means it not set by user, use the default value */
|
||||
multi->maxconnects = -1;
|
||||
multi->max_concurrent_streams = 100;
|
||||
|
||||
#ifdef ENABLE_WAKEUP
|
||||
if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, multi->wakeup_pair) < 0) {
|
||||
|
|
@ -2900,8 +2901,8 @@ CURLMcode curl_multi_setopt(struct Curl_multi *multi,
|
|||
if(streams < 1)
|
||||
streams = 100;
|
||||
multi->max_concurrent_streams =
|
||||
(streams > (long)INITIAL_MAX_CONCURRENT_STREAMS)?
|
||||
(long)INITIAL_MAX_CONCURRENT_STREAMS : streams;
|
||||
(streams > (long)INITIAL_MAX_CONCURRENT_STREAMS)?
|
||||
INITIAL_MAX_CONCURRENT_STREAMS : (unsigned int)streams;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
@ -3343,8 +3344,8 @@ void Curl_multi_dump(struct Curl_multi *multi)
|
|||
}
|
||||
#endif
|
||||
|
||||
size_t Curl_multi_max_concurrent_streams(struct Curl_multi *multi)
|
||||
unsigned int Curl_multi_max_concurrent_streams(struct Curl_multi *multi)
|
||||
{
|
||||
return multi ? ((size_t)multi->max_concurrent_streams ?
|
||||
(size_t)multi->max_concurrent_streams : 100) : 0;
|
||||
DEBUGASSERT(multi);
|
||||
return multi->max_concurrent_streams;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue