fix stuck zchans on pri boost on call failure between proceeding and media being active (this needs to be completely reworked and is a hack fix)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@993 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
parent
ec7319135d
commit
72e37bd888
|
@ -358,7 +358,6 @@ static ZIO_CHANNEL_REQUEST_FUNCTION(sangoma_boost_channel_request)
|
||||||
*zchan = NULL;
|
*zchan = NULL;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
//printf("WTF %d\n", sanity);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OUTBOUND_REQUESTS[r].status == BST_ACK && OUTBOUND_REQUESTS[r].zchan) {
|
if (OUTBOUND_REQUESTS[r].status == BST_ACK && OUTBOUND_REQUESTS[r].zchan) {
|
||||||
|
@ -368,15 +367,14 @@ static ZIO_CHANNEL_REQUEST_FUNCTION(sangoma_boost_channel_request)
|
||||||
zap_log(ZAP_LOG_DEBUG, "Channel state changed to PROGRESS [Csid:%d]\n", r);
|
zap_log(ZAP_LOG_DEBUG, "Channel state changed to PROGRESS [Csid:%d]\n", r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This is blocking the channel thread in openzap */
|
||||||
|
/* Once we know the channel we need to get out of here and move to a state */
|
||||||
sanity = 60000;
|
sanity = 60000;
|
||||||
while(zap_running() && OUTBOUND_REQUESTS[r].status == BST_ACK) {
|
while(zap_running() && OUTBOUND_REQUESTS[r].status == BST_ACK) {
|
||||||
zap_sleep(1);
|
zap_sleep(1);
|
||||||
if (--sanity <= 0) {
|
if (--sanity <= 0) {
|
||||||
status = ZAP_FAIL;
|
break;
|
||||||
*zchan = NULL;
|
|
||||||
goto done;
|
|
||||||
}
|
}
|
||||||
//printf("WTF %d\n", sanity);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OUTBOUND_REQUESTS[r].status == BST_READY && OUTBOUND_REQUESTS[r].zchan) {
|
if (OUTBOUND_REQUESTS[r].status == BST_READY && OUTBOUND_REQUESTS[r].zchan) {
|
||||||
|
@ -391,6 +389,21 @@ static ZIO_CHANNEL_REQUEST_FUNCTION(sangoma_boost_channel_request)
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
|
/* We failed to ever setup media, we need to let go of the channel */
|
||||||
|
/* All of this early media stuff should not be in this function at all */
|
||||||
|
/* Everything after we know the channel should be moved to a new state */
|
||||||
|
if (OUTBOUND_REQUESTS[r].zchan && OUTBOUND_REQUESTS[r].status != BST_READY && zap_test_flag((OUTBOUND_REQUESTS[r].zchan), ZAP_CHANNEL_INUSE)) {
|
||||||
|
status = ZAP_FAIL;
|
||||||
|
*zchan = NULL;
|
||||||
|
OUTBOUND_REQUESTS[event->call_setup_id].zchan = NULL;
|
||||||
|
if (zchan->extra_id) {
|
||||||
|
zchan->extra_id = 0;
|
||||||
|
}
|
||||||
|
zchan->sflags = 0;
|
||||||
|
zchan->call_data = NULL;
|
||||||
|
zap_channel_done(zchan);
|
||||||
|
}
|
||||||
|
|
||||||
st = OUTBOUND_REQUESTS[r].status;
|
st = OUTBOUND_REQUESTS[r].status;
|
||||||
OUTBOUND_REQUESTS[r].status = BST_FREE;
|
OUTBOUND_REQUESTS[r].status = BST_FREE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue