mirror of
https://github.com/RangeNetworks/openbts.git
synced 2025-11-02 12:53:15 +00:00
Fixes #580 in public. We had some transactions getting stuck in the transaction table, but no longer. We more aggressively clear the table.
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3300 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This commit is contained in:
@@ -326,7 +326,7 @@ bool callManagementDispatchGSM(TransactionEntry *transaction, GSM::LogicalChanne
|
|||||||
transaction->MODSendBYE();
|
transaction->MODSendBYE();
|
||||||
transaction->MODWaitForBYEOK();
|
transaction->MODWaitForBYEOK();
|
||||||
}
|
}
|
||||||
else { //ok, call isn't yet active. What we send depends on who sent it
|
else { //this is the end if the call isn't setup yet
|
||||||
if (transaction->instigator()){ //if we instigated the call, send a cancel
|
if (transaction->instigator()){ //if we instigated the call, send a cancel
|
||||||
transaction->MODSendCANCEL();
|
transaction->MODSendCANCEL();
|
||||||
transaction->MODWaitForCANCELOK();
|
transaction->MODWaitForCANCELOK();
|
||||||
@@ -338,6 +338,8 @@ bool callManagementDispatchGSM(TransactionEntry *transaction, GSM::LogicalChanne
|
|||||||
transaction->MODSendUnavail();
|
transaction->MODSendUnavail();
|
||||||
//enventually wait for ACK here -kurtis
|
//enventually wait for ACK here -kurtis
|
||||||
}
|
}
|
||||||
|
transaction->GSMState(GSM::NullState);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -835,7 +837,7 @@ void Control::MOCController(TransactionEntry *transaction, GSM::TCHFACCHLogicalC
|
|||||||
// FIXME -- We should also have a SIP.Timer.B timeout on this end.
|
// FIXME -- We should also have a SIP.Timer.B timeout on this end.
|
||||||
while (transaction->GSMState()!=GSM::CallReceived) {
|
while (transaction->GSMState()!=GSM::CallReceived) {
|
||||||
|
|
||||||
if (updateGSMSignalling(transaction,TCH)) return;
|
if (updateGSMSignalling(transaction,TCH)) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x15));
|
||||||
if (transaction->clearingGSM()) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x7F));
|
if (transaction->clearingGSM()) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x7F));
|
||||||
|
|
||||||
LOG(INFO) << "wait for Ringing or OK";
|
LOG(INFO) << "wait for Ringing or OK";
|
||||||
@@ -887,7 +889,7 @@ void Control::MOCController(TransactionEntry *transaction, GSM::TCHFACCHLogicalC
|
|||||||
LOG(DEBUG) << "SIP state "<< state;
|
LOG(DEBUG) << "SIP state "<< state;
|
||||||
|
|
||||||
// check GSM state
|
// check GSM state
|
||||||
if (updateGSMSignalling(transaction,TCH)) return;
|
if (updateGSMSignalling(transaction,TCH)) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x15));
|
||||||
if (transaction->clearingGSM()) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x7F));
|
if (transaction->clearingGSM()) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x7F));
|
||||||
|
|
||||||
// parse out SIP state
|
// parse out SIP state
|
||||||
@@ -1053,7 +1055,7 @@ void Control::MTCController(TransactionEntry *transaction, GSM::TCHFACCHLogicalC
|
|||||||
// Get the alerting message.
|
// Get the alerting message.
|
||||||
LOG(INFO) << "waiting for GSM Alerting and Connect";
|
LOG(INFO) << "waiting for GSM Alerting and Connect";
|
||||||
while (transaction->GSMState()!=GSM::Active) {
|
while (transaction->GSMState()!=GSM::Active) {
|
||||||
if (updateGSMSignalling(transaction,TCH,1000)) return;
|
if (updateGSMSignalling(transaction,TCH,1000)) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x15));
|
||||||
if (transaction->GSMState()==GSM::Active) break;
|
if (transaction->GSMState()==GSM::Active) break;
|
||||||
if (transaction->GSMState()==GSM::CallReceived) {
|
if (transaction->GSMState()==GSM::CallReceived) {
|
||||||
LOG(DEBUG) << "sending SIP Ringing";
|
LOG(DEBUG) << "sending SIP Ringing";
|
||||||
@@ -1086,7 +1088,7 @@ void Control::MTCController(TransactionEntry *transaction, GSM::TCHFACCHLogicalC
|
|||||||
SIP::SIPState state = transaction->MTCSendOK(RTPPorts,SIP::RTPGSM610);
|
SIP::SIPState state = transaction->MTCSendOK(RTPPorts,SIP::RTPGSM610);
|
||||||
while (state!=SIP::Active) {
|
while (state!=SIP::Active) {
|
||||||
LOG(DEBUG) << "wait for SIP OKAY-ACK";
|
LOG(DEBUG) << "wait for SIP OKAY-ACK";
|
||||||
if (updateGSMSignalling(transaction,TCH)) return;
|
if (updateGSMSignalling(transaction,TCH)) return abortAndRemoveCall(transaction,TCH,GSM::L3Cause(0x15));
|
||||||
state = transaction->MTCWaitForACK();
|
state = transaction->MTCWaitForACK();
|
||||||
LOG(DEBUG) << "SIP call state "<< state;
|
LOG(DEBUG) << "SIP call state "<< state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
|||||||
Reference in New Issue
Block a user