X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=ovsdb%2Fjsonrpc-server.c;h=936dd1db37263325b527b55c88769b129ae09049;hb=a3326252a1ebee8c7f565fe60307b6a2af0ac073;hp=458c52db5a0c07c1a593e728d9857e262fd85d5c;hpb=108496163d4d7f77766c2b05c5c20131d6c436a9;p=openvswitch diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index 458c52db..936dd1db 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. * @@ -252,9 +264,11 @@ ovsdb_jsonrpc_session_create(struct ovsdb_jsonrpc_remote *remote, static void ovsdb_jsonrpc_session_close(struct ovsdb_jsonrpc_session *s) { + ovsdb_jsonrpc_monitor_remove_all(s); jsonrpc_session_close(s->js); list_remove(&s->node); s->remote->server->n_sessions--; + free(s); } static int @@ -339,6 +353,7 @@ execute_transaction(struct ovsdb_jsonrpc_session *s, ovsdb_jsonrpc_trigger_create(s, request->id, request->params); request->id = NULL; request->params = NULL; + jsonrpc_msg_destroy(request); return NULL; }