# HG changeset patch # User Matt Johnston # Date 1425136523 -28800 # Node ID c2a50c9f509ea5069b7165869834526190ac63ed # Parent 01eea88963f367c5a8ac094bdf5c8d57f5c0d666 Add cleanup diff -r 01eea88963f3 -r c2a50c9f509e common-session.c --- a/common-session.c Sat Feb 28 09:06:40 2015 +0800 +++ b/common-session.c Sat Feb 28 23:15:23 2015 +0800 @@ -281,6 +281,8 @@ other session state is freed. */ remove_all_listeners(); + remove_connect_pending(); + while (!isempty(&ses.writequeue)) { buf_free(dequeue(&ses.writequeue)); } diff -r 01eea88963f3 -r c2a50c9f509e netio.c --- a/netio.c Sat Feb 28 09:06:40 2015 +0800 +++ b/netio.c Sat Feb 28 23:15:23 2015 +0800 @@ -177,6 +177,13 @@ return c; } +void remove_connect_pending() { + while (ses.conn_pending.first) { + struct dropbear_progress_connection *c = ses.conn_pending.first->item; + remove_connect(c, ses.conn_pending.first); + } +} + void set_connect_fds(fd_set *writefd) { m_list_elem *iter; diff -r 01eea88963f3 -r c2a50c9f509e netio.h --- a/netio.h Sat Feb 28 09:06:40 2015 +0800 +++ b/netio.h Sat Feb 28 23:15:23 2015 +0800 @@ -30,8 +30,12 @@ struct dropbear_progress_connection * connect_remote (const char* remotehost, const char* remoteport, connect_callback cb, void *cb_data); +/* Sets up for select() */ void set_connect_fds(fd_set *writefd); +/* Handles ready sockets after select() */ void handle_connect_fds(fd_set *writefd); +/* Cleanup */ +void remove_connect_pending(); /* Doesn't actually stop the connect, but adds a dummy callback instead */ void cancel_connect(struct dropbear_progress_connection *c);