diff --git a/mscp/mscp.py b/mscp/mscp.py index e1d2bc8..47582d6 100644 --- a/mscp/mscp.py +++ b/mscp/mscp.py @@ -44,10 +44,9 @@ class mscp: self.stop() if self.state == _STATE_STOPPED: self.join() - if self.state == _STATE_JOINED: - self.cleanup() - if self.state == _STATE_CLEANED: - self.free() + + self.cleanup() + self.free() def _state2str(self): return _state_str[self.state] diff --git a/src/mscp.c b/src/mscp.c index 3b6b7ff..6314c06 100644 --- a/src/mscp.c +++ b/src/mscp.c @@ -571,6 +571,11 @@ static void free_chunk(struct list_head *list) void mscp_cleanup(struct mscp *m) { + if (m->first) { + ssh_sftp_close(m->first); + m->first = NULL; + } + release_list(&m->src_list, free_src); INIT_LIST_HEAD(&m->src_list);