From 89c0b2a6d863e54bd0253355146f09b92edeccda Mon Sep 17 00:00:00 2001 From: Matt Johnston <matt@ucc.asn.au> Date: Sat, 28 Feb 2015 23:15:23 +0800 Subject: [PATCH] Add cleanup --HG-- branch : fastopen --- common-session.c | 2 ++ netio.c | 7 +++++++ netio.h | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/common-session.c b/common-session.c index 19247a8f..be8f776a 100644 --- a/common-session.c +++ b/common-session.c @@ -281,6 +281,8 @@ void session_cleanup() { other session state is freed. */ remove_all_listeners(); + remove_connect_pending(); + while (!isempty(&ses.writequeue)) { buf_free(dequeue(&ses.writequeue)); } diff --git a/netio.c b/netio.c index 9aa7ae51..42d1b32d 100644 --- a/netio.c +++ b/netio.c @@ -177,6 +177,13 @@ struct dropbear_progress_connection *connect_remote(const char* remotehost, cons 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 --git a/netio.h b/netio.h index 280ccaf5..1bf08ce6 100644 --- a/netio.h +++ b/netio.h @@ -30,8 +30,12 @@ typedef void(*connect_callback)(int result, int sock, void* data, const char* er 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); -- GitLab