X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=blobdiff_plain;f=ovsdb%2Fmonitor.c;fp=ovsdb%2Fmonitor.c;h=6b0d13d676785c4810b39bd9f59034e58d60f034;hp=0d81d89b63f039f912187418be0cc0effbfbb3b7;hb=f76def2592cc5cb449a3360430ee9cc0f208765d;hpb=1b4993133f281a9b181aedc9f56930ab4b4de65a diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c index 0d81d89b6..6b0d13d67 100644 --- a/ovsdb/monitor.c +++ b/ovsdb/monitor.c @@ -959,7 +959,8 @@ ovsdb_monitor_get_initial(const struct ovsdb_monitor *dbmon) void ovsdb_monitor_remove_jsonrpc_monitor(struct ovsdb_monitor *dbmon, - struct ovsdb_jsonrpc_monitor *jsonrpc_monitor) + struct ovsdb_jsonrpc_monitor *jsonrpc_monitor, + uint64_t unflushed) { struct jsonrpc_monitor_node *jm; @@ -971,6 +972,12 @@ ovsdb_monitor_remove_jsonrpc_monitor(struct ovsdb_monitor *dbmon, /* Find and remove the jsonrpc monitor from the list. */ LIST_FOR_EACH(jm, node, &dbmon->jsonrpc_monitors) { if (jm->jsonrpc_monitor == jsonrpc_monitor) { + /* Release the tracked changes. */ + struct shash_node *node; + SHASH_FOR_EACH (node, &dbmon->tables) { + struct ovsdb_monitor_table *mt = node->data; + ovsdb_monitor_table_untrack_changes(mt, unflushed); + } list_remove(&jm->node); free(jm);