X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient_ftp.c;h=aed0f01cc60ed7d8b5123343c90a6bb4f4674015;hb=131f2f3031aae7fb5ae8b347c59a17bb37fb86a1;hp=d22d4e4ceefa85a5a90e590618ecc9880aec896c;hpb=0d1349109b9f6677eb2f748c597540d1282f5329;p=silc.git diff --git a/lib/silcclient/client_ftp.c b/lib/silcclient/client_ftp.c index d22d4e4c..aed0f01c 100644 --- a/lib/silcclient/client_ftp.c +++ b/lib/silcclient/client_ftp.c @@ -693,7 +693,6 @@ void silc_client_ftp_free_sessions(SilcClient client, silc_client_ftp_session_free(session); } silc_dlist_del(conn->ftp_sessions, session); - silc_dlist_uninit(conn->ftp_sessions); } } @@ -726,7 +725,11 @@ void silc_client_ftp_session_free(SilcClientFtpSession session) SILC_LOG_DEBUG(("Free session")); - silc_dlist_del(session->conn->ftp_sessions, session); + if (session->conn && session->conn->ftp_sessions) + silc_dlist_del(session->conn->ftp_sessions, session); + + if (session->conn && session->conn->active_session == session) + session->conn->active_session = NULL; if (session->sftp) { if (session->server) @@ -770,6 +773,7 @@ void silc_client_ftp_session_free(SilcClientFtpSession session) silc_free(session->hostname); silc_free(session->filepath); silc_free(session->path); + memset(session, 'F', sizeof(*session)); silc_free(session); } @@ -1031,7 +1035,7 @@ static void silc_client_ftp_resolve_cb(SilcClient client, silc_dlist_start(conn->ftp_sessions); while ((session = silc_dlist_get(conn->ftp_sessions)) != SILC_LIST_END) { - if (session->client_entry == client_entry) + if (session->client_entry == client_entry && !session->server) break; }