diff options
Diffstat (limited to 'addons/ooh323c/src/ooGkClient.c')
-rw-r--r-- | addons/ooh323c/src/ooGkClient.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c index dff3e751b..c91b9ed95 100644 --- a/addons/ooh323c/src/ooGkClient.c +++ b/addons/ooh323c/src/ooGkClient.c @@ -170,23 +170,25 @@ void ooGkClientPrintConfig(ooGkClient *pGkClient) int ooGkClientDestroy(void) { + ooGkClient *pGkClient = gH323ep.gkClient; + if(gH323ep.gkClient) { - if(gH323ep.gkClient->state == GkClientRegistered) + ast_mutex_lock(&pGkClient->Lock); + gH323ep.gkClient = NULL; + if(pGkClient->state == GkClientRegistered) { OOTRACEINFO1("Unregistering from Gatekeeper\n"); - if(ooGkClientSendURQ(gH323ep.gkClient, NULL)!=OO_OK) + if(ooGkClientSendURQ(pGkClient, NULL)!=OO_OK) OOTRACEERR1("Error:Failed to send URQ to gatekeeper\n"); } OOTRACEINFO1("Destroying Gatekeeper Client\n"); - ooGkClientCloseChannel(gH323ep.gkClient); - freeContext(&gH323ep.gkClient->msgCtxt); - freeContext(&gH323ep.gkClient->ctxt); - ast_mutex_lock(&gH323ep.gkClient->Lock); - ast_mutex_unlock(&gH323ep.gkClient->Lock); - ast_mutex_destroy(&gH323ep.gkClient->Lock); - memFreePtr(&gH323ep.ctxt, gH323ep.gkClient); - gH323ep.gkClient = NULL; + ooGkClientCloseChannel(pGkClient); + freeContext(&pGkClient->msgCtxt); + freeContext(&pGkClient->ctxt); + ast_mutex_unlock(&pGkClient->Lock); + ast_mutex_destroy(&pGkClient->Lock); + memFreePtr(&gH323ep.ctxt, pGkClient); } return OO_OK; } |