bindlocal: don't use a random port if port number would wrap

Earlier if CURLOPT_LOCALPORT + CURLOPT_LOCALPORTRANGE would go past port
65535 the code would fall back to random port rather than giving up.

Closes #8862
This commit is contained in:
Harry Sintonen 2022-05-16 22:18:04 +03:00 коммит произвёл Daniel Stenberg
Родитель 542c78dda7
Коммит 1b3dcaed9f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 5CC908FDB71E12C2
1 изменённых файлов: 3 добавлений и 1 удалений

Просмотреть файл

@ -470,8 +470,10 @@ static CURLcode bindlocal(struct Curl_easy *data,
}
if(--portnum > 0) {
infof(data, "Bind to local port %hu failed, trying next", port);
port++; /* try next port */
if(port == 0)
break;
infof(data, "Bind to local port %hu failed, trying next", port - 1);
/* We re-use/clobber the port variable here below */
if(sock->sa_family == AF_INET)
si4->sin_port = ntohs(port);