This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/4385 osmux_snprintf: Split logic parsing osmux header and AMR payload The current code still expects to parse only AMR osmux frames, but that will be fixed in following patches. Change-Id: Ic2f4d1d3cc88af912bb43c8ecd90eacc6ff7190f --- M src/osmux.c 1 file changed, 13 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/85/4385/1 diff --git a/src/osmux.c b/src/osmux.c index 7290d99..cad4c5d 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -896,10 +896,11 @@ int osmux_snprintf(char *buf, size_t size, struct msgb *msg) { unsigned int remain = size; - int this_len, msg_off = 0; + unsigned int msg_off = 0; struct osmux_hdr *osmuxh; unsigned int offset = 0; int msg_len = msg->len; + uint32_t payload_len; int ret; if (size) @@ -914,20 +915,21 @@ } osmuxh = (struct osmux_hdr *)((uint8_t *)msg->data + msg_off); + ret = osmux_snprintf_header(buf + offset, remain, osmuxh); + SNPRINTF_BUFFER_SIZE(ret, remain, offset); + + msg_off += sizeof(struct osmux_hdr); + msg_len -= sizeof(struct osmux_hdr); + if (!osmo_amr_ft_valid(osmuxh->amr_ft)) { LOGP(DLMIB, LOGL_ERROR, "Bad AMR FT %d, skipping\n", osmuxh->amr_ft); return -1; } - ret = osmux_snprintf_header(buf + offset, remain, osmuxh); - SNPRINTF_BUFFER_SIZE(ret, remain, offset); + payload_len = osmux_get_payload_len(osmuxh); - this_len = sizeof(struct osmux_hdr) + - osmux_get_payload_len(osmuxh); - msg_off += this_len; - - if (msg_len < this_len) { + if (msg_len < payload_len) { LOGP(DLMIB, LOGL_ERROR, "No room for OSMUX payload: only %d bytes\n", msg_len); @@ -936,10 +938,11 @@ ret = osmux_snprintf_payload(buf + offset, remain, osmux_get_payload(osmuxh), - osmux_get_payload_len(osmuxh)); + payload_len); SNPRINTF_BUFFER_SIZE(ret, remain, offset); - msg_len -= this_len; + msg_off += payload_len; + msg_len -= payload_len; } return offset; -- To view, visit https://gerrit.osmocom.org/4385 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic2f4d1d3cc88af912bb43c8ecd90eacc6ff7190f Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>