Mercurial > pidgin
diff libpurple/protocols/jabber/auth.c @ 27590:a08e84032814
merge of '2348ff22f0ff3453774b8b25b36238465580c609'
and 'e76f11543c2a4aa05bdf584f087cbe3439029661'
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 12 Jul 2009 05:43:38 +0000 |
parents | f541583e31bd |
children | c585572e80dd |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/auth.c Sun Jul 12 05:42:40 2009 +0000 +++ b/libpurple/protocols/jabber/auth.c Sun Jul 12 05:43:38 2009 +0000 @@ -52,14 +52,14 @@ "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1); return TRUE; } else if(xmlnode_get_child(starttls, "required")) { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, - _("Server requires TLS/SSL for login. No TLS/SSL support found.")); + _("Server requires TLS/SSL, but no TLS/SSL support was found.")); return TRUE; } else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE)) { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, - _("You require encryption, but no TLS/SSL support found.")); + _("You require encryption, but no TLS/SSL support was found.")); return TRUE; } } @@ -122,7 +122,7 @@ static void disallow_plaintext_auth(PurpleAccount *account) { - purple_connection_error_reason (account->gc, + purple_connection_error_reason(account->gc, PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR, _("Server requires plaintext authentication over an unencrypted stream")); } @@ -415,9 +415,9 @@ jabber_send(js, auth); xmlnode_free(auth); } else { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE, - "SASL authentication failed\n"); + _("SASL authentication failed")); } } @@ -490,9 +490,9 @@ mechs = xmlnode_get_child(packet, "mechanisms"); if(!mechs) { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Invalid response from server.")); + _("Invalid response from server")); return; } @@ -561,7 +561,7 @@ } finish_plaintext_authentication(js); } else { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE, _("Server does not use any supported authentication method")); } @@ -590,7 +590,7 @@ purple_account_set_password(js->gc->account, NULL); } - purple_connection_error_reason (js->gc, reason, msg); + purple_connection_error_reason(js->gc, reason, msg); g_free(msg); } } @@ -606,7 +606,7 @@ if (type == JABBER_IQ_ERROR) { PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; char *msg = jabber_parse_error(js, packet, &reason); - purple_connection_error_reason (js->gc, reason, msg); + purple_connection_error_reason(js->gc, reason, msg); g_free(msg); } else if (type == JABBER_IQ_RESULT) { query = xmlnode_get_child(packet, "query"); @@ -676,7 +676,7 @@ } finish_plaintext_authentication(js); } else { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE, _("Server does not use any supported authentication method")); return; @@ -695,7 +695,7 @@ */ if (!jabber_stream_is_ssl(js) && purple_account_get_bool(purple_connection_get_account(js->gc), "require_tls", FALSE)) { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR, _("You require encryption, but it is not available on this server.")); return; @@ -856,9 +856,9 @@ GHashTable *parts; if(!enc_in) { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Invalid response from server.")); + _("Invalid response from server")); return; } @@ -879,7 +879,7 @@ "<response xmlns='urn:ietf:params:xml:ns:xmpp-sasl' />", -1); } else { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("Invalid challenge from server")); } @@ -905,7 +905,7 @@ realm = js->user->domain; if (nonce == NULL || realm == NULL) - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("Invalid challenge from server")); else { @@ -980,22 +980,29 @@ g_free(enc_in); g_free(dec_in); if (js->sasl_state != SASL_CONTINUE && js->sasl_state != SASL_OK) { - purple_debug_error("jabber", "Error is %d : %s\n",js->sasl_state,sasl_errdetail(js->sasl)); - purple_connection_error_reason (js->gc, - PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("SASL error")); + gchar *tmp = g_strdup_printf(_("SASL error: %s"), + sasl_errdetail(js->sasl)); + purple_debug_error("jabber", "Error is %d : %s\n", + js->sasl_state, sasl_errdetail(js->sasl)); + purple_connection_error_reason(js->gc, + PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); + g_free(tmp); return; } else { response = xmlnode_new("response"); xmlnode_set_namespace(response, "urn:ietf:params:xml:ns:xmpp-sasl"); if (clen > 0) { /* Cyrus SASL 2.1.22 appears to contain code to add the charset - * to the response but there is no possibility it will be executed. + * to the response for DIGEST-MD5 but there is no possibility + * it will be executed. + * * My reading of the digestmd5 plugin indicates the username and * realm are always encoded in UTF-8 (they seem to be the values * we pass in), so we need to ensure charset=utf-8 is set. */ - if (strstr(c_out, ",charset=")) + if (!js->current_mech || !g_str_equal(js->current_mech, "DIGEST-MD5") || + strstr(c_out, ",charset=")) + /* If we're not using DIGEST-MD5 or Cyrus SASL is fixed */ enc_out = purple_base64_encode((unsigned char*)c_out, clen); else { char *tmp = g_strdup_printf("%s,charset=utf-8", c_out); @@ -1021,9 +1028,9 @@ #endif if(!ns || strcmp(ns, "urn:ietf:params:xml:ns:xmpp-sasl")) { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Invalid response from server.")); + _("Invalid response from server")); return; } @@ -1048,9 +1055,9 @@ if (js->sasl_state != SASL_OK) { /* This should never happen! */ - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Invalid response from server.")); + _("Invalid response from server")); } } /* If we've negotiated a security layer, we need to enable it */ @@ -1094,11 +1101,11 @@ #endif msg = jabber_parse_error(js, packet, &reason); if(!msg) { - purple_connection_error_reason (js->gc, + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Invalid response from server.")); + _("Invalid response from server")); } else { - purple_connection_error_reason (js->gc, reason, msg); + purple_connection_error_reason(js->gc, reason, msg); g_free(msg); } }