diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2006-11-09 21:54:33 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2006-11-09 21:54:33 +0000 | 
| commit | 624745ab20a7826e18f300cc19ef496f0224dad0 (patch) | |
| tree | 50c0d387ade37f25fa30c7ceb013c4faaa9f1150 | |
| parent | 9354822e09ce11fce78a45a897fe2a184565a35e (diff) | |
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.
| -rw-r--r-- | CHANGES | 4 | ||||
| -rw-r--r-- | RELEASE-NOTES | 4 | ||||
| -rw-r--r-- | lib/url.c | 5 | 
3 files changed, 11 insertions, 2 deletions
| @@ -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. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 68c4e9953..4e409be84 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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) @@ -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 | 
