diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2009-10-30 14:47:28 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2009-10-30 14:47:28 +0000 |
| commit | a8e89261dd8cf59843bbbd54d2fe936c92e4f989 (patch) | |
| tree | 00d37e4662346edee020c91665a97c826a7291cb | |
| parent | 78659e68d9b3ab9840023ccb50c92dc64a8146ce (diff) | |
| download | lasso-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.c | 23 | ||||
| -rw-r--r-- | lasso/id-ff/logoutprivate.h | 1 |
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 |
