diff options
author | Jeffrey Stedfast <fejj@novell.com> | 2004-06-25 05:49:41 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2004-06-25 05:49:41 +0800 |
commit | 0ef312f45de342d9eb91bda74503497974c39084 (patch) | |
tree | 51c26409cfcfbc0e92d3e0cd626ec97c142245e0 /camel/providers/pop3/camel-pop3-store.c | |
parent | 4110b183b7326182ef014516be7c4a53a8c1bb76 (diff) | |
download | gsoc2013-evolution-0ef312f45de342d9eb91bda74503497974c39084.tar gsoc2013-evolution-0ef312f45de342d9eb91bda74503497974c39084.tar.gz gsoc2013-evolution-0ef312f45de342d9eb91bda74503497974c39084.tar.bz2 gsoc2013-evolution-0ef312f45de342d9eb91bda74503497974c39084.tar.lz gsoc2013-evolution-0ef312f45de342d9eb91bda74503497974c39084.tar.xz gsoc2013-evolution-0ef312f45de342d9eb91bda74503497974c39084.tar.zst gsoc2013-evolution-0ef312f45de342d9eb91bda74503497974c39084.zip |
Error out and set an exception if camel_pop3_engine_new() returns NULL
2004-06-24 Jeffrey Stedfast <fejj@novell.com>
* providers/pop3/camel-pop3-store.c (connect_to_server): Error out
and set an exception if camel_pop3_engine_new() returns NULL
(which it can do now).
* providers/pop3/camel-pop3-engine.c (get_capabilities): No longer
reads the greeting.
(camel_pop3_engine_new): Reads the greeting itself and returns
NULL if an error occurs (like stupid braindamaged piece of shit
POP servers that spew debug prinfs).
svn path=/trunk/; revision=26504
Diffstat (limited to 'camel/providers/pop3/camel-pop3-store.c')
-rw-r--r-- | camel/providers/pop3/camel-pop3-store.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c index 685bf49f3c..96f9295b52 100644 --- a/camel/providers/pop3/camel-pop3-store.c +++ b/camel/providers/pop3/camel-pop3-store.c @@ -195,21 +195,26 @@ connect_to_server (CamelService *service, int ssl_mode, int try_starttls, CamelE _("Could not connect to POP server %s (port %d): %s"), service->url->host, port, g_strerror (errno)); - camel_object_unref (CAMEL_OBJECT (tcp_stream)); + camel_object_unref (tcp_stream); return FALSE; } /* parent class connect initialization */ if (CAMEL_SERVICE_CLASS (parent_class)->connect (service, ex) == FALSE) { - camel_object_unref (CAMEL_OBJECT (tcp_stream)); + camel_object_unref (tcp_stream); return FALSE; } if (camel_url_get_param (service->url, "disable_extensions")) flags |= CAMEL_POP3_ENGINE_DISABLE_EXTENSIONS; - store->engine = camel_pop3_engine_new (tcp_stream, flags); + if (!(store->engine = camel_pop3_engine_new (tcp_stream, flags))) { + camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, + _("Failed to read a valid greeting from POP server %s (port %d)"), + service->url->host, port); + return FALSE; + } #ifdef HAVE_SSL if (store->engine) { @@ -235,7 +240,7 @@ connect_to_server (CamelService *service, int ssl_mode, int try_starttls, CamelE } #endif /* HAVE_SSL */ - camel_object_unref (CAMEL_OBJECT (tcp_stream)); + camel_object_unref (tcp_stream); return store->engine != NULL; @@ -537,6 +542,12 @@ pop3_try_authenticate (CamelService *service, gboolean reprompt, const char *err CAMEL_SERVICE (store)->url->host, errno ? g_strerror (errno) : _("Unknown error")); } + } else if (pcu && pcu->state != CAMEL_POP3_COMMAND_OK) { + camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE, + _("Unable to connect to POP server %s.\n" + "Error sending username: %s"), + CAMEL_SERVICE (store)->url->host, + store->engine->line ? (char *)store->engine->line : _("Unknown error")); } else if (pcp->state != CAMEL_POP3_COMMAND_OK) camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE, _("Unable to connect to POP server %s.\n" |