aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bts.cpp2
-rw-r--r--src/tbf_dl.cpp3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index b660014..6100248 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -243,7 +243,7 @@ gprs_rlcmac_tbf *BTS::tbf_by_tlli(uint32_t tlli, enum gprs_rlcmac_tbf_direction
} else {
llist_pods_for_each_entry(tbf, &m_bts.dl_tbfs, list, lpods) {
if (tbf->state_is_not(GPRS_RLCMAC_RELEASING)
- && tbf->tlli() == tlli)
+ && tbf->tlli() == tlli && tbf->is_tlli_valid())
return tbf;
}
}
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 8de3b2b..89ca9c2 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -689,6 +689,9 @@ void gprs_rlcmac_dl_tbf::reuse_tbf(const uint8_t *data, const uint16_t len)
m_wait_confirm = 0;
m_window.reset();
+ /* mark TLLI as invalid */
+ m_tlli_valid = 0;
+
/* keep to flags */
state_flags &= GPRS_RLCMAC_FLAG_TO_MASK;
state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH);