Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov

2006. It turned out we wrongly assumed that the connection cache was present
when tearing down a connection.
This commit is contained in:
Daniel Stenberg 2006-11-09 21:54:33 +00:00
parent 9354822e09
commit 624745ab20
3 changed files with 11 additions and 2 deletions

View File

@ -7,6 +7,10 @@
Changelog
Daniel (9 November 2006)
- Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
2006. It turned out we wrongly assumed that the connection cache was present
when tearing down a connection.
- Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
multi interface, but I could also repeat it doing multiple sequential ones
with the easy interface. Using Ciprian's test case, I could fix it.

View File

@ -20,6 +20,8 @@ This release includes the following bugfixes:
was not enabled
o multiple TFTP transfers on the same (easy or multi) handle could cause a
crash
o SIGSEGV when disconnecting on a transfer on a re-used handle when the
host name didn't resolve
Other curl-related news:
@ -33,6 +35,6 @@ This release would not have looked like this without help, code, reports and
advice from friends like these:
James Housley, Olaf Stueben, Yang Tse, Gisle Vanem, Bradford Bruce,
Ciprian Badescu
Ciprian Badescu, Dmitriy Sergeyev
Thanks! (and sorry if I forgot to mention someone)

View File

@ -1804,7 +1804,10 @@ CURLcode Curl_disconnect(struct connectdata *conn)
if(-1 != conn->connectindex) {
/* unlink ourselves! */
infof(data, "Closing connection #%ld\n", conn->connectindex);
data->state.connc->connects[conn->connectindex] = NULL;
if(data->state.connc)
/* only clear the table entry if we still know in which cache we
used to be in */
data->state.connc->connects[conn->connectindex] = NULL;
}
#ifdef USE_LIBIDN