mgcp_send(): stop looping on conversion error
If mgcp_send() runs a transcoder loop, break the loop if rfc5993_hr_convert()
or amr_oa_bwe_convert() return with error. Possibly fixes an infinite loop
situation for erratic packets? (Didn't check for that in detail.)
Change-Id: Iba115a0b1d74e7cefba5dcdd777e98ddea9eba8c
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index 8b441cb..c4b9ce6 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -868,13 +868,23 @@
addr, buf, buflen);
if (amr_oa_bwe_convert_indicated(conn_dst->end.codec)) {
- amr_oa_bwe_convert(endp, buf, &buflen,
- conn_dst->end.codec->param.amr_octet_aligned);
+ rc = amr_oa_bwe_convert(endp, buf, &buflen,
+ conn_dst->end.codec->param.amr_octet_aligned);
+ if (rc < 0) {
+ LOGPENDP(endp, DRTP, LOGL_ERROR,
+ "Error in AMR octet-aligned <-> bandwidth-efficient mode conversion\n");
+ break;
+ }
}
else if (rtp_end->rfc5993_hr_convert
&& strcmp(conn_src->end.codec->subtype_name,
- "GSM-HR-08") == 0)
- rfc5993_hr_convert(endp, buf, &buflen);
+ "GSM-HR-08") == 0) {
+ rc = rfc5993_hr_convert(endp, buf, &buflen);
+ if (rc < 0) {
+ LOGPENDP(endp, DRTP, LOGL_ERROR, "Error while converting to GSM-HR-08\n");
+ break;
+ }
+ }
LOGPENDP(endp, DRTP, LOGL_DEBUG,
"process/send to %s %s "