X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ovsdb%2Fjsonrpc-server.c;h=6e0a6f6b4f095aeedf57b12dec444338625fa134;hb=fba6bd1d3f5891471daea8bf5da22303c2d889df;hp=8e1c030c3373dcbfb29c1b1c1c33082b1e5a0bc3;hpb=5dca28b517a5a1699cebc228dab46218431f8616;p=sliver-openvswitch.git diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index 8e1c030c3..6e0a6f6b4 100644 --- a/ovsdb/jsonrpc-server.c +++ b/ovsdb/jsonrpc-server.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. +/* Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ #include "jsonrpc-server.h" -#include #include #include "bitmap.h" @@ -211,7 +210,7 @@ ovsdb_jsonrpc_server_add_remote(struct ovsdb_jsonrpc_server *svr, shash_add(&svr->remotes, name, remote); if (!listener) { - ovsdb_jsonrpc_session_create(remote, jsonrpc_session_open(name)); + ovsdb_jsonrpc_session_create(remote, jsonrpc_session_open(name, true)); } return remote; } @@ -385,9 +384,13 @@ ovsdb_jsonrpc_session_close(struct ovsdb_jsonrpc_session *s) { ovsdb_jsonrpc_monitor_remove_all(s); ovsdb_jsonrpc_session_unlock_all(s); + ovsdb_jsonrpc_trigger_complete_all(s); + + hmap_destroy(&s->monitors); + hmap_destroy(&s->triggers); + jsonrpc_session_close(s->js); list_remove(&s->node); - ovsdb_session_destroy(&s->up); s->remote->server->n_sessions--; ovsdb_session_destroy(&s->up); free(s); @@ -1292,7 +1295,7 @@ ovsdb_jsonrpc_monitor_remove_all(struct ovsdb_jsonrpc_session *s) static struct ovsdb_jsonrpc_monitor * ovsdb_jsonrpc_monitor_cast(struct ovsdb_replica *replica) { - assert(replica->class == &ovsdb_jsonrpc_replica_class); + ovs_assert(replica->class == &ovsdb_jsonrpc_replica_class); return CONTAINER_OF(replica, struct ovsdb_jsonrpc_monitor, replica); }