summaryrefslogtreecommitdiffstats
path: root/dss1.cpp
diff options
context:
space:
mode:
authorSuper User2008-05-12 11:39:44 +0200
committerSuper User2008-05-12 11:39:44 +0200
commit30a6a1642bb7d4d17e587bc73c8e87805c62c6d8 (patch)
treee6948b3b862d7ee5c3630289daa77c2686c2925c /dss1.cpp
parentfixed some bugs (diff)
downloadlcr-30a6a1642bb7d4d17e587bc73c8e87805c62c6d8.tar.gz
lcr-30a6a1642bb7d4d17e587bc73c8e87805c62c6d8.tar.xz
lcr-30a6a1642bb7d4d17e587bc73c8e87805c62c6d8.zip
fixed multiplexing bug
DL reports tei modified: dss1.cpp modified: mISDN.cpp
Diffstat (limited to 'dss1.cpp')
-rw-r--r--dss1.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/dss1.cpp b/dss1.cpp
index 90cd3c5..384ac2f 100644
--- a/dss1.cpp
+++ b/dss1.cpp
@@ -4058,11 +4058,19 @@ int stack2manager(struct mISDNport *mISDNport, unsigned int cmd, unsigned int pi
{
pdss1 = (class Pdss1 *)port;
/* check out correct stack and id */
- if (pdss1->p_m_mISDNport == mISDNport
- && (pdss1->p_m_d_l3id & MISDN_PID_CRVAL_MASK) == (pid & MISDN_PID_CRVAL_MASK))
+ if (pdss1->p_m_mISDNport == mISDNport)
{
- /* found port, the message belongs to */
- break;
+ if (pdss1->p_m_d_l3id & MISDN_PID_CR_FLAG)
+ {
+ /* local callref, so match value only */
+ if ((pdss1->p_m_d_l3id & MISDN_PID_CRVAL_MASK) == (pid & MISDN_PID_CRVAL_MASK))
+ break; // found
+ } else
+ {
+ /* remote callref, ref + channel id */
+ if (pdss1->p_m_d_l3id == pid)
+ break; // found
+ }
}
}
port = port->next;