diff options
Diffstat (limited to 'rpc/rpc-lib/src/rpc-clnt.c')
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.c | 43 | 
1 files changed, 23 insertions, 20 deletions
diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c index 61bc5263dc7..bd878f4fc1e 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -1428,32 +1428,16 @@ rpc_clnt_ref (struct rpc_clnt *rpc)          return rpc;  } -struct rpc_clnt * -rpc_clnt_unref (struct rpc_clnt *rpc) -{ -        int     count = 0; - -        if (!rpc) -                return NULL; -        pthread_mutex_lock (&rpc->lock); -        { -                count = --rpc->refcount; -        } -        pthread_mutex_unlock (&rpc->lock); -        if (!count) { -                rpc_clnt_destroy (rpc); -                return NULL; -        } -        return rpc; -} -void +static void  rpc_clnt_destroy (struct rpc_clnt *rpc)  {          if (!rpc)                  return; -        rpc_transport_destroy (rpc->conn.trans); +        if (rpc->conn.trans) +                rpc_transport_unref (rpc->conn.trans); +          rpc_clnt_connection_cleanup (&rpc->conn);          rpc_clnt_reconnect_cleanup (&rpc->conn);          saved_frames_destroy (rpc->conn.saved_frames); @@ -1469,6 +1453,25 @@ rpc_clnt_destroy (struct rpc_clnt *rpc)          return;  } +struct rpc_clnt * +rpc_clnt_unref (struct rpc_clnt *rpc) +{ +        int     count = 0; + +        if (!rpc) +                return NULL; +        pthread_mutex_lock (&rpc->lock); +        { +                count = --rpc->refcount; +        } +        pthread_mutex_unlock (&rpc->lock); +        if (!count) { +                rpc_clnt_destroy (rpc); +                return NULL; +        } +        return rpc; +} +  void  rpc_clnt_reconfig (struct rpc_clnt *rpc, struct rpc_clnt_config *config)  | 
