From f985d12decd4b43be0961afc38697970468f9042 Mon Sep 17 00:00:00 2001 From: hiro Date: Tue, 14 Dec 2010 09:12:33 +0000 Subject: disconnect all current sessions of remote folders when going offline. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2754 ee746299-78ed-0310-b773-934348b2243d --- libsylph/folder.c | 20 ++++++++++++++++++++ libsylph/folder.h | 2 ++ libsylph/libsylph-0.def | 1 + 3 files changed, 23 insertions(+) (limited to 'libsylph') diff --git a/libsylph/folder.c b/libsylph/folder.c index 74ab3df7..97c13237 100644 --- a/libsylph/folder.c +++ b/libsylph/folder.c @@ -162,6 +162,26 @@ void folder_remote_folder_destroy(RemoteFolder *rfolder) session_destroy(rfolder->session); } +gint folder_remote_folder_destroy_all_sessions(void) +{ + GList *list; + Folder *folder; + RemoteFolder *rfolder; + + for (list = folder_list; list != NULL; list = list->next) { + folder = FOLDER(list->data); + if (FOLDER_IS_REMOTE(folder)) { + rfolder = REMOTE_FOLDER(folder); + if (rfolder->session) { + session_destroy(rfolder->session); + rfolder->session = NULL; + } + } + } + + return 0; +} + gint folder_scan_tree(Folder *folder) { g_return_val_if_fail(folder != NULL, -1); diff --git a/libsylph/folder.h b/libsylph/folder.h index c3822c39..81f90f0a 100644 --- a/libsylph/folder.h +++ b/libsylph/folder.h @@ -333,6 +333,8 @@ void folder_destroy (Folder *folder); void folder_local_folder_destroy (LocalFolder *lfolder); void folder_remote_folder_destroy(RemoteFolder *rfolder); +gint folder_remote_folder_destroy_all_sessions (void); + gint folder_scan_tree (Folder *folder); gint folder_create_tree (Folder *folder); diff --git a/libsylph/libsylph-0.def b/libsylph/libsylph-0.def index 287e5306..8f7223b8 100644 --- a/libsylph/libsylph-0.def +++ b/libsylph/libsylph-0.def @@ -692,3 +692,4 @@ EXPORTS socks_connect @ 690 socks4_connect @ 691 socks5_connect @ 692 + folder_remote_folder_destroy_all_sessions @ 693 -- cgit v1.2.3