ovn-controller: Fix memory leak reported by valgrind.
authorWilliam Tu <u9012063@gmail.com>
Sun, 5 Jun 2016 14:37:35 +0000 (07:37 -0700)
committerBen Pfaff <blp@ovn.org>
Fri, 10 Jun 2016 15:44:26 +0000 (08:44 -0700)
Calling ovsdb_idl_set_remote() might overwrite the 'idl->session'.  The patch
fixes them by freeing 'idl->session' before it is overwritten.

Testcast ovn-controller - ovn-bridge-mappings reports two definitely losts in:
    xmalloc (util.c:112)
    jsonrpc_session_open (jsonrpc.c:784)
    ovsdb_idl_create (ovsdb-idl.c:246)
    main (ovn-controller.c:384)
and,
    xmalloc (util.c:112)
    jsonrpc_session_open (jsonrpc.c:784)
    ovsdb_idl_set_remote (ovsdb-idl.c:289)
    main (ovn-controller.c:409)

Signed-off-by: William Tu <u9012063@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Ryan Moats <rmoats@us.ibm.com>
lib/ovsdb-idl.c

index 2b372cb..b14bef2 100644 (file)
@@ -286,6 +286,7 @@ ovsdb_idl_set_remote(struct ovsdb_idl *idl, const char *remote,
 {
     if (idl) {
         ovs_assert(!idl->txn);
+        jsonrpc_session_close(idl->session);
         idl->session = jsonrpc_session_open(remote, retry);
         idl->state_seqno = UINT_MAX;
     }