From: Mike Hommey Date: Fri, 08 Feb 2008 21:31:48 GMT Subject: Re: [PATCH] Work around curl-gnutls not liking to be reinitialized Message-ID: <20080208213148.GA2823@glandium.org> In-Reply-To: <1202501335-28205-1-git-send-email-mh@glandium.org> > In the end, it was a bit of git's fault, but either curl or gnutls is the > actual culprit. I've not looked into either code to find out who's > responsible, but a very simplified testcase is as follows: > > #include > #include > > int main(void) { > CURL *easy = curl_easy_init(); > curl_easy_setopt(easy, CURLOPT_VERBOSE, 1); > curl_easy_setopt(easy, CURLOPT_URL, "https://www.verisign.com/"); > curl_easy_perform(easy); > curl_global_cleanup(); > easy = curl_easy_init(); > curl_easy_setopt(easy, CURLOPT_VERBOSE, 1); > curl_easy_setopt(easy, CURLOPT_URL, "https://www.verisign.com/"); > curl_easy_perform(easy); > } > > (build with gcc -o test test.c -lcurl) > (note curl_easy_init does curl_global_init behind the curtains, even the > second time. You can convince yourself by adding > curl_global_init(CURL_GLOBAL_ALL);) And the winner is... curl ! The bug was introduced in this commit: http://cool.haxx.se/cvs.cgi/curl/lib/gtls.c.diff?r1=1.26&r2=1.27 Note how gtls_inited is not set back to FALSE in cleanup. This ended up released in 7.16.3. I'm filing a bug. Mike