summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-07-25 16:27:49 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-07-25 16:27:49 +0000
commitdf05fe2ac6f8f32faf0af6325bcc0c8e40f87ae0 (patch)
tree8c507bddcfe7d94326a2e366bd1c39d818be7022
parent561b87435a7d5b0b00a6aa811b4a2d944876fa76 (diff)
downloadlasso-df05fe2ac6f8f32faf0af6325bcc0c8e40f87ae0.tar.gz
lasso-df05fe2ac6f8f32faf0af6325bcc0c8e40f87ae0.tar.xz
lasso-df05fe2ac6f8f32faf0af6325bcc0c8e40f87ae0.zip
Finished to implement lasso_server_destroy() method
-rw-r--r--lasso/id-ff/server.c27
-rw-r--r--lasso/id-ff/server.h2
2 files changed, 23 insertions, 6 deletions
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index c0123ee2..729e4d69 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -32,6 +32,11 @@
#define LASSO_SERVER_CERTIFICATE_NODE "Certificate"
#define LASSO_SERVER_SIGNATURE_METHOD_NODE "SignatureMethod"
+struct _LassoServerPrivate
+{
+ gboolean dispose_has_run;
+};
+
static GObjectClass *parent_class = NULL;
/*****************************************************************************/
@@ -192,15 +197,20 @@ lasso_server_get_providerID_from_hash(LassoServer *server,
static void
lasso_server_dispose(LassoServer *server)
{
-/* /\* No idea how to access to ->private->dispose_has_run *\/ */
-/* if (server->private->dispose_has_run) { */
-/* return; */
-/* } */
-/* server->private->dispose_has_run = TRUE; */
+ guint i;
+
+ if (server->private->dispose_has_run == TRUE) {
+ return;
+ }
+ server->private->dispose_has_run = TRUE;
debug("Server object 0x%x finalized ...\n", server);
- /* TODO destroy the providers */
+ /* free allocated memory for providers array */
+ for (i=0; i<server->providers->len; i++) {
+ lasso_provider_destroy(server->providers->pdata[i]);
+ }
+ g_ptr_array_free(server->providers, TRUE);
parent_class->dispose(G_OBJECT(server));
}
@@ -214,6 +224,8 @@ lasso_server_finalize(LassoServer *server)
g_free(server->private_key);
g_free(server->certificate);
+ g_free(server->private);
+
parent_class->finalize(G_OBJECT(server));
}
@@ -224,6 +236,9 @@ lasso_server_finalize(LassoServer *server)
static void
lasso_server_instance_init(LassoServer *server)
{
+ server->private = g_new (LassoServerPrivate, 1);
+ server->private->dispose_has_run = FALSE;
+
server->providers = g_ptr_array_new();
server->providerID = NULL;
server->private_key = NULL;
diff --git a/lasso/id-ff/server.h b/lasso/id-ff/server.h
index 92ab6e1e..7734cea8 100644
--- a/lasso/id-ff/server.h
+++ b/lasso/id-ff/server.h
@@ -41,6 +41,7 @@ extern "C" {
typedef struct _LassoServer LassoServer;
typedef struct _LassoServerClass LassoServerClass;
+typedef struct _LassoServerPrivate LassoServerPrivate;
struct _LassoServer {
LassoProvider parent;
@@ -52,6 +53,7 @@ struct _LassoServer {
gchar *certificate;
guint signature_method;
/*< private >*/
+ LassoServerPrivate *private;
};
struct _LassoServerClass {