Mercurial > pidgin.yaz
changeset 21586:948e5c7a558f
merge of '28981c935948f2d4e944f786a01e16ecadfd4848'
and 'd5a86b73860f0521df192aa72f0c8947f1ad1b38'
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Mon, 19 Nov 2007 03:10:41 +0000 |
parents | 8fcd795f627e (diff) 055e1abac7cf (current diff) |
children | fd87b254d3f3 |
files | |
diffstat | 1 files changed, 28 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- 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);