• Show log

    Commit

  • Hash : 2022b004
    Author : Patrick Steinhardt
    Date : 2018-02-28T12:06:59

    curl: explicitly initialize and cleanup global curl state
    
    Our curl-based streams make use of the easy curl interface. This
    interface automatically initializes and de-initializes the global curl
    state by calling out to `curl_global_init` and `curl_global_cleanup`.
    Thus, all global state will be repeatedly re-initialized when creating
    multiple curl streams in succession. Despite being inefficient, this is
    not thread-safe due to `curl_global_init` being not thread-safe itself.
    Thus a multi-threaded programing handling multiple curl streams at the
    same time is inherently racy.
    
    Fix the issue by globally initializing and cleaning up curl's state.