summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2009-10-30 14:47:28 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2009-10-30 14:47:28 +0000
commita8e89261dd8cf59843bbbd54d2fe936c92e4f989 (patch)
tree00d37e4662346edee020c91665a97c826a7291cb
parent78659e68d9b3ab9840023ccb50c92dc64a8146ce (diff)
downloadlasso-a8e89261dd8cf59843bbbd54d2fe936c92e4f989.tar.gz
lasso-a8e89261dd8cf59843bbbd54d2fe936c92e4f989.tar.xz
lasso-a8e89261dd8cf59843bbbd54d2fe936c92e4f989.zip
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
-rw-r--r--lasso/id-ff/logout.c23
-rw-r--r--lasso/id-ff/logoutprivate.h1
2 files changed, 23 insertions, 1 deletions
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