comparison src/protocols/jabber/auth.c @ 13806:25e63008d3bb

[gaim-migrate @ 16229] Use libxml2 for XML parsing, if available. The biggest benefit from this is actual support for XML namespaces. This fixes a handful of Google Talk integration problems, including typing notifications and buddy icons. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Thu, 08 Jun 2006 01:03:51 +0000
parents 0c4db52c6a3d
children b1ce2e9e494a
comparison
equal deleted inserted replaced
13805:853fefb07c79 13806:25e63008d3bb
65 xmlnode *auth; 65 xmlnode *auth;
66 GString *response; 66 GString *response;
67 gchar *enc_out; 67 gchar *enc_out;
68 68
69 auth = xmlnode_new("auth"); 69 auth = xmlnode_new("auth");
70 xmlnode_set_attrib(auth, "xmlns", "urn:ietf:params:xml:ns:xmpp-sasl"); 70 xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl");
71 71
72 response = g_string_new(""); 72 response = g_string_new("");
73 response = g_string_append_len(response, "\0", 1); 73 response = g_string_append_len(response, "\0", 1);
74 response = g_string_append(response, js->user->node); 74 response = g_string_append(response, js->user->node);
75 response = g_string_append_len(response, "\0", 1); 75 response = g_string_append_len(response, "\0", 1);
267 } 267 }
268 } while (again); 268 } while (again);
269 269
270 if (js->sasl_state == SASL_CONTINUE || js->sasl_state == SASL_OK) { 270 if (js->sasl_state == SASL_CONTINUE || js->sasl_state == SASL_OK) {
271 auth = xmlnode_new("auth"); 271 auth = xmlnode_new("auth");
272 xmlnode_set_attrib(auth, "xmlns", "urn:ietf:params:xml:ns:xmpp-sasl"); 272 xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl");
273 xmlnode_set_attrib(auth,"mechanism", mech); 273 xmlnode_set_attrib(auth,"mechanism", mech);
274 if (clientout) { 274 if (clientout) {
275 if (coutlen == 0) { 275 if (coutlen == 0) {
276 xmlnode_insert_data(auth, "=", -1); 276 xmlnode_insert_data(auth, "=", -1);
277 } else { 277 } else {
384 if(digest_md5) { 384 if(digest_md5) {
385 xmlnode *auth; 385 xmlnode *auth;
386 386
387 js->auth_type = JABBER_AUTH_DIGEST_MD5; 387 js->auth_type = JABBER_AUTH_DIGEST_MD5;
388 auth = xmlnode_new("auth"); 388 auth = xmlnode_new("auth");
389 xmlnode_set_attrib(auth, "xmlns", "urn:ietf:params:xml:ns:xmpp-sasl"); 389 xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl");
390 xmlnode_set_attrib(auth, "mechanism", "DIGEST-MD5"); 390 xmlnode_set_attrib(auth, "mechanism", "DIGEST-MD5");
391 391
392 jabber_send(js, auth); 392 jabber_send(js, auth);
393 xmlnode_free(auth); 393 xmlnode_free(auth);
394 } else if(plain) { 394 } else if(plain) {
718 gaim_debug_error("jabber", "Error is %d : %s\n",js->sasl_state,sasl_errdetail(js->sasl)); 718 gaim_debug_error("jabber", "Error is %d : %s\n",js->sasl_state,sasl_errdetail(js->sasl));
719 gaim_connection_error(js->gc, _("SASL error")); 719 gaim_connection_error(js->gc, _("SASL error"));
720 return; 720 return;
721 } else { 721 } else {
722 response = xmlnode_new("response"); 722 response = xmlnode_new("response");
723 xmlnode_set_attrib(response, "xmlns", "urn:ietf:params:xml:ns:xmpp-sasl"); 723 xmlnode_set_namespace(response, "urn:ietf:params:xml:ns:xmpp-sasl");
724 if (c_out) { 724 if (c_out) {
725 enc_out = gaim_base64_encode((unsigned char*)c_out, clen); 725 enc_out = gaim_base64_encode((unsigned char*)c_out, clen);
726 xmlnode_insert_data(response, enc_out, -1); 726 xmlnode_insert_data(response, enc_out, -1);
727 g_free(enc_out); 727 g_free(enc_out);
728 } 728 }
733 #endif 733 #endif
734 } 734 }
735 735
736 void jabber_auth_handle_success(JabberStream *js, xmlnode *packet) 736 void jabber_auth_handle_success(JabberStream *js, xmlnode *packet)
737 { 737 {
738 const char *ns = xmlnode_get_attrib(packet, "xmlns"); 738 const char *ns = xmlnode_get_namespace(packet);
739 #ifdef HAVE_CYRUS_SASL 739 #ifdef HAVE_CYRUS_SASL
740 int *x; 740 int *x;
741 #endif 741 #endif
742 742
743 if(!ns || strcmp(ns, "urn:ietf:params:xml:ns:xmpp-sasl")) { 743 if(!ns || strcmp(ns, "urn:ietf:params:xml:ns:xmpp-sasl")) {