diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-07-02 17:16:07 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-07-02 17:16:07 +0200 |
commit | 3d6815abd1b2c793ef0584add638b64efdeb2d96 (patch) | |
tree | b15eb9b9af8e32354f77f03a5a4d745d798000a0 | |
parent | 36f1217f32d1f2abe699dfe8f3fe492f67dba783 (diff) |
[SGSN] SNDCP: Subtract SNDCP header from fragment length
We don't want to store too many bytes as we would otherwise create
too large re-assembled packets..
-rw-r--r-- | openbsc/src/gprs/gprs_sndcp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/openbsc/src/gprs/gprs_sndcp.c b/openbsc/src/gprs/gprs_sndcp.c index a38bf9140..387c61972 100644 --- a/openbsc/src/gprs/gprs_sndcp.c +++ b/openbsc/src/gprs/gprs_sndcp.c @@ -80,7 +80,7 @@ LLIST_HEAD(gprs_sndcp_entities); /* Enqueue a fragment into the defragment queue */ static int defrag_enqueue(struct gprs_sndcp_entity *sne, uint8_t seg_nr, - uint32_t data_len, uint8_t *data) + uint8_t *data, uint32_t data_len) { struct defrag_queue_entry *dqe; @@ -237,7 +237,8 @@ static int defrag_input(struct gprs_sndcp_entity *sne, struct msgb *msg, uint8_t } /* FIXME: check if seg_nr already exists */ - rc = defrag_enqueue(sne, suh->seg_nr, len, data); + /* make sure to subtract length of SNDCP header from 'len' */ + rc = defrag_enqueue(sne, suh->seg_nr, data, len - (data - hdr)); if (rc < 0) return rc; |