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.orgPau Espin Pedrol has submitted this change and it was merged.
Change subject: osmux_snprintf: Split logic parsing osmux header and AMR payload
......................................................................
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(-)
Approvals:
Harald Welte: Looks good to me, approved
Jenkins Builder: Verified
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: merged
Gerrit-Change-Id: Ic2f4d1d3cc88af912bb43c8ecd90eacc6ff7190f
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso <pablo at gnumonks.org>
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>