summaryrefslogtreecommitdiff
path: root/addons/ooh323c/src
diff options
context:
space:
mode:
authorAlexandr Anikin <may@telecom-service.ru>2013-12-19 08:35:28 +0000
committerAlexandr Anikin <may@telecom-service.ru>2013-12-19 08:35:28 +0000
commit1370d405594ff731b9034decec0af9e256b29f1c (patch)
treed5ec5e84c82db640d4274adb9531fcbb613ec328 /addons/ooh323c/src
parentc2fd229fbaf161ae91b87ca38845636089d96a4c (diff)
Handle temporary failures on gk registration
Introduce new 'stopped' state for gk client and restart gk client on failures Remove ooh323 stack command lock as it is not need now. (closes issue ASTERISK-21960) Reported by: Dmitry Melekhov Patches: ASTERISK-21960.patch ASTERISK-21960-stacklockup-2.patch Tested by: Dmitry Melekhov ........ Merged revisions 404318 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404320 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@404321 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'addons/ooh323c/src')
-rw-r--r--addons/ooh323c/src/ooGkClient.c4
-rw-r--r--addons/ooh323c/src/ooGkClient.h3
-rw-r--r--addons/ooh323c/src/oochannels.c6
3 files changed, 5 insertions, 8 deletions
diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c
index 3aaaba774..af6a10bbd 100644
--- a/addons/ooh323c/src/ooGkClient.c
+++ b/addons/ooh323c/src/ooGkClient.c
@@ -2851,13 +2851,13 @@ int ooGkClientHandleClientOrGkFailure(ooGkClient *pGkClient)
{
OOTRACEERR1("Error: Gatekeeper error detected. Closing GkClient as "
"Gk mode is UseSpecifcGatekeeper\n");
- ooGkClientDestroy();
+ pGkClient->state = GkClientStopped;
return OO_FAILED;
}
else{
OOTRACEERR1("Error: Gatekeeper error detected. Closing GkClient. NEED"
" to implement recovery by rediscovering another gk\n");
- ooGkClientDestroy();
+ pGkClient->state = GkClientStopped;
return OO_FAILED;
}
}
diff --git a/addons/ooh323c/src/ooGkClient.h b/addons/ooh323c/src/ooGkClient.h
index e12b45a96..59230e953 100644
--- a/addons/ooh323c/src/ooGkClient.h
+++ b/addons/ooh323c/src/ooGkClient.h
@@ -108,7 +108,8 @@ enum OOGkClientState {
GkClientRegistered, /* registered with gk */
GkClientUnregistered,
GkClientGkErr,/*Gk is not responding, in discover mode can look for new GK*/
- GkClientFailed
+ GkClientFailed,
+ GkClientStopped
};
diff --git a/addons/ooh323c/src/oochannels.c b/addons/ooh323c/src/oochannels.c
index f581d76f9..de8538910 100644
--- a/addons/ooh323c/src/oochannels.c
+++ b/addons/ooh323c/src/oochannels.c
@@ -603,11 +603,7 @@ int ooProcessFDSETsAndTimers
if(gH323ep.gkClient->state == GkClientFailed ||
gH323ep.gkClient->state == GkClientGkErr)
{
- if(ooGkClientHandleClientOrGkFailure(gH323ep.gkClient)!=OO_OK)
- {
- //ooStopMonitorCalls(); //Function calling ooProcessFDSETsAndTimers is responsible for this.
- return OO_FAILED;
- }
+ ooGkClientHandleClientOrGkFailure(gH323ep.gkClient);
}
}