diff -r 28ee14bbe0ab -r 48f85579cc4c libpurple/protocols/msn/soap.c --- a/libpurple/protocols/msn/soap.c Mon Jan 27 17:34:21 2014 +0530 +++ b/libpurple/protocols/msn/soap.c Wed Jan 29 00:28:08 2014 +0530 @@ -195,9 +195,11 @@ if (xml_url != NULL) url = purple_xmlnode_get_data(xml_url); - msn_soap_service_send_message_simple(sreq->soaps, - sreq->message, url, sreq->secure, sreq->cb, - sreq->cb_data); + if (url) { + msn_soap_service_send_message_simple(sreq->soaps, + sreq->message, url, sreq->secure, sreq->cb, + sreq->cb_data); + } /* Steal the message, passed to another call. */ sreq->message = NULL; @@ -210,7 +212,10 @@ if (g_strcmp0(faultdata, "wsse:FailedAuthentication") == 0) { PurpleXmlNode *xml_reason = purple_xmlnode_get_child(xml_fault, "faultstring"); - gchar *reasondata = purple_xmlnode_get_data(xml_reason); + gchar *reasondata = NULL; + + if (xml_reason) + reasondata = purple_xmlnode_get_data(xml_reason); msn_session_set_error(sreq->soaps->session, MSN_ERROR_AUTH, reasondata);