aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers')
-rw-r--r--camel/providers/imap/camel-imap-store.c25
-rw-r--r--camel/providers/nntp/camel-nntp-store.c4
-rw-r--r--camel/providers/pop3/camel-pop3-store.c88
-rw-r--r--camel/providers/sendmail/camel-sendmail-transport.c52
-rw-r--r--camel/providers/smtp/camel-smtp-transport.c28
5 files changed, 104 insertions, 93 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index f36d5fa797..cd46d56226 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -59,7 +59,7 @@ static CamelRemoteStoreClass *remote_store_class = NULL;
static gboolean imap_connect (CamelService *service, CamelException *ex);
static gboolean imap_disconnect (CamelService *service, gboolean clean, CamelException *ex);
-static GList *query_auth_types (CamelService *service, CamelException *ex);
+static GList *query_auth_types (CamelService *service, gboolean connect, CamelException *ex);
static CamelFolder *get_folder (CamelStore *store, const char *folder_name, guint32 flags, CamelException *ex);
static char *get_folder_name (CamelStore *store, const char *folder_name,
CamelException *ex);
@@ -268,19 +268,26 @@ static CamelServiceAuthType kerberos_v4_authtype = {
#endif
static GList *
-query_auth_types (CamelService *service, CamelException *ex)
+query_auth_types (CamelService *service, gboolean connect, CamelException *ex)
{
GList *types;
-
- if (!connect_to_server (service, ex))
- return NULL;
-
- types = CAMEL_SERVICE_CLASS (remote_store_class)->query_auth_types (service, ex);
+
+ types = CAMEL_SERVICE_CLASS (remote_store_class)->query_auth_types (service, connect, ex);
+
+ if (connect) {
+ if (!connect_to_server (service, ex))
+ return NULL;
+#ifdef HAVE_KRB4
+ if (CAMEL_IMAP_STORE (service)->capabilities &
+ IMAP_CAPABILITY_AUTH_KERBEROS_V4)
+ types = g_list_prepend (types, &kerberos_v4_authtype);
+#endif
+ } else {
#ifdef HAVE_KRB4
- if (CAMEL_IMAP_STORE (service)->capabilities &
- IMAP_CAPABILITY_AUTH_KERBEROS_V4)
types = g_list_prepend (types, &kerberos_v4_authtype);
#endif
+ }
+
return g_list_prepend (types, &password_authtype);
}
diff --git a/camel/providers/nntp/camel-nntp-store.c b/camel/providers/nntp/camel-nntp-store.c
index 21de4fbdb1..8edf05e099 100644
--- a/camel/providers/nntp/camel-nntp-store.c
+++ b/camel/providers/nntp/camel-nntp-store.c
@@ -300,12 +300,12 @@ static CamelServiceAuthType password_authtype = {
};
static GList *
-nntp_store_query_auth_types (CamelService *service, CamelException *ex)
+nntp_store_query_auth_types (CamelService *service, gboolean connect, CamelException *ex)
{
GList *prev;
g_warning ("nntp::query_auth_types: not implemented. Defaulting.");
- prev = CAMEL_SERVICE_CLASS (remote_store_class)->query_auth_types (service, ex);
+ prev = CAMEL_SERVICE_CLASS (remote_store_class)->query_auth_types (service, connect, ex);
return g_list_prepend (prev, &password_authtype);
}
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c
index be59964b74..aefabebfa4 100644
--- a/camel/providers/pop3/camel-pop3-store.c
+++ b/camel/providers/pop3/camel-pop3-store.c
@@ -70,7 +70,7 @@ static void finalize (CamelObject *object);
static gboolean pop3_connect (CamelService *service, CamelException *ex);
static gboolean pop3_disconnect (CamelService *service, gboolean clean, CamelException *ex);
-static GList *query_auth_types (CamelService *service, CamelException *ex);
+static GList *query_auth_types (CamelService *service, gboolean connect, CamelException *ex);
static CamelFolder *get_folder (CamelStore *store, const char *folder_name,
guint32 flags, CamelException *ex);
@@ -284,59 +284,63 @@ connect_to_server (CamelService *service, /*gboolean real, */CamelException *ex)
}
static GList *
-query_auth_types (CamelService *service, CamelException *ex)
+query_auth_types (CamelService *service, gboolean connect, CamelException *ex)
{
CamelPop3Store *store = CAMEL_POP3_STORE (service);
- GList *ret = NULL;
+ GList *types = NULL;
gboolean passwd = TRUE, apop = TRUE;
#ifdef HAVE_KRB4
gboolean kpop = TRUE;
int saved_port;
#endif
-
- ret = CAMEL_SERVICE_CLASS (parent_class)->query_auth_types (service, ex);
-
- passwd = camel_service_connect (service, ex);
- /*ignore the exception here; the server may just not support passwd */
- /*if (camel_exception_is_set (ex) != CAMEL_EXCEPTION_NONE)*/
- /*return NULL;*/
- /* should we check apop too? */
- apop = store->apop_timestamp != NULL;
- if (passwd)
- camel_service_disconnect (service, TRUE, ex);
- camel_exception_clear (ex);
-
+ types = CAMEL_SERVICE_CLASS (parent_class)->query_auth_types (service, connect, ex);
+
+ if (connect) {
+ passwd = camel_service_connect (service, ex);
+ /*ignore the exception here; the server may just not support passwd */
+
+ /* should we check apop too? */
+ apop = store->apop_timestamp != NULL;
+ if (passwd)
+ camel_service_disconnect (service, TRUE, ex);
+ camel_exception_clear (ex);
+
#ifdef HAVE_KRB4
- saved_port = service->url->port;
- service->url->port = KPOP_PORT;
- kpop = camel_service_connect (service, ex);
- service->url->port = saved_port;
- /*ignore the exception here; the server may just not support kpop */
- /*if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE)*/
- /*return NULL;*/
-
- if (kpop)
- camel_service_disconnect (service, TRUE, ex);
- camel_exception_clear (ex);
+ saved_port = service->url->port;
+ service->url->port = KPOP_PORT;
+ kpop = camel_service_connect (service, ex);
+ service->url->port = saved_port;
+ /*ignore the exception here; the server may just not support kpop */
+
+ if (kpop)
+ camel_service_disconnect (service, TRUE, ex);
+ camel_exception_clear (ex);
#endif
-
- if (passwd)
- ret = g_list_append (ret, &password_authtype);
- if (apop)
- ret = g_list_append (ret, &apop_authtype);
+
+ if (passwd)
+ types = g_list_append (types, &password_authtype);
+ if (apop)
+ types = g_list_append (types, &apop_authtype);
#ifdef HAVE_KRB4
- if (kpop)
- ret = g_list_append (ret, &kpop_authtype);
+ if (kpop)
+ types = g_list_append (types, &kpop_authtype);
#endif
-
- if (!ret) {
- camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
- _("Could not connect to POP server on "
- "%s."), service->url->host);
- }
-
- return ret;
+
+ if (!types) {
+ camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
+ _("Could not connect to POP server on "
+ "%s."), service->url->host);
+ }
+ } else {
+ types = g_list_append (types, &password_authtype);
+ types = g_list_append (types, &apop_authtype);
+#ifdef HAVE_KRB4
+ types = g_list_append (types, &kpop_authtype);
+#endif
+ }
+
+ return types;
}
/**
diff --git a/camel/providers/sendmail/camel-sendmail-transport.c b/camel/providers/sendmail/camel-sendmail-transport.c
index 137c1d32a9..d76edfeca9 100644
--- a/camel/providers/sendmail/camel-sendmail-transport.c
+++ b/camel/providers/sendmail/camel-sendmail-transport.c
@@ -3,8 +3,7 @@
/*
*
- * Author :
- * Dan Winship <danw@helixcode.com>
+ * Authors: Dan Winship <danw@helixcode.com>
*
* Copyright 2000 Helix Code, Inc. (http://www.helixcode.com)
*
@@ -41,11 +40,11 @@
static char *get_name (CamelService *service, gboolean brief);
-static gboolean _can_send (CamelTransport *transport, CamelMedium *message);
-static gboolean _send (CamelTransport *transport, CamelMedium *message,
- CamelException *ex);
-static gboolean _send_to (CamelTransport *transport, CamelMedium *message,
- GList *recipients, CamelException *ex);
+static gboolean sendmail_can_send (CamelTransport *transport, CamelMedium *message);
+static gboolean sendmail_send (CamelTransport *transport, CamelMedium *message,
+ CamelException *ex);
+static gboolean sendmail_send_to (CamelTransport *transport, CamelMedium *message,
+ GList *recipients, CamelException *ex);
static void
@@ -59,9 +58,9 @@ camel_sendmail_transport_class_init (CamelSendmailTransportClass *camel_sendmail
/* virtual method overload */
camel_service_class->get_name = get_name;
- camel_transport_class->can_send = _can_send;
- camel_transport_class->send = _send;
- camel_transport_class->send_to = _send_to;
+ camel_transport_class->can_send = sendmail_can_send;
+ camel_transport_class->send = sendmail_send;
+ camel_transport_class->send_to = sendmail_send_to;
}
CamelType
@@ -70,13 +69,14 @@ camel_sendmail_transport_get_type (void)
static CamelType camel_sendmail_transport_type = CAMEL_INVALID_TYPE;
if (camel_sendmail_transport_type == CAMEL_INVALID_TYPE) {
- camel_sendmail_transport_type = camel_type_register (CAMEL_TRANSPORT_TYPE, "CamelSendmailTransport",
- sizeof (CamelSendmailTransport),
- sizeof (CamelSendmailTransportClass),
- (CamelObjectClassInitFunc) camel_sendmail_transport_class_init,
- NULL,
- (CamelObjectInitFunc) NULL,
- NULL);
+ camel_sendmail_transport_type =
+ camel_type_register (CAMEL_TRANSPORT_TYPE, "CamelSendmailTransport",
+ sizeof (CamelSendmailTransport),
+ sizeof (CamelSendmailTransportClass),
+ (CamelObjectClassInitFunc) camel_sendmail_transport_class_init,
+ NULL,
+ (CamelObjectInitFunc) NULL,
+ NULL);
}
return camel_sendmail_transport_type;
@@ -84,14 +84,14 @@ camel_sendmail_transport_get_type (void)
static gboolean
-_can_send (CamelTransport *transport, CamelMedium *message)
+sendmail_can_send (CamelTransport *transport, CamelMedium *message)
{
return CAMEL_IS_MIME_MESSAGE (message);
}
static gboolean
-_send_internal (CamelMedium *message, char **argv, CamelException *ex)
+sendmail_send_internal (CamelMedium *message, char **argv, CamelException *ex)
{
int fd[2], nullfd, wstat;
sigset_t mask, omask;
@@ -181,8 +181,8 @@ _send_internal (CamelMedium *message, char **argv, CamelException *ex)
}
static gboolean
-_send_to (CamelTransport *transport, CamelMedium *message,
- GList *recipients, CamelException *ex)
+sendmail_send_to (CamelTransport *transport, CamelMedium *message,
+ GList *recipients, CamelException *ex)
{
GList *r;
char **argv;
@@ -198,19 +198,19 @@ _send_to (CamelTransport *transport, CamelMedium *message,
for (i = 1, r = recipients; i <= len; i++, r = r->next)
argv[i + 2] = r->data;
argv[i + 2] = NULL;
-
- status = _send_internal (message, argv, ex);
+
+ status = sendmail_send_internal (message, argv, ex);
g_free (argv);
return status;
}
static gboolean
-_send (CamelTransport *transport, CamelMedium *message,
+sendmail_send (CamelTransport *transport, CamelMedium *message,
CamelException *ex)
{
char *argv[4] = { "sendmail", "-t", "-i", NULL };
-
- return _send_internal (message, argv, ex);
+
+ return sendmail_send_internal (message, argv, ex);
}
static char *
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
index b879eb75fc..1d7b4e5622 100644
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ b/camel/providers/smtp/camel-smtp-transport.c
@@ -56,15 +56,15 @@
#define SMTP_PORT 25
/* camel smtp transport class prototypes */
-static gboolean _can_send (CamelTransport *transport, CamelMedium *message);
-static gboolean _send (CamelTransport *transport, CamelMedium *message, CamelException *ex);
-static gboolean _send_to (CamelTransport *transport, CamelMedium *message, GList *recipients, CamelException *ex);
+static gboolean smtp_can_send (CamelTransport *transport, CamelMedium *message);
+static gboolean smtp_send (CamelTransport *transport, CamelMedium *message, CamelException *ex);
+static gboolean smtp_send_to (CamelTransport *transport, CamelMedium *message, GList *recipients, CamelException *ex);
/* support prototypes */
static gboolean smtp_connect (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 (CamelService *service, CamelException *ex);
+static GList *esmtp_get_authtypes (gchar *buffer);
+static GList *query_auth_types (CamelService *service, gboolean connect, CamelException *ex);
static void free_auth_types (CamelService *service, GList *authtypes);
static char *get_name (CamelService *service, gboolean brief);
@@ -97,9 +97,9 @@ camel_smtp_transport_class_init (CamelSmtpTransportClass *camel_smtp_transport_c
camel_service_class->free_auth_types = free_auth_types;
camel_service_class->get_name = get_name;
- camel_transport_class->can_send = _can_send;
- camel_transport_class->send = _send;
- camel_transport_class->send_to = _send_to;
+ camel_transport_class->can_send = smtp_can_send;
+ camel_transport_class->send = smtp_send;
+ camel_transport_class->send_to = smtp_send_to;
}
static void
@@ -356,7 +356,7 @@ static CamelServiceAuthType cram_md5_authtype = {
#endif
static GList *
-query_auth_types (CamelService *service, CamelException *ex)
+query_auth_types (CamelService *service, gboolean connect, CamelException *ex)
{
/* FIXME: Re-enable this when auth types are actually
* implemented.
@@ -383,14 +383,14 @@ get_name (CamelService *service, gboolean brief)
}
static gboolean
-_can_send (CamelTransport *transport, CamelMedium *message)
+smtp_can_send (CamelTransport *transport, CamelMedium *message)
{
return CAMEL_IS_MIME_MESSAGE (message);
}
static gboolean
-_send_to (CamelTransport *transport, CamelMedium *message,
- GList *recipients, CamelException *ex)
+smtp_send_to (CamelTransport *transport, CamelMedium *message,
+ GList *recipients, CamelException *ex)
{
CamelSmtpTransport *smtp_transport = CAMEL_SMTP_TRANSPORT (transport);
const CamelInternetAddress *cia;
@@ -450,7 +450,7 @@ _send_to (CamelTransport *transport, CamelMedium *message,
}
static gboolean
-_send (CamelTransport *transport, CamelMedium *message, CamelException *ex)
+smtp_send (CamelTransport *transport, CamelMedium *message, CamelException *ex)
{
const CamelInternetAddress *to, *cc, *bcc;
GList *recipients = NULL;
@@ -487,7 +487,7 @@ _send (CamelTransport *transport, CamelMedium *message, CamelException *ex)
recipients = g_list_append (recipients, g_strdup (addr));
}
- return _send_to (transport, message, recipients, ex);
+ return smtp_send_to (transport, message, recipients, ex);
}
static gboolean