--clientCtx->refcount;
if (clientCtx->refcount == 0 && clientCtx->uuid[0] == 0) {
ctxStoreDel (clientCtx);
+ free(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