diff options
| -rw-r--r-- | glusterfsd/src/glusterfsd.c | 8 | ||||
| -rw-r--r-- | libglusterfs/src/glusterfs.h | 1 | 
2 files changed, 8 insertions, 1 deletions
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c index f1cd0270735..332f8f3a740 100644 --- a/glusterfsd/src/glusterfsd.c +++ b/glusterfsd/src/glusterfsd.c @@ -654,9 +654,15 @@ cleanup_and_exit (int signum)          ctx = glusterfs_ctx_get ();          /* TODO: is this the right place? */ +        if (!ctx) +                return; +        if (ctx->cleanup_started) +                return; + +        ctx->cleanup_started = 1;          glusterfs_mgmt_pmap_signout (ctx); -        if (ctx && ctx->mgmt) +        if (ctx->mgmt)                  rpc_clnt_destroy (ctx->mgmt);          gf_log ("glusterfsd", GF_LOG_NORMAL, "shutting down"); diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index f484520a711..f107a8abfa4 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -283,6 +283,7 @@ struct _glusterfs_ctx {          unsigned char       measure_latency; /* toggle switch for latency measurement */          pthread_t           sigwaiter;          struct mem_pool    *stub_mem_pool; +        unsigned char       cleanup_started;  };  typedef struct _glusterfs_ctx glusterfs_ctx_t;  | 
