aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/pop3/camel-pop3-store.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2000-11-01 07:44:46 +0800
committerDan Winship <danw@src.gnome.org>2000-11-01 07:44:46 +0800
commit517db3b21fece8d8616620ff299689699b62b277 (patch)
tree0417ff14f0fa20967aba0580e48d8668050ad07b /camel/providers/pop3/camel-pop3-store.c
parent1d60c5cc024dd69b2f0d776bd0f48d1af7fef08b (diff)
downloadgsoc2013-evolution-517db3b21fece8d8616620ff299689699b62b277.tar
gsoc2013-evolution-517db3b21fece8d8616620ff299689699b62b277.tar.gz
gsoc2013-evolution-517db3b21fece8d8616620ff299689699b62b277.tar.bz2
gsoc2013-evolution-517db3b21fece8d8616620ff299689699b62b277.tar.lz
gsoc2013-evolution-517db3b21fece8d8616620ff299689699b62b277.tar.xz
gsoc2013-evolution-517db3b21fece8d8616620ff299689699b62b277.tar.zst
gsoc2013-evolution-517db3b21fece8d8616620ff299689699b62b277.zip
Add a new argument, clean, that says whether or not to try to disconnect
* camel-service.c (service_disconnect): Add a new argument, clean, that says whether or not to try to disconnect cleanly. * camel-remote-store.c (remote_send_string, remote_send_stream, remote_recv_line): disconnect uncleanly on failure to prevent infinite loops when providers would normally send commands from disconnect(). Remove some unneeded CamelException goo. * providers/smtp/camel-smtp-transport.c (smtp_disconnect): * providers/pop3/camel-pop3-store.c (pop3_disconnect): * providers/nntp/camel-nntp-store.c (nntp_store_disconnect): * providers/imap/camel-imap-store.c (imap_disconnect): Don't send QUIT/LOGOUT if !clean. svn path=/trunk/; revision=6303
Diffstat (limited to 'camel/providers/pop3/camel-pop3-store.c')
-rw-r--r--camel/providers/pop3/camel-pop3-store.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c
index 4932974c16..67d32da796 100644
--- a/camel/providers/pop3/camel-pop3-store.c
+++ b/camel/providers/pop3/camel-pop3-store.c
@@ -69,7 +69,7 @@ static CamelRemoteStoreClass *parent_class = NULL;
static void finalize (CamelObject *object);
static gboolean pop3_connect (CamelService *service, CamelException *ex);
-static gboolean pop3_disconnect (CamelService *service, CamelException *ex);
+static gboolean pop3_disconnect (CamelService *service, gboolean clean, CamelException *ex);
static GList *query_auth_types_connected (CamelService *service, CamelException *ex);
static GList *query_auth_types_generic (CamelService *service, CamelException *ex);
@@ -308,7 +308,7 @@ query_auth_types_connected (CamelService *service, CamelException *ex)
/* should we check apop too? */
apop = store->apop_timestamp != NULL;
if (passwd)
- camel_service_disconnect (service, ex);
+ camel_service_disconnect (service, TRUE, ex);
camel_exception_clear (ex);
#ifdef HAVE_KRB4
@@ -321,7 +321,7 @@ query_auth_types_connected (CamelService *service, CamelException *ex)
/*return NULL;*/
if (kpop)
- camel_service_disconnect (service, ex);
+ camel_service_disconnect (service, TRUE, ex);
camel_exception_clear (ex);
#endif
@@ -526,13 +526,14 @@ pop3_connect (CamelService *service, CamelException *ex)
}
static gboolean
-pop3_disconnect (CamelService *service, CamelException *ex)
+pop3_disconnect (CamelService *service, gboolean clean, CamelException *ex)
{
CamelPop3Store *store = CAMEL_POP3_STORE (service);
- camel_pop3_command (store, NULL, ex, "QUIT");
+ if (clean)
+ camel_pop3_command (store, NULL, ex, "QUIT");
- if (!CAMEL_SERVICE_CLASS (parent_class)->disconnect (service, ex))
+ if (!CAMEL_SERVICE_CLASS (parent_class)->disconnect (service, clean, ex))
return FALSE;
return TRUE;