Attention is currently required from: daniel, fixeria, laforge.
Hello Jenkins Builder, daniel, fixeria, laforge,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/41911?usp=email
to look at the new patch set (#7).
The following approvals got outdated and were removed: Code-Review+1 by fixeria, Verified+1 by Jenkins Builder
Change subject: osmo_io: Support rx of segments up to ~UINT16_MAX ......................................................................
osmo_io: Support rx of segments up to ~UINT16_MAX
Previously if we recevied a big chunk (near UINT16_MAX), we would hit the following assert in iofd_msgb_alloc2(), because our msgb implementation can only handle sizes up to 16 bit length, counting headroom + data length: "OSMO_ASSERT(size + headroom <= 0xffff);".
This new improved logic allows handling segments of up to ~UINT16_MAX which may come in in multiple read calls. It also adds logic to catch received segments greater than UINT16_MAX (or buggy segment_cb or buggy peer transmitting to us) and notifies the user of a broken stream through read_cb() in that case.
test_segmentation_uint16_max() is added to osmo_io_test, which would abort without this patch applied.
Related: SYS#7842 Change-Id: I8c11a7edbed2335ada40a1f93d081041974c3586 --- M src/core/osmo_io.c M tests/osmo_io/osmo_io_test.c M tests/osmo_io/osmo_io_test.err M tests/osmo_io/osmo_io_test.ok 4 files changed, 602 insertions(+), 34 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/11/41911/7