diff options
author | Aravind Sirsikar <arvind.sirsikar@radisys.com> | 2016-09-15 17:24:49 +0530 |
---|---|---|
committer | Aravind Sirsikar <arvind.sirsikar@radisys.com> | 2016-09-15 17:24:49 +0530 |
commit | 22a901905c9749b03fceccda4d550f3da799d524 (patch) | |
tree | 16ab25248b1dd773a7cf14c8f3aaaeaed7eb5a3b /src/decoding.cpp | |
parent | 3463bd4adc1598462560ed84da837d04d0e8e20c (diff) |
EGPRS: Fix issue with row 4 of Table 10.4.14a.1 of 44.060 version 7.27.0 Release 7
row 4 of Table 10.4.14a.1 of Spec 44.060 version 7.27.0 Release 7. Says
"The previous RLC data block contains a Upper Layer PDU, or a part of it,
that fills precisely the previous data block and for which there is no
length indicator in that RLC data block.
The current RLC data block contains a Upper Layer PDU that either fills
the current RLC data block precisely or continues in the next RLC data block."
So when we receive block with 1st LI: value=0 and Value of E bit in the
same octet as 1, we expect 2 chunks with 1st chunk as length as 0 and complete
and 2nd chunk as length non zero. But with this bug we see only 1 chunk causing
incorrect assembling
This issue has been fixed in this patch.
Related: OS#1811
Change-Id: I2cd0fca3ed28a553ede3f4b8a7d3267284dd2c9b
Diffstat (limited to 'src/decoding.cpp')
-rw-r--r-- | src/decoding.cpp | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/decoding.cpp b/src/decoding.cpp index 7c00ff71..3f5c4d27 100644 --- a/src/decoding.cpp +++ b/src/decoding.cpp @@ -67,14 +67,11 @@ static int parse_extensions_egprs(const uint8_t *data, unsigned int data_len, "but no more chunks possible\n"); return -ENOSPC; } - if (li->li == 0 && num_chunks == 0 && li->e == 0) { + if (li->li == 0 && num_chunks == 0) { /* TS 44.060, table 10.4.14a.1, row 2a */ + /* TS 44.060, table 10.4.14a.1, row 4 */ chunks[num_chunks].length = 0; chunks[num_chunks].is_complete = true; - } else if (li->li == 0 && num_chunks == 0 && li->e == 1) { - /* TS 44.060, table 10.4.14a.1, row 4 */ - chunks[num_chunks].length = LENGTH_TO_END; - chunks[num_chunks].is_complete = is_last_block; } else if (li->li == 127 && li->e == 1) { /* TS 44.060, table 10.4.14a.1, row 3 & 5 */ /* only filling bytes left */ |