summaryrefslogtreecommitdiff
path: root/ovsdb
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2010-02-02 14:41:00 -0800
committerBen Pfaff <blp@nicira.com>2010-02-02 15:21:09 -0800
commit23935e8bcb5be3e82ed2fb16333fdbea36eedfcd (patch)
tree8f4ade451f0c9cbb1d236f6326aeac2b93321071 /ovsdb
parente084f69017bc840cd7aed4cc9ed2e13f3fb6747e (diff)
downloadopenvswitch-23935e8bcb5be3e82ed2fb16333fdbea36eedfcd.tar.gz
ovsdb-server: Free memory on exit.
It is not really important to free memory on program exit, but it makes it easier to see real memory leaks. Found with valgrind.
Diffstat (limited to 'ovsdb')
-rw-r--r--ovsdb/jsonrpc-server.c12
-rw-r--r--ovsdb/jsonrpc-server.h3
-rw-r--r--ovsdb/ovsdb-server.c4
3 files changed, 18 insertions, 1 deletions
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c
index 6f2a656e5..936dd1db3 100644
--- a/ovsdb/jsonrpc-server.c
+++ b/ovsdb/jsonrpc-server.c
@@ -100,6 +100,18 @@ ovsdb_jsonrpc_server_create(struct ovsdb *db)
return server;
}
+void
+ovsdb_jsonrpc_server_destroy(struct ovsdb_jsonrpc_server *svr)
+{
+ struct shash_node *node, *next;
+
+ SHASH_FOR_EACH_SAFE (node, next, &svr->remotes) {
+ ovsdb_jsonrpc_server_del_remote(node);
+ }
+ shash_destroy(&svr->remotes);
+ free(svr);
+}
+
/* Sets 'svr''s current set of remotes to the names in 'new_remotes'. The data
* values in 'new_remotes' are ignored.
*
diff --git a/ovsdb/jsonrpc-server.h b/ovsdb/jsonrpc-server.h
index b6f837d5e..6c4acd7f3 100644
--- a/ovsdb/jsonrpc-server.h
+++ b/ovsdb/jsonrpc-server.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009 Nicira Networks
+/* Copyright (c) 2009, 2010 Nicira Networks
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@ struct ovsdb;
struct shash;
struct ovsdb_jsonrpc_server *ovsdb_jsonrpc_server_create(struct ovsdb *);
+void ovsdb_jsonrpc_server_destroy(struct ovsdb_jsonrpc_server *);
void ovsdb_jsonrpc_server_set_remotes(struct ovsdb_jsonrpc_server *,
const struct shash *);
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
index 900f4eccb..ab7e6c348 100644
--- a/ovsdb/ovsdb-server.c
+++ b/ovsdb/ovsdb-server.c
@@ -112,6 +112,10 @@ main(int argc, char *argv[])
ovsdb_trigger_wait(db, time_msec());
poll_block();
}
+ ovsdb_jsonrpc_server_destroy(jsonrpc);
+ ovsdb_destroy(db);
+ shash_destroy(&remotes);
+ unixctl_server_destroy(unixctl);
return 0;
}