Add support change gatekeeper mode or ip per ooh323 reload command

(issue ASTERISK-19298)
Reported by: Dmitry Melekhov
Patches:
        change_gk_on_reload-1.patch (License #5415)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@356848 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Alexandr Anikin
2012-02-26 18:25:23 +00:00
parent 5e40f2cd98
commit 62994531e2
2 changed files with 27 additions and 10 deletions

View File

@@ -2571,12 +2571,27 @@ static struct ooh323_peer *build_peer(const char *name, struct ast_variable *v,
static int ooh323_do_reload(void) static int ooh323_do_reload(void)
{ {
extern OOH323EndPoint gH323ep;
if (gH323Debug) { if (gH323Debug) {
ast_verb(0, "--- ooh323_do_reload\n"); ast_verb(0, "--- ooh323_do_reload\n");
} }
/* Gatekeeper */
if (gH323ep.gkClient) {
ooGkClientDestroy();
}
reload_config(1); reload_config(1);
/* Gatekeeper */
if (gRasGkMode == RasUseSpecificGatekeeper ||
gRasGkMode == RasDiscoverGatekeeper) {
ooGkClientInit(gRasGkMode, (gRasGkMode == RasUseSpecificGatekeeper) ?
gGatekeeper : 0, 0);
ooGkClientStart(gH323ep.gkClient);
}
if (gH323Debug) { if (gH323Debug) {
ast_verb(0, "+++ ooh323_do_reload\n"); ast_verb(0, "+++ ooh323_do_reload\n");
} }

View File

@@ -170,23 +170,25 @@ void ooGkClientPrintConfig(ooGkClient *pGkClient)
int ooGkClientDestroy(void) int ooGkClientDestroy(void)
{ {
ooGkClient *pGkClient = gH323ep.gkClient;
if(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"); 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"); OOTRACEERR1("Error:Failed to send URQ to gatekeeper\n");
} }
OOTRACEINFO1("Destroying Gatekeeper Client\n"); OOTRACEINFO1("Destroying Gatekeeper Client\n");
ooGkClientCloseChannel(gH323ep.gkClient); ooGkClientCloseChannel(pGkClient);
freeContext(&gH323ep.gkClient->msgCtxt); freeContext(&pGkClient->msgCtxt);
freeContext(&gH323ep.gkClient->ctxt); freeContext(&pGkClient->ctxt);
ast_mutex_lock(&gH323ep.gkClient->Lock); ast_mutex_unlock(&pGkClient->Lock);
ast_mutex_unlock(&gH323ep.gkClient->Lock); ast_mutex_destroy(&pGkClient->Lock);
ast_mutex_destroy(&gH323ep.gkClient->Lock); memFreePtr(&gH323ep.ctxt, pGkClient);
memFreePtr(&gH323ep.ctxt, gH323ep.gkClient);
gH323ep.gkClient = NULL;
} }
return OO_OK; return OO_OK;
} }