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.