Cris Bailiff found out that when the SSL session cache was filled, libcurl
authorDaniel Stenberg <daniel@haxx.se>
Wed, 9 Jan 2002 09:38:37 +0000 (09:38 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 9 Jan 2002 09:38:37 +0000 (09:38 +0000)
would crash. This corrects the problem.

lib/ssluse.c

index 47ae497..21f27cd 100644 (file)
@@ -552,9 +552,9 @@ int Curl_SSL_Close_All(struct SessionHandle *data)
 static int Store_SSL_Session(struct connectdata *conn)
 {
   SSL_SESSION *ssl_sessionid;
-  struct curl_ssl_session *store;
   int i;
   struct SessionHandle *data=conn->data; /* the mother of all structs */
+  struct curl_ssl_session *store = &data->state.session[0];
   int oldest_age=data->state.session[0].age; /* zero if unused */
 
   /* ask OpenSSL, say please */
@@ -568,7 +568,8 @@ static int Store_SSL_Session(struct connectdata *conn)
      the oldest if necessary) */
 
   /* find an empty slot for us, or find the oldest */
-  for(i=0; (i<data->set.ssl.numsessions) && data->state.session[i].sessionid; i++) {
+  for(i=1; (i<data->set.ssl.numsessions) &&
+        data->state.session[i].sessionid; i++) {
     if(data->state.session[i].age < oldest_age) {
       oldest_age = data->state.session[i].age;
       store = &data->state.session[i];