Параметр проксі належить дескриптору libcurl easy. Зміна цього параметра з одного потоку, поки інший потік виконує передавання на тому самому дескрипторі, порушує правила володіння дескриптором.

libcurl є потокобезпечним, коли дотримуються його задокументованих правил. Він не синхронізує всередині довільний одночасний доступ до одного дескриптора. Дайте паралельним працівникам власні дескриптори або передавайте володіння лише коли попередній користувач закінчив.

Інтерфейс share має окремі вимоги до блокувань та обмеження. Це не дозвіл кожному працівнику змінювати кожне налаштування спільного дескриптора easy.

Старі приклади проксі-потоків часто містять блокувальні зворотні виклики для старих версій бібліотек TLS. Перевірте актуальну документацію щодо потокобезпеки для фактичного TLS-бекенду та збірки. Копіювання історичних зворотних викликів OpenSSL у поточний застосунок не замінює правильне володіння дескриптором.

Ініціалізуйте глобальний стан бібліотеки згідно із задокументованими вимогами запуску, перш ніж використовувати її одночасно. Для публічних запитів, дозволених через публічних посередників, безкоштовний список проксі пропонує кандидатів для параметра проксі кожного працівника; узгодьте протокол зі збіркою libcurl. Для кожної невдалої операції зберігайте налаштований проксі дескриптора та власний результат помилки. Глобальна змінна “поточний проксі” — поганий ідентифікатор, коли виконується кілька передавань.

Схожі статті