From 9659d593073dfb6711f2ed9ad7bee4ca454db784 Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Tue, 1 Sep 2015 11:06:14 +0200 Subject: tbf: Keep the old MS object alive in extract_tlli Currently when a second MS object has been created for an MS, because the TLLI was not known yet, the will be detected in gprs_rlcmac_tbf::extract_tlli and the two objects will be merged by update_ms. But when the dl_tbf is moved from the old to the new (second) MS object, the old MS object can get idle and be removed before the object are merged. This can cause LLC frame loss when the MS object is deleted immediately after getting idle (no timeout configured). This commit adds a guard to keep the MS object until extract_tlli has been executed. Sponsored-by: On-Waves ehf --- tests/tbf/TbfTest.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp index 3c3e91f7..2af7e3a9 100644 --- a/tests/tbf/TbfTest.cpp +++ b/tests/tbf/TbfTest.cpp @@ -900,7 +900,7 @@ static void test_tbf_dl_flow_and_rach_two_phase() /* OSMO_ASSERT(ms->dl_tbf() == dl_tbf); */ /* No queued packets should be lost */ - /* OSMO_ASSERT(ms->llc_queue()->size() == 2); */ + OSMO_ASSERT(ms->llc_queue()->size() == 2); printf("=== end %s ===\n", __func__); } @@ -961,7 +961,7 @@ static void test_tbf_dl_flow_and_rach_single_phase() OSMO_ASSERT(ms->dl_tbf() == dl_tbf); /* No queued packets should be lost */ - /* OSMO_ASSERT(ms->llc_queue()->size() == 2); */ + OSMO_ASSERT(ms->llc_queue()->size() == 2); printf("=== end %s ===\n", __func__); } -- cgit v1.2.3