Une option de proxy appartient à un handle easy libcurl. Modifier cette option depuis un thread alors qu'un autre thread effectue un transfert sur le même handle enfreint les règles de propriété du handle.

libcurl est thread-safe lorsque ses règles documentées sont respectées. Il ne synchronise pas en interne un accès simultané arbitraire à un même handle. Donnez à chaque worker concurrent ses propres handles, ou ne transférez la propriété que lorsque l'utilisateur précédent a terminé.

L'interface share a des exigences de verrouillage et des limites distinctes. Ce n'est pas une autorisation de modifier chaque réglage d'un handle easy partagé depuis chaque worker.

Les anciens exemples de threads proxy incluent souvent des callbacks de verrouillage pour d'anciennes versions de bibliothèques TLS. Consultez la documentation actuelle sur la sûreté des threads pour le backend TLS et la compilation réels. Copier des callbacks OpenSSL historiques dans une application actuelle ne remplace pas une propriété correcte du handle.

Initialisez l'état global de la bibliothèque conformément aux exigences de démarrage documentées avant de l'utiliser en parallèle. Pour les requêtes publiques autorisées via des intermédiaires publics, la liste de proxys gratuits propose des candidats pour l'option de proxy de chaque worker ; faites correspondre le protocole à la compilation de libcurl. Pour chaque opération échouée, conservez le proxy configuré du handle et son propre résultat d'erreur. Une variable globale “proxy actuel” est un mauvais identifiant lorsque plusieurs transferts sont en cours.

Articles similaires