# HG changeset patch # User Daniel Atallah # Date 1195441841 0 # Node ID 948e5c7a558fff25419b570cde83ce98bc5e7816 # Parent 8fcd795f627ef91cbecdf97987de71ac328206b3# Parent 055e1abac7cf462c0b9928abf381a2f1808bc6b4 merge of '28981c935948f2d4e944f786a01e16ecadfd4848' and 'd5a86b73860f0521df192aa72f0c8947f1ad1b38' diff -r 055e1abac7cf -r 948e5c7a558f libpurple/protocols/msn/soap2.c --- a/libpurple/protocols/msn/soap2.c Mon Nov 19 00:40:33 2007 +0000 +++ b/libpurple/protocols/msn/soap2.c Mon Nov 19 03:10:41 2007 +0000 @@ -208,45 +208,44 @@ msn_soap_handle_body(MsnSoapConnection *conn, MsnSoapMessage *response) { xmlnode *body = xmlnode_get_child(response->xml, "Body"); - - if (body) { - MsnSoapRequest *request; + xmlnode *fault = xmlnode_get_child(response->xml, "Fault"); - if (strcmp(body->name, "Fault") == 0) { - xmlnode *fault = xmlnode_get_child(body, "faultcode"); + if (fault) { + xmlnode *faultcode = xmlnode_get_child(fault, "faultcode"); - if (fault != NULL) { - char *faultdata = xmlnode_get_data(fault); - - if (strcmp(faultdata, "psf:Redirect") == 0) { - xmlnode *url = xmlnode_get_child(body, "redirectUrl"); + if (faultcode != NULL) { + char *faultdata = xmlnode_get_data(faultcode); - if (url) { - char *urldata = xmlnode_get_data(url); - msn_soap_handle_redirect(conn, urldata); - g_free(urldata); - } + if (g_str_equal(faultdata, "psf:Redirect")) { + xmlnode *url = xmlnode_get_child(body, "redirectUrl"); - g_free(faultdata); - return TRUE; - } else if (strcmp(faultdata, "wsse:FailedAuthentication") == 0) { - xmlnode *reason = xmlnode_get_child(body, "faultstring"); - char *reasondata = xmlnode_get_data(reason); - - msn_soap_connection_sanitize(conn, TRUE); - msn_session_set_error(conn->session, MSN_ERROR_AUTH, - reasondata); - - g_free(reasondata); - g_free(faultdata); - return FALSE; + if (url) { + char *urldata = xmlnode_get_data(url); + msn_soap_handle_redirect(conn, urldata); + g_free(urldata); } g_free(faultdata); + return TRUE; + } else if (g_str_equal(faultdata, "wsse:FailedAuthentication")) { + xmlnode *reason = xmlnode_get_child(body, "faultstring"); + char *reasondata = xmlnode_get_data(reason); + + msn_soap_connection_sanitize(conn, TRUE); + msn_session_set_error(conn->session, MSN_ERROR_AUTH, + reasondata); + + g_free(reasondata); + g_free(faultdata); + return FALSE; } + + g_free(faultdata); } + } - request = conn->current_request; + if (fault || body) { + MsnSoapRequest *request = conn->current_request; conn->current_request = NULL; request->cb(request->message, response, request->cb_data);