From 517db3b21fece8d8616620ff299689699b62b277 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 31 Oct 2000 23:44:46 +0000 Subject: 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 --- camel/providers/smtp/camel-smtp-transport.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'camel/providers/smtp/camel-smtp-transport.c') diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c index 91693bd1f7..62cd0b7525 100644 --- a/camel/providers/smtp/camel-smtp-transport.c +++ b/camel/providers/smtp/camel-smtp-transport.c @@ -61,7 +61,7 @@ static gboolean _send_to (CamelTransport *transport, CamelMedium *message, GList /* support prototypes */ static gboolean smtp_connect (CamelService *service, CamelException *ex); -static gboolean smtp_disconnect (CamelService *service, CamelException *ex); +static gboolean smtp_disconnect (CamelService *service, gboolean clean, CamelException *ex); static GList *esmtp_get_authtypes(gchar *buffer); static GList *query_auth_types_connected (CamelService *service, CamelException *ex); static GList *query_auth_types_generic (CamelService *service, CamelException *ex); @@ -230,18 +230,20 @@ smtp_connect (CamelService *service, CamelException *ex) } static gboolean -smtp_disconnect (CamelService *service, CamelException *ex) +smtp_disconnect (CamelService *service, gboolean clean, CamelException *ex) { CamelSmtpTransport *transport = CAMEL_SMTP_TRANSPORT (service); /*if (!service->connected) * return TRUE; */ + + if (clean) { + /* send the QUIT command to the SMTP server */ + smtp_quit (transport, ex); + } - /* send the QUIT command to the SMTP server */ - smtp_quit (transport, ex); - - if (!service_class->disconnect (service, ex)) + if (!service_class->disconnect (service, clean, ex)) return FALSE; g_free (transport->esmtp_supported_authtypes); -- cgit v1.2.3