r4162 in private:

Detect busy users and respond with 486 Busy Here.
This fixes one complaint, but is a stop-gap until we implement a proper multi-transaction state machine in GSM L3.

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4174 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This commit is contained in:
Kurtis Heimerl
2012-09-24 20:02:36 +00:00
parent d3af77f81f
commit b742914460

View File

@@ -358,6 +358,7 @@ bool SIPInterface::checkInvite( osip_message_t * msg)
// Find any active transaction for this IMSI with an assigned TCH or SDCCH.
GSM::LogicalChannel *chan = gTransactionTable.findChannel(mobileID);
bool userBusy = false;
if (chan) {
// If the type is TCH and the service is SMS, get the SACCH.
// Otherwise, for now, just say chan=NULL.
@@ -366,6 +367,7 @@ bool SIPInterface::checkInvite( osip_message_t * msg)
} else {
// FIXME -- This will change to support multiple transactions.
chan = NULL;
userBusy = (serviceType==L3CMServiceType::MobileTerminatedCall);
}
}
@@ -469,6 +471,12 @@ bool SIPInterface::checkInvite( osip_message_t * msg)
LOG(INFO) << "MTC MTSMS make transaction and add to transaction table: "<< *transaction;
gTransactionTable.add(transaction);
if (userBusy) {
transaction->MODSendERROR(msg, 486, "Busy Here", false);
return true;
}
// If there's an existing channel, skip the paging step.
if (!chan) {
// Add to paging list.