Thread (33 messages) flat view 33 messages, 9 authors, 2016-06-15

Re: [PATCH] Work around curl-gnutls not liking to be reinitialized

From: Mike Hommey <hidden>
Date: 2016-06-15 22:44:11

On Fri, Feb 08, 2008 at 09:53:47PM +0000, Johannes Schindelin wrote:
Hi,

On Fri, 8 Feb 2008, Mike Hommey wrote:
quoted
quoted
 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 <curl/curl.h>
	#include <curl/easy.h>

	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.
Wow.  I hope you used "git bisect", in order to spare you unnecessary 
work...
This was actually easy to spot without. I was pretty sure something
fishy was going on with the curl_global_cleanup code, so I followed it
up to Curl_gtls_cleanup and there it was just under my eyes. I only had
to use the annotate thingy in viewcvs (and leave out version 1.35 of the
file, that does whitespace changes only).

Mike
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help