X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.c;h=326b16af067777cd792a580851f31bf9dd754f05;hb=146f95b776c7a424e672b27386fbb8392bc0ffb7;hp=667738c484a9c174770f539bb2521d15db45c40c;hpb=e33f64f9e2352665f68ea9e7c16c11330beae625;p=src%2Fapp-framework-binder.git diff --git a/src/session.c b/src/session.c index 667738c4..326b16af 100644 --- a/src/session.c +++ b/src/session.c @@ -276,6 +276,7 @@ void ctxClientUnref(struct AFB_clientCtx *clientCtx) --clientCtx->refcount; if (clientCtx->refcount == 0 && clientCtx->uuid[0] == 0) { ctxStoreDel (clientCtx); + free(clientCtx); } } } @@ -284,8 +285,16 @@ void ctxClientUnref(struct AFB_clientCtx *clientCtx) void ctxClientClose (struct AFB_clientCtx *clientCtx) { assert(clientCtx != NULL); - ctxUuidFreeCB (clientCtx); - clientCtx->uuid[0] = 0; + if (clientCtx->uuid[0] != 0) { + clientCtx->uuid[0] = 0; + ctxUuidFreeCB (clientCtx); + while(clientCtx->listeners != NULL) + ctxClientEventListenerRemove(clientCtx, clientCtx->listeners->listener); + if (clientCtx->refcount == 0) { + ctxStoreDel (clientCtx); + free(clientCtx); + } + } } // Sample Generic Ping Debug API