Re: Slightly better error codes
- From: Murray Cumming <murrayc murrayc com>
- To: Philip Van Hoof <spam pvanhoof be>
- Cc: tinymail-devel-list <tinymail-devel-list gnome org>
- Subject: Re: Slightly better error codes
- Date: Fri, 06 Jul 2007 19:57:54 +0200
On Fri, 2007-07-06 at 15:47 +0200, Philip Van Hoof wrote:
> *. Please update tny-enums.h too, else gtk-doc wont show the new enums
>
> *. There are GType's for the enums that also need to be updated, else
> (future) bindings wont recognise those enums: tny_error_get_type in
> tny-error.c
>
>
> On Fri, 2007-07-06 at 15:29 +0200, Murray Cumming wrote:
> > This patch allows TnyAccountStore::alert_func to get some more exact
> > error codes so that the application doesn't have to just show the
> > internal error text to the user. It doesn't handle everything, but it's
> > a start.
Here is another one. It still doesn't provider meaningful error codes
for everything, but this makes it much easier to add them when we find
we really need them later.
--
Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com
Index: libtinymail-camel/camel-lite/camel/providers/smtp/camel-smtp-transport.c
===================================================================
--- libtinymail-camel/camel-lite/camel/providers/smtp/camel-smtp-transport.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/providers/smtp/camel-smtp-transport.c (working copy)
@@ -506,7 +506,7 @@
service->url->host, service->url->authmech);
camel_session_alert_user (session, CAMEL_SESSION_ALERT_ERROR,
- camel_exception_get_description (ex), FALSE);
+ ex, FALSE);
camel_service_disconnect (service, TRUE, NULL);
return FALSE;
Index: libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-command.c
===================================================================
--- libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-command.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-command.c (working copy)
@@ -444,7 +444,7 @@
/* we might get a ']' from a BAD response since we +12, but who cares? */
msg = g_strdup_printf(_("Alert from IMAP server %s %s:\n%s"),
((CamelService *)store)->url->user, ((CamelService *)store)->url->host, respbuf+12);
- camel_session_alert_user(((CamelService *)store)->session, CAMEL_SESSION_ALERT_WARNING, msg, FALSE);
+ camel_session_alert_user_generic(((CamelService *)store)->session, CAMEL_SESSION_ALERT_WARNING, msg, FALSE);
g_free(msg);
}
@@ -505,7 +505,7 @@
/* we might get a ']' from a BAD response since we +12, but who cares? */
msg = g_strdup_printf(_("Alert from IMAP server %s %s:\n%s"),
((CamelService *)store)->url->user, ((CamelService *)store)->url->host, respbuf+12);
- camel_session_alert_user(((CamelService *)store)->session, CAMEL_SESSION_ALERT_WARNING, msg, FALSE);
+ camel_session_alert_user_generic(((CamelService *)store)->session, CAMEL_SESSION_ALERT_WARNING, msg, FALSE);
g_free(msg);
} else if (!g_ascii_strncasecmp (respbuf, "* BAD Invalid tag",17))
type = CAMEL_IMAP_RESPONSE_ERROR;
Index: libtinymail-camel/camel-lite/camel/providers/imap4/camel-imap4-summary.c
===================================================================
--- libtinymail-camel/camel-lite/camel/providers/imap4/camel-imap4-summary.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/providers/imap4/camel-imap4-summary.c (working copy)
@@ -751,7 +751,7 @@
"message is simply unreadable by the IMAP server and will need "
"to be given read permissions.", msg);
- camel_session_alert_user (session, CAMEL_SESSION_ALERT_WARNING, warning, FALSE);
+ camel_session_alert_user_generic (session, CAMEL_SESSION_ALERT_WARNING, warning, FALSE);
g_free (warning);
}
Index: libtinymail-camel/camel-lite/camel/providers/imap4/camel-imap4-engine.c
===================================================================
--- libtinymail-camel/camel-lite/camel/providers/imap4/camel-imap4-engine.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/providers/imap4/camel-imap4-engine.c (working copy)
@@ -1030,7 +1030,7 @@
if (camel_imap4_engine_line (engine, &linebuf, &len, ex) == -1)
goto exception;
- camel_session_alert_user (engine->session, CAMEL_SESSION_ALERT_INFO, linebuf, FALSE);
+ camel_session_alert_user_generic (engine->session, CAMEL_SESSION_ALERT_INFO, linebuf, FALSE);
g_free (linebuf);
} else if (resp != NULL && code == CAMEL_IMAP4_RESP_CODE_PARSE) {
if (camel_imap4_engine_line (engine, &linebuf, &len, ex) == -1)
Index: libtinymail-camel/camel-lite/camel/camel-tcp-stream-openssl.c
===================================================================
--- libtinymail-camel/camel-lite/camel/camel-tcp-stream-openssl.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/camel-tcp-stream-openssl.c (working copy)
@@ -860,7 +860,7 @@
"Do you wish to accept anyway?"),
cert_str, x509_strerror (err));
- ok = camel_session_alert_user (session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE);
+ ok = camel_session_alert_user_with_id (session, CAMEL_SESSION_ALERT_WARNING, CAMEL_EXCEPTION_SERVICE_CERTIFICATE, prompt, TRUE);
g_free (prompt);
if (ok && ccert) {
Index: libtinymail-camel/camel-lite/camel/camel-disco-diary.c
===================================================================
--- libtinymail-camel/camel-lite/camel/camel-disco-diary.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/camel-disco-diary.c (working copy)
@@ -200,7 +200,7 @@
"will not be replayed when you\n"
"reconnect to the network."),
g_strerror (errno));
- camel_session_alert_user (camel_service_get_session (CAMEL_SERVICE (diary->store)),
+ camel_session_alert_user_generic (camel_service_get_session (CAMEL_SERVICE (diary->store)),
CAMEL_SESSION_ALERT_ERROR,
msg, FALSE);
g_free (msg);
@@ -261,7 +261,7 @@
msg = g_strdup_printf (_("Could not open `%s':\n%s\nChanges made to this folder will not be resynchronized."),
name, camel_exception_get_description (&ex));
camel_exception_clear (&ex);
- camel_session_alert_user (camel_service_get_session (CAMEL_SERVICE (diary->store)),
+ camel_session_alert_user_generic (camel_service_get_session (CAMEL_SERVICE (diary->store)),
CAMEL_SESSION_ALERT_WARNING,
msg, FALSE);
g_free (msg);
Index: libtinymail-camel/camel-lite/camel/camel-session.c
===================================================================
--- libtinymail-camel/camel-lite/camel/camel-session.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/camel-session.c (working copy)
@@ -23,7 +23,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
-
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -411,11 +411,11 @@
* camel_session_alert_user:
* @session: a #CamelSession object
* @type: the type of alert (info, warning, or error)
- * @prompt: the message for the user
+ * @ex: A CamelException, indicating a message for the user
* @cancel: whether or not to provide a "Cancel" option in addition to
* an "OK" option.
*
- * Presents the given @prompt to the user, in the style indicated by
+ * Presents an appropriate prompt to the user, in the style indicated by
* @type. If @cancel is %TRUE, the user will be able to accept or
* cancel. Otherwise, the message is purely informational.
*
@@ -423,16 +423,52 @@
*/
gboolean
camel_session_alert_user (CamelSession *session, CamelSessionAlertType type,
- const char *prompt, gboolean cancel)
+ CamelException *ex, gboolean cancel)
{
g_return_val_if_fail (CAMEL_IS_SESSION (session), FALSE);
- g_return_val_if_fail (prompt != NULL, FALSE);
+ g_return_val_if_fail (ex, FALSE);
- return CS_CLASS (session)->alert_user (session, type, prompt, cancel);
+ return CS_CLASS (session)->alert_user (session, type, ex, cancel);
}
+/**
+ * camel_session_alert_user_with_id:
+ *
+ * Like camel_session_alert_user() but constructs and uses a CamelException
+ * with the error ID and the specified message.
+ */
+gboolean
+camel_session_alert_user_with_id (CamelSession *session, CamelSessionAlertType type,
+ ExceptionId id, const gchar* message, gboolean cancel)
+{
+ g_return_val_if_fail (message, FALSE);
+
+ CamelException ex = CAMEL_EXCEPTION_INITIALISER;
+ camel_exception_set (&ex, id, message);
+ gboolean result = camel_session_alert_user (session, type, &ex, cancel);
+ camel_exception_clear (&ex);
+ return result;
+}
+
/**
+ * camel_session_alert_user_generic:
+ *
+ * Like camel_session_alert_user_with_id() but uses a
+ * generic error ID.
+ * camel_session_alert_user()or camel_session_alert_user_with_id() should be
+ * used where possible, to provide a precise error ID.
+ */
+gboolean
+camel_session_alert_user_generic (CamelSession *session, CamelSessionAlertType type,
+ const gchar* message, gboolean cancel)
+{
+ return camel_session_alert_user_with_id (session, type,
+ CAMEL_EXCEPTION_SYSTEM, message, cancel);
+}
+
+
+/**
* camel_session_is_online:
* @session: a #CamelSession object
*
Index: libtinymail-camel/camel-lite/camel/camel-session.h
===================================================================
--- libtinymail-camel/camel-lite/camel/camel-session.h (revision 2419)
+++ libtinymail-camel/camel-lite/camel/camel-session.h (working copy)
@@ -95,7 +95,7 @@
CamelException *ex);
gboolean (*alert_user) (CamelSession *session,
CamelSessionAlertType type,
- const char *prompt,
+ CamelException *ex,
gboolean cancel);
CamelFilterDriver * (*get_filter_driver) (CamelSession *session,
@@ -152,8 +152,17 @@
CamelException *ex);
gboolean camel_session_alert_user (CamelSession *session,
CamelSessionAlertType type,
- const char *prompt,
+ CamelException *ex,
gboolean cancel);
+gboolean camel_session_alert_user_generic (CamelSession *session,
+ CamelSessionAlertType type,
+ const gchar* message,
+ gboolean cancel);
+gboolean camel_session_alert_user_with_id (CamelSession *session,
+ CamelSessionAlertType type,
+ ExceptionId id,
+ const gchar* message,
+ gboolean cancel);
gboolean camel_session_is_online (CamelSession *session);
void camel_session_set_online (CamelSession *session,
Index: libtinymail-camel/camel-lite/camel/camel-exception-list.def
===================================================================
--- libtinymail-camel/camel-lite/camel/camel-exception-list.def (revision 2419)
+++ libtinymail-camel/camel-lite/camel/camel-exception-list.def (working copy)
@@ -10,7 +10,7 @@
/* Generic exceptions */
CAMEL_EXCEPTION_INVALID_PARAM,
CAMEL_EXCEPTION_SYSTEM,
-CAMEL_EXCEPTION_SYSTEM_HOST_LOOKUP_FAILED,
+CAMEL_EXCEPTION_SYSTEM_HOST_LOOKUP_FAILED, /* Couldn't lookup host name in DNS. */
CAMEL_EXCEPTION_USER_CANCEL,
/* CamelFolderException */
@@ -34,5 +34,6 @@
CAMEL_EXCEPTION_SERVICE_INVALID,
CAMEL_EXCEPTION_SERVICE_URL_INVALID,
CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
-CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE,
-CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED
+CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE, /* Authentication method not supported. */
+CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED,
+CAMEL_EXCEPTION_SERVICE_CERTIFICATE, /* Certificate problems. */
Index: libtinymail-camel/camel-lite/camel/camel-tcp-stream-ssl.c
===================================================================
--- libtinymail-camel/camel-lite/camel/camel-tcp-stream-ssl.c (revision 2419)
+++ libtinymail-camel/camel-lite/camel/camel-tcp-stream-ssl.c (working copy)
@@ -1199,7 +1199,7 @@
g_free (cert_str);
/* query the user to find out if we want to accept this certificate */
- accept = camel_session_alert_user (ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE);
+ accept = camel_session_alert_user_with_id (ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, CAMEL_EXCEPTION_SERVICE_CERTIFICATE, prompt, TRUE);
g_free(prompt);
if (accept) {
camel_certdb_nss_cert_set(certdb, ccert, cert);
@@ -1242,7 +1242,7 @@
printf("unknown issuer, adding ... \n");
prompt = g_strdup_printf(_("Certificate problem: %s\nIssuer: %s"), cert->subjectName, cert->issuerName);
- if (camel_session_alert_user(ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE)) {
+ if (camel_session_alert_user_with_id(ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, CAMEL_EXCEPTION_SERVICE_CERTIFICATE, prompt, TRUE)) {
nick = get_nickname(cert);
if (NULL == nick) {
@@ -1294,7 +1294,7 @@
prompt = g_strdup_printf(_("Bad certificate domain: %s\nIssuer: %s"), cert->subjectName, cert->issuerName);
- if (camel_session_alert_user (ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE)) {
+ if (camel_session_alert_user_with_id (ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, CAMEL_EXCEPTION_SERVICE_CERTIFICATE, prompt, TRUE)) {
host = SSL_RevealURL(sockfd);
status = CERT_AddOKDomainName(cert, host);
printf("add ok domain name : %s\n", status == SECFailure?"fail":"ok");
@@ -1312,7 +1312,7 @@
prompt = g_strdup_printf(_("Certificate expired: %s\nIssuer: %s"), cert->subjectName, cert->issuerName);
- if (camel_session_alert_user(ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE)) {
+ if (camel_session_alert_user_with_id(ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, CAMEL_EXCEPTION_SERVICE_CERTIFICATE, prompt, TRUE)) {
cert->timeOK = PR_TRUE;
status = CERT_VerifyCertNow(cert->dbhandle, cert, TRUE, certUsageSSLClient, NULL);
error = PR_GetError();
@@ -1329,7 +1329,7 @@
prompt = g_strdup_printf(_("Certificate revocation list expired: %s\nIssuer: %s"), cert->subjectName, cert->issuerName);
- if (camel_session_alert_user(ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, prompt, TRUE)) {
+ if (camel_session_alert_user_with_id(ssl->priv->session, CAMEL_SESSION_ALERT_WARNING, CAMEL_EXCEPTION_SERVICE_CERTIFICATE, prompt, TRUE)) {
host = SSL_RevealURL(sockfd);
status = CERT_AddOKDomainName(cert, host);
}
Index: libtinymail-camel/camel-lite/ChangeLog
===================================================================
--- libtinymail-camel/camel-lite/ChangeLog (revision 2419)
+++ libtinymail-camel/camel-lite/ChangeLog (working copy)
@@ -1,3 +1,6 @@
+
+
+
Note: Please use this ChangeLog file only for merge changes (from upstream to
this version, and the other way around). Changes to camel-lite that are
related to Tinymail go into ../../ChangeLog
Index: libtinymail-camel/tny-session-camel.c
===================================================================
--- libtinymail-camel/tny-session-camel.c (revision 2419)
+++ libtinymail-camel/tny-session-camel.c (working copy)
@@ -175,14 +175,14 @@
tnytype, question, (const GError *) err);
}
-/* tny_session_camel_alert_user will for example be called when SSL is on and
+/* tny_session_camel_alert_user will for example be called by camel when SSL is on and
camel_session_get_service is issued (for example TnyCamelTransportAccount and
TnyCamelStore account issue this function). Its implementation is often done
with GUI components (it should therefore not be called from a thread). This
is a known issue (and if someone fixes this, please remove this warning) */
static gboolean
-tny_session_camel_alert_user (CamelSession *session, CamelSessionAlertType type, const char *msg, gboolean cancel)
+tny_session_camel_alert_user (CamelSession *session, CamelSessionAlertType type, CamelException *ex, gboolean cancel)
{
TnySessionCamel *self = (TnySessionCamel *)session;
TnySessionCamelPriv *priv = self->priv;
@@ -207,14 +207,13 @@
break;
}
- /* TODO: A string comparison is not a very safe way to do this: */
- if (strstr (msg, "Canceled") != NULL)
+ if (ex->id == CAMEL_EXCEPTION_USER_CANCEL)
g_set_error (&err, TNY_ACCOUNT_STORE_ERROR,
- TNY_ACCOUNT_STORE_ERROR_CANCEL_ALERT, "The connecting got canceled");
+ TNY_ACCOUNT_STORE_ERROR_CANCEL_ALERT, "The connecting was canceled");
else {
- /* TODO: Use a more specific error code, based on a CamelException ID: */
g_set_error (&err, TNY_ACCOUNT_STORE_ERROR,
- TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT, msg);
+ _tny_camel_account_get_tny_error_code_for_camel_exception_id (ex),
+ camel_exception_get_description (ex));
}
tny_lockable_lock (self->priv->ui_lock);
Index: libtinymail-camel/tny-camel-account.c
===================================================================
--- libtinymail-camel/tny-camel-account.c (revision 2419)
+++ libtinymail-camel/tny-camel-account.c (working copy)
@@ -333,6 +333,8 @@
return TNY_ACCOUNT_ERROR_TRY_CONNECT_SERVICE_UNAVAILABLE;
case CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE:
return TNY_ACCOUNT_ERROR_TRY_CONNECT_AUTHENTICATION_NOT_SUPPORTED;
+ case CAMEL_EXCEPTION_SERVICE_CERTIFICATE:
+ return TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE;
case CAMEL_EXCEPTION_SYSTEM:
default:
/* A generic exception.
Index: ChangeLog
===================================================================
--- ChangeLog (revision 2419)
+++ ChangeLog (working copy)
@@ -1,3 +1,44 @@
+2007-07-06 Murray Cumming <murrayc murrayc com>
+
+ * libtinymail/tny-enums.h:
+ * libtinymail/tny-error.h:
+ * libtinymail/tny-error.c: (tny_error_get_type):
+ Added TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE and documented the enum
+ values that I added last time.
+ * libtinymail-camel/tny-camel-account.c:
+ (_tny_camel_account_get_tny_error_code_for_camel_exception_id):
+ Handle CAMEL_EXCEPTION_SERVICE_CERTIFICATE as TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE.
+ * libtinymail-camel/tny-session-camel.c:
+ (tny_session_camel_alert_user): Adapt signature, as follows.
+ Also handle the CAMEL_EXCEPTION_USER_CANCEL error ID instead of checking the message text.
+
+ * camel/camel-exception-list.def: Added CAMEL_EXCEPTION_SERVICE_CERTIFICATE.
+ * camel/camel-session.h:
+ * camel/camel-session.c: (camel_session_alert_user): Take a CamelException
+ instead of a message, so we don't lose the error ID sometimes.
+ (camel_session_alert_user_with_id),
+ (camel_session_alert_user_generic): Convenience functions to use when
+ no CamelException is available.
+
+ * camel/providers/smtp/camel-smtp-transport.c: (smtp_connect):
+ Use the exception instead of just the message with camel_session_alert_user(),
+ so that the application has the error code.
+
+ * camel/camel-disco-diary.c: (camel_disco_diary_log),
+ (diary_decode_folder):
+ * camel/providers/imap/camel-imap-command.c:
+ (camel_imap_command_response), (camel_imap_command_response_idle):
+ * camel/providers/imap4/camel-imap4-engine.c:
+ (camel_imap4_engine_parse_resp_code):
+ * camel/providers/imap4/camel-imap4-summary.c:
+ (courier_imap_is_a_piece_of_shit): Use camel_session_alert_user_generic()
+ instead of camel_session_alert_user(), because we have no ID or exception here.
+
+ * camel/camel-tcp-stream-openssl.c: (ssl_verify):
+ * camel/camel-tcp-stream-ssl.c: (ssl_bad_cert): Use the new
+ CAMEL_EXCEPTION_SERVICE_CERTIFICATE error ID here. There are still many different
+ types of certificate error, but this at least classifies them a bit.
+
2007-07-05 Armin Burgmeier <armin openismus com>
* libtinymail/tny-merge-folder.c: When propagating a TnyFolderChange
Index: libtinymail/tny-error.c
===================================================================
--- libtinymail/tny-error.c (revision 2419)
+++ libtinymail/tny-error.c (working copy)
@@ -82,6 +82,7 @@
{ TNY_ACCOUNT_ERROR_TRY_CONNECT_HOST_LOOKUP_FAILED, "TNY_ACCOUNT_ERROR_TRY_CONNECT_HOST_LOOKUP_FAILED", "account_error_try_connect_host_lookup_failed" },
{ TNY_ACCOUNT_ERROR_TRY_CONNECT_SERVICE_UNAVAILABLE, "TNY_ACCOUNT_ERROR_TRY_CONNECT_SERVICE_UNAVAILABLE", "account_error_try_connect_service_unavailable" },
{ TNY_ACCOUNT_ERROR_TRY_CONNECT_AUTHENTICATION_NOT_SUPPORTED, "TNY_ACCOUNT_ERROR_TRY_CONNECT_AUTHENTICATION_NOT_SUPPORTED", "account_error_try_connect_authentication_not_supported" },
+ { TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE, "TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE", "account_error_try_connect_certificate" },
{ TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT, "TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT", "account_store_error_unknown_alert" },
Index: libtinymail/tny-enums.h
===================================================================
--- libtinymail/tny-enums.h (revision 2419)
+++ libtinymail/tny-enums.h (working copy)
@@ -78,6 +78,7 @@
TNY_ACCOUNT_ERROR_TRY_CONNECT_HOST_LOOKUP_FAILED = 19,
TNY_ACCOUNT_ERROR_TRY_CONNECT_SERVICE_UNAVAILABLE = 20,
TNY_ACCOUNT_ERROR_TRY_CONNECT_AUTHENTICATION_NOT_SUPPORTED = 21,
+ TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE = 22,
TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT = 15,
Index: libtinymail/tny-error.h
===================================================================
--- libtinymail/tny-error.h (revision 2419)
+++ libtinymail/tny-error.h (working copy)
@@ -68,6 +68,21 @@
* even this level of exact detection of the particular error is not currently
* possible, so a generic error dialog should probably be shown, though the
* application could choose to suggest possible causes for the error.
+ *
+ * TNY_ACCOUNT_ERROR_TRY_CONNECT_HOST_LOOKUP_FAILED: The specified host name
+ * cannot be resolved to an IP address. It is probably incorrect.
+ *
+ * TNY_ACCOUNT_ERROR_TRY_CONNECT_SERVICE_UNAVAILABLE: No connection could be
+ * made with the specified server. Maybe the server is not running on the
+ * specified host.
+ *
+ * TNY_ACCOUNT_ERROR_TRY_CONNECT_AUTHENTICATION_NOT_SUPPORTED: The server reported
+ * that it does not support the specified secure authentication method. It might
+ * support a different method instead.
+ *
+ * TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE: There was a problem with an
+ * authentication or connection certificate. For instance, a bad certificate must
+ * be manually accepted.
*
* TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT: This indicates that an unknown error
* has occurred. Depending on the implementation being used, and the server
@@ -97,6 +112,7 @@
TNY_ACCOUNT_ERROR_TRY_CONNECT_HOST_LOOKUP_FAILED = 19,
TNY_ACCOUNT_ERROR_TRY_CONNECT_SERVICE_UNAVAILABLE = 20,
TNY_ACCOUNT_ERROR_TRY_CONNECT_AUTHENTICATION_NOT_SUPPORTED = 21,
+ TNY_ACCOUNT_ERROR_TRY_CONNECT_CERTIFICATE = 22,
TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT = 15,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]