diff options
author | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2017-07-19 18:18:27 +0300 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2017-07-19 18:18:27 +0300 |
commit | 37885be945925f11601b1a5133a2a937810759d7 (patch) | |
tree | 1b64c4b8e8c6378c7698018f95fb05e05d1a34e0 | |
parent | 73c4ac258dfdc691649b90203c08e606ac2ed4d5 (diff) |
gsm_04_08: Implement support of placing an existing call on hold when another call comes in and switching to new call
In this case two transactions with links to the same lchan are in transaction list:
* transaction for call on hold
* transaction for active call.
New condition was added for searching function to avoid selecting transaction
which was put on hold and use active call transaction for rtp handling and handover procedures.
-rw-r--r-- | openbsc/src/libmsc/gsm_04_08.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c index f6703c4cc..79d094170 100644 --- a/openbsc/src/libmsc/gsm_04_08.c +++ b/openbsc/src/libmsc/gsm_04_08.c @@ -3471,6 +3471,8 @@ static int tch_rtp_signal(struct gsm_lchan *lchan, int signal) continue; if (tmp->conn->lchan != lchan && tmp->conn->ho_lchan != lchan) continue; + if (!tmp->tch_recv) + continue; trans = tmp; break; } @@ -3519,6 +3521,8 @@ static int ho_detect(struct gsm_lchan *lchan) continue; if (tmp->conn->lchan != lchan && tmp->conn->ho_lchan != lchan) continue; + if (!tmp->tch_recv) + continue; trans = tmp; break; } |