summaryrefslogtreecommitdiffstats
path: root/lasso/id-ff/server.c
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-08-30 10:37:38 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-08-30 10:37:38 +0000
commitd13e4d56ac9fbfd9ee5ab89cbdaab4058c49ab85 (patch)
treee2380bd2d1a5313bcbe71d5fd8d643f7e93f9f7f /lasso/id-ff/server.c
parent693e43f54866ff5c0825c816982128f2dd4582e7 (diff)
downloadlasso-d13e4d56ac9fbfd9ee5ab89cbdaab4058c49ab85.tar.gz
lasso-d13e4d56ac9fbfd9ee5ab89cbdaab4058c49ab85.tar.xz
lasso-d13e4d56ac9fbfd9ee5ab89cbdaab4058c49ab85.zip
Fixed bug when dumping and loading from dump server with no metatadata. Now if metadata of the server exists, it adds a ServerMetadata node and embbeds it
Diffstat (limited to 'lasso/id-ff/server.c')
-rw-r--r--lasso/id-ff/server.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index aac8b04a..e05fe172 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -29,6 +29,7 @@
#include <lasso/environs/server.h>
#define LASSO_SERVER_NODE "Server"
+#define LASSO_SERVER_METADATA_NODE "ServerMetadata"
#define LASSO_SERVER_PROVIDERS_NODE "Providers"
#define LASSO_SERVER_PROVIDERID_NODE "ProviderID"
#define LASSO_SERVER_PRIVATE_KEY_NODE "PrivateKey"
@@ -124,8 +125,8 @@ gchar *
lasso_server_dump(LassoServer *server)
{
LassoProvider *provider;
- LassoNode *server_node, *providers_node, *provider_node, *metadata_copy;
- LassoNodeClass *server_class, *providers_class;
+ LassoNode *server_node, *providers_node, *provider_node, *metadata_copy, *metadata_node, *entity_node;
+ LassoNodeClass *metadata_class, *server_class, *providers_class;
xmlChar *signature_method_str, *dump;
gint i;
@@ -157,10 +158,17 @@ lasso_server_dump(LassoServer *server)
/* metadata */
provider = LASSO_PROVIDER(server);
if (provider->metadata != NULL) {
+ metadata_node = lasso_node_new();
+ metadata_class = LASSO_NODE_GET_CLASS(metadata_node);
+ metadata_class->set_name(metadata_node, LASSO_SERVER_METADATA_NODE);
+ metadata_class->set_ns(metadata_node, lassoLassoHRef, NULL);
+
metadata_copy = lasso_node_copy(provider->metadata);
- server_class->add_child(server_node, metadata_copy, FALSE);
+ metadata_class->add_child(metadata_node, metadata_copy, FALSE);
lasso_node_destroy(metadata_copy);
+ server_class->add_child(server_node, metadata_node, FALSE);
}
+
/* public key */
if (provider->public_key != NULL) {
server_class->set_prop(server_node, LASSO_PROVIDER_PUBLIC_KEY_NODE, provider->public_key);
@@ -489,10 +497,11 @@ lasso_server_new_from_dump(gchar *dump)
}
/* metadata */
- server_metadata_node = lasso_node_get_child(server_node, "EntityDescriptor", NULL, NULL);
+ server_metadata_node = lasso_node_get_child(server_node, LASSO_SERVER_METADATA_NODE, NULL, NULL);
if (server_metadata_node != NULL) {
- LASSO_PROVIDER(server)->metadata = lasso_node_copy(server_metadata_node);
- lasso_node_destroy(server_metadata_node);
+ entity_node = lasso_node_get_child(server_metadata_node, "EntityDescriptor", NULL, NULL);
+ LASSO_PROVIDER(server)->metadata = lasso_node_copy(entity_node);
+ lasso_node_destroy(entity_node);
}
/* public key */