+Mon Sep 9 12:18:18 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
+
+ * Incoming file transfer request cannot use same session as
+ the sending session. This can happen when sending file to
+ yourself. Crashed the client on quit. Affected file
+ lib/silcclient/client_ftp.c. Bug #24.
+
Sun Sep 8 18:39:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
* Implemented the draft-riikonen-precense-attrs draft and
if (conn->pending_commands)
silc_dlist_uninit(conn->pending_commands);
silc_free(conn->remote_host);
- silc_dlist_uninit(conn->ftp_sessions);
+ if (conn->ftp_sessions)
+ silc_dlist_uninit(conn->ftp_sessions);
silc_free(conn);
client->internal->conns[i] = NULL;
silc_client_ftp_session_free(session);
}
silc_dlist_del(conn->ftp_sessions, session);
- silc_dlist_uninit(conn->ftp_sessions);
}
}
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)
silc_free(session->hostname);
silc_free(session->filepath);
silc_free(session->path);
+ memset(session, 'F', sizeof(*session));
silc_free(session);
}
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;
}