diff --git a/daemon/t38.c b/daemon/t38.c index 95ecf1115..15d0f3f61 100644 --- a/daemon/t38.c +++ b/daemon/t38.c @@ -580,7 +580,7 @@ int t38_gateway_input_udptl(struct t38_gateway *tg, const str *buf) { // get seq num uint16_t seq; if (str_shift_ret(&s, 2, &piece)) - goto err; + goto err_nolock; seq = ntohs(*((uint16_t *) piece.s)); err = "Invalid primary UDPTL packet"; @@ -593,7 +593,7 @@ int t38_gateway_input_udptl(struct t38_gateway *tg, const str *buf) { err = "Error correction mode byte missing"; if (str_shift_ret(&s, 1, &piece)) - goto err; + goto err_nolock; char fec = piece.s[0]; mutex_lock(&tg->lock); @@ -756,6 +756,8 @@ out: return 0; err: + mutex_unlock(&tg->lock); +err_nolock: if (err) ilog(LOG_ERR | LOG_FLAG_LIMIT, "Failed to process UDPTL/T.38/IFP packet: %s", err); if (up)