Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 881480 Details for
Bug 921243
net-misc/asterisk-16.30: Iax2 - auto_congest: Auto-congesting call due to slow response
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
0001-chan_iax2-Fix-jitterbuffer-regression-prior-to-recei.patch
0001-chan_iax2-Fix-jitterbuffer-regression-prior-to-recei.patch (text/plain), 2.41 KB, created by
Jaco Kroon
on 2024-01-04 18:21:38 UTC
(
hide
)
Description:
0001-chan_iax2-Fix-jitterbuffer-regression-prior-to-recei.patch
Filename:
MIME Type:
Creator:
Jaco Kroon
Created:
2024-01-04 18:21:38 UTC
Size:
2.41 KB
patch
obsolete
>From 73103bdcd5b342ce5dfa32039333ffadad551151 Mon Sep 17 00:00:00 2001 >From: Naveen Albert <asterisk@phreaknet.org> >Date: Wed, 14 Dec 2022 16:00:51 +0000 >Subject: [PATCH] chan_iax2: Fix jitterbuffer regression prior to receiving > audio. > >ASTERISK_29392 (a security fix) introduced a regression by >not processing frames when we don't have an audio format. > >Currently, chan_iax2 only calls jb_get to read frames from >the jitterbuffer when the voiceformat has been set on the pvt. >However, this only happens when we receive a voice frame, which >means that prior to receiving voice frames, other types of frames >get stalled completely in the jitterbuffer. > >To fix this, we now fallback to using the format negotiated during >call setup until we've actually received a voice frame with a format. >This ensures we're always able to read from the jitterbuffer. > >ASTERISK-30354 #close >ASTERISK-30162 #close > >Change-Id: Ie4fd1e8e088a145ad89e0427c2100a530e964fe9 >--- > channels/chan_iax2.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > >diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c >index ab6bd61638..5b3caf03b5 100644 >--- a/channels/chan_iax2.c >+++ b/channels/chan_iax2.c >@@ -4158,9 +4158,19 @@ static void __get_from_jb(const void *p) > now.tv_usec += 1000; > > ms = ast_tvdiff_ms(now, pvt->rxcore); >- >- voicefmt = ast_format_compatibility_bitfield2format(pvt->voiceformat); >- if (voicefmt && ms >= (next = jb_next(pvt->jb))) { >+ if (ms >= (next = jb_next(pvt->jb))) { >+ voicefmt = ast_format_compatibility_bitfield2format(pvt->voiceformat); >+ if (!voicefmt) { >+ /* pvt->voiceformat won't be set if we haven't received any voice frames yet. >+ * In this case, fall back to using the format negotiated during call setup, >+ * so we don't stall the jitterbuffer completely. */ >+ voicefmt = ast_format_compatibility_bitfield2format(pvt->peerformat); >+ } >+ if (!voicefmt) { >+ /* Really shouldn't happen, but if it does, should be looked into */ >+ ast_log(LOG_WARNING, "No voice format and no peer format available on %s, backlogging frame\n", ast_channel_name(pvt->owner)); >+ goto cleanup; /* Don't crash if there's no voice format */ >+ } > ret = jb_get(pvt->jb, &frame, ms, ast_format_get_default_ms(voicefmt)); > switch(ret) { > case JB_OK: >@@ -4202,6 +4212,7 @@ static void __get_from_jb(const void *p) > break; > } > } >+cleanup: > if (pvt) > update_jbsched(pvt); > ast_mutex_unlock(&iaxsl[callno]); >-- >2.41.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 921243
: 881480