From a8e89261dd8cf59843bbbd54d2fe936c92e4f989 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Fri, 30 Oct 2009 14:47:28 +0000 Subject: ID-FF: add a partial_logout flag to LassoLogout private_data * lasso/id-ff/logout.c: * lasso/id-ff/logout.h: add a flag to store the status of a partial logout --- lasso/id-ff/logout.c | 23 ++++++++++++++++++++++- lasso/id-ff/logoutprivate.h | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index 53788e25..507a70d3 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -1027,6 +1027,7 @@ check_soap_support(G_GNUC_UNUSED gchar *key, LassoProvider *provider, LassoProfi LASSO_LOGOUT(profile)->private_data->all_soap = FALSE; + LASSO_LOGOUT(profile)->private_data->partial_logout = FALSE; } @@ -1034,10 +1035,19 @@ static xmlNode* get_xmlNode(LassoNode *node, gboolean lasso_dump) { xmlNode *xmlnode; + LassoLogout *logout; + + if (! LASSO_IS_LOGOUT(node)) { + return NULL; + } + logout = (LassoLogout*)node; xmlnode = parent_class->get_xmlNode(node, lasso_dump); xmlNodeSetName(xmlnode, (xmlChar*)"Logout"); xmlSetProp(xmlnode, (xmlChar*)"LogoutDumpVersion", (xmlChar*)"2"); + if (logout->private_data->partial_logout) { + xmlSetProp(xmlnode, (xmlChar*)"PartialLogout", (xmlChar*)"true"); + } return xmlnode; } @@ -1045,7 +1055,18 @@ get_xmlNode(LassoNode *node, gboolean lasso_dump) static int init_from_xml(LassoNode *node, xmlNode *xmlnode) { - return parent_class->init_from_xml(node, xmlnode); + int rc; + + rc = parent_class->init_from_xml(node, xmlnode); + if (rc == 0) { + xmlChar *tmp; + tmp = xmlGetProp(xmlnode, (xmlChar*)"PartiaLogout"); + if (tmp && strcmp((char*)tmp, "true") == 0) { + ((LassoLogout*)node)->private_data->partial_logout = TRUE; + } + lasso_release_xml_string(tmp); + } + return rc; } /*****************************************************************************/ diff --git a/lasso/id-ff/logoutprivate.h b/lasso/id-ff/logoutprivate.h index be616df3..3e44b593 100644 --- a/lasso/id-ff/logoutprivate.h +++ b/lasso/id-ff/logoutprivate.h @@ -34,6 +34,7 @@ struct _LassoLogoutPrivate { gboolean dispose_has_run; gboolean all_soap; + gboolean partial_logout; }; #ifdef __cplusplus -- cgit