From 828cd9c5d84f3fecd881d29e87f992b5050606cd Mon Sep 17 00:00:00 2001 From: Alexandre Fournier Date: Fri, 23 Jan 2026 15:28:55 -0500 Subject: [PATCH 1/2] asterisk-23.2.0: update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4d72f79..f9dc8cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +asterisk (8:23.2.0-1~wazo) wazo-dev-bookworm; urgency=medium + + * asterisk 23.2.0 + + -- Wazo Maintainers Fri, 23 Jan 2026 15:14:04 -0500 + asterisk (8:22.6.0-1~wazo3) wazo-dev-bookworm; urgency=medium * create fax directory From 0242cc15e1d1bfd8f68f0e4af8cbd43a145267f3 Mon Sep 17 00:00:00 2001 From: Alexandre Fournier Date: Fri, 23 Jan 2026 15:28:37 -0500 Subject: [PATCH 2/2] asterisk-23.2.0: update patches --- debian/patches/deb_astgenkey-security | 6 +- debian/patches/deb_make-clean-fixes | 10 +- debian/patches/expose-app-queues-mutex | 16 +- .../patches/fix-application-playback-update | 6 +- debian/patches/fix-invalid-moh | 6 +- debian/patches/fix-queue-deadlock | 58 +++--- debian/patches/increase-max-sdp-media | 6 +- debian/patches/mix_monitor_announce_file | 38 ++-- debian/patches/mixmonitor_close_beep_file | 10 +- .../wazo_ari_expose_voicemail_functions | 74 +++---- debian/patches/wazo_banner | 8 +- debian/patches/wazo_bridge_variables | 74 +++---- debian/patches/wazo_mixmonitor_events | 64 +++---- debian/patches/wazo_sip_mobility | 28 +-- debian/patches/wazo_stun_recurring_resolution | 26 +-- .../patches/xivo_agent_complete_ast11_compat | 10 +- debian/patches/xivo_agent_complete_wrapup | 16 +- debian/patches/xivo_ari_events_moh | 38 ++-- .../patches/xivo_ari_set_channel_var_bypass | 24 +-- debian/patches/xivo_ccss_exten_context_var | 10 +- debian/patches/xivo_channel_check_lock | 16 +- .../patches/xivo_dtmf_workaround_when_no_rtp | 6 +- debian/patches/xivo_dtmf_xfer_plus | 14 +- debian/patches/xivo_queue_agent_talking | 14 +- .../xivo_queue_caller_leave_ast11_compat | 14 +- debian/patches/xivo_queue_digits_gender | 10 +- ...o_queue_update_queue_before_agent_complete | 12 +- debian/patches/xivo_senddigit_begin | 8 +- debian/patches/xivo_skill_queues | 180 +++++++++--------- 29 files changed, 401 insertions(+), 401 deletions(-) diff --git a/debian/patches/deb_astgenkey-security b/debian/patches/deb_astgenkey-security index d0c34f7..7ee6900 100644 --- a/debian/patches/deb_astgenkey-security +++ b/debian/patches/deb_astgenkey-security @@ -6,10 +6,10 @@ Last-Update: 2009-12-19 Upstream has not accepted this patch and chose intead to document this as a known minor issue. -Index: asterisk-22.6.0/contrib/scripts/astgenkey +Index: asterisk-23.2.0/contrib/scripts/astgenkey =================================================================== ---- asterisk-22.6.0.orig/contrib/scripts/astgenkey -+++ asterisk-22.6.0/contrib/scripts/astgenkey +--- asterisk-23.2.0.orig/contrib/scripts/astgenkey ++++ asterisk-23.2.0/contrib/scripts/astgenkey @@ -47,7 +47,11 @@ done rm -f ${KEY}.key ${KEY}.pub diff --git a/debian/patches/deb_make-clean-fixes b/debian/patches/deb_make-clean-fixes index b4aa6f8..6cad69c 100644 --- a/debian/patches/deb_make-clean-fixes +++ b/debian/patches/deb_make-clean-fixes @@ -3,11 +3,11 @@ Author: Faidon Liambotis Forwarded: not-needed Last-Update: 2009-12-19 -Index: asterisk-22.6.0/Makefile +Index: asterisk-23.2.0/Makefile =================================================================== ---- asterisk-22.6.0.orig/Makefile -+++ asterisk-22.6.0/Makefile -@@ -443,7 +443,6 @@ dist-clean: distclean +--- asterisk-23.2.0.orig/Makefile ++++ asterisk-23.2.0/Makefile +@@ -447,7 +447,6 @@ dist-clean: distclean distclean: $(SUBDIRS_DIST_CLEAN) _clean @$(MAKE) -C menuselect dist-clean @@ -15,7 +15,7 @@ Index: asterisk-22.6.0/Makefile rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps rm -f config.log config.status config.cache rm -rf autom4te.cache -@@ -453,6 +452,10 @@ distclean: $(SUBDIRS_DIST_CLEAN) _clean +@@ -457,6 +456,10 @@ distclean: $(SUBDIRS_DIST_CLEAN) _clean rm -f doc/Doxyfile rm -f build_tools/menuselect-deps diff --git a/debian/patches/expose-app-queues-mutex b/debian/patches/expose-app-queues-mutex index 229920d..cede811 100644 --- a/debian/patches/expose-app-queues-mutex +++ b/debian/patches/expose-app-queues-mutex @@ -1,8 +1,8 @@ -Index: asterisk-22.6.0/apps/app_queue.c +Index: asterisk-23.2.0/apps/app_queue.c =================================================================== ---- asterisk-22.6.0.orig/apps/app_queue.c -+++ asterisk-22.6.0/apps/app_queue.c -@@ -2212,6 +2212,9 @@ static int op_value_get(struct op_value +--- asterisk-23.2.0.orig/apps/app_queue.c ++++ asterisk-23.2.0/apps/app_queue.c +@@ -2172,6 +2172,9 @@ static int op_value_get(struct op_value static void op_value_set(struct op_value *op_value, int value); static void op_value_undef(struct op_value *op_value); @@ -12,7 +12,7 @@ Index: asterisk-22.6.0/apps/app_queue.c /*! \brief sets the QUEUESTATUS channel variable */ static void set_queue_result(struct ast_channel *chan, enum queue_result res) { -@@ -13466,6 +13469,11 @@ static void op_value_undef(struct op_val +@@ -13383,6 +13386,11 @@ static void op_value_undef(struct op_val op_value->defined = 0; } @@ -24,7 +24,7 @@ Index: asterisk-22.6.0/apps/app_queue.c static struct ast_cli_entry cli_queue[] = { AST_CLI_DEFINE(queue_show, "Show status of a specified queue"), AST_CLI_DEFINE(handle_queue_rule_show, "Show the rules defined in queuerules.conf"), -@@ -13712,7 +13720,7 @@ static int load_module(void) +@@ -13627,7 +13635,7 @@ static int load_module(void) return AST_MODULE_LOAD_SUCCESS; } @@ -33,10 +33,10 @@ Index: asterisk-22.6.0/apps/app_queue.c .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, -Index: asterisk-22.6.0/apps/app_queue.exports.in +Index: asterisk-23.2.0/apps/app_queue.exports.in =================================================================== --- /dev/null -+++ asterisk-22.6.0/apps/app_queue.exports.in ++++ asterisk-23.2.0/apps/app_queue.exports.in @@ -0,0 +1,6 @@ +{ + global: diff --git a/debian/patches/fix-application-playback-update b/debian/patches/fix-application-playback-update index efc605e..2f07ab2 100644 --- a/debian/patches/fix-application-playback-update +++ b/debian/patches/fix-application-playback-update @@ -1,7 +1,7 @@ -Index: asterisk-22.6.0/res/res_stasis_playback.c +Index: asterisk-23.2.0/res/res_stasis_playback.c =================================================================== ---- asterisk-22.6.0.orig/res/res_stasis_playback.c -+++ asterisk-22.6.0/res/res_stasis_playback.c +--- asterisk-23.2.0.orig/res/res_stasis_playback.c ++++ asterisk-23.2.0/res/res_stasis_playback.c @@ -344,7 +344,8 @@ static void play_on_channel(struct stasi if (!recording) { ast_log(LOG_ERROR, "Attempted to play recording '%s' on channel '%s' but recording does not exist", diff --git a/debian/patches/fix-invalid-moh b/debian/patches/fix-invalid-moh index 40955a7..f041221 100644 --- a/debian/patches/fix-invalid-moh +++ b/debian/patches/fix-invalid-moh @@ -1,7 +1,7 @@ -Index: asterisk-22.6.0/res/res_musiconhold.c +Index: asterisk-23.2.0/res/res_musiconhold.c =================================================================== ---- asterisk-22.6.0.orig/res/res_musiconhold.c -+++ asterisk-22.6.0/res/res_musiconhold.c +--- asterisk-23.2.0.orig/res/res_musiconhold.c ++++ asterisk-23.2.0/res/res_musiconhold.c @@ -413,7 +413,9 @@ static int moh_files_next(struct ast_cha state->samples = 0; } diff --git a/debian/patches/fix-queue-deadlock b/debian/patches/fix-queue-deadlock index d112c7d..f5c6408 100644 --- a/debian/patches/fix-queue-deadlock +++ b/debian/patches/fix-queue-deadlock @@ -1,8 +1,8 @@ -Index: asterisk-22.6.0/apps/app_queue.c +Index: asterisk-23.2.0/apps/app_queue.c =================================================================== ---- asterisk-22.6.0.orig/apps/app_queue.c -+++ asterisk-22.6.0/apps/app_queue.c -@@ -1991,6 +1991,15 @@ struct skills_group { +--- asterisk-23.2.0.orig/apps/app_queue.c ++++ asterisk-23.2.0/apps/app_queue.c +@@ -1951,6 +1951,15 @@ struct skills_group { static AST_LIST_HEAD_STATIC(skills_groups, skills_group); @@ -18,7 +18,7 @@ Index: asterisk-22.6.0/apps/app_queue.c struct member { char interface[AST_CHANNEL_NAME]; /*!< Technology/Location to dial to reach this member*/ char state_exten[AST_MAX_EXTENSION]; /*!< Extension to get state from (if using hint) */ -@@ -2019,6 +2028,7 @@ struct member { +@@ -1979,6 +1988,7 @@ struct member { unsigned int delme:1; /*!< Flag to delete entry on reload */ char rt_uniqueid[80]; /*!< Unique id of realtime member entry */ unsigned int ringinuse:1; /*!< Flag to ring queue members even if their status is 'inuse' */ @@ -26,7 +26,7 @@ Index: asterisk-22.6.0/apps/app_queue.c }; enum empty_conditions { -@@ -2172,6 +2182,18 @@ static AST_LIST_HEAD_STATIC(rule_lists, +@@ -2132,6 +2142,18 @@ static AST_LIST_HEAD_STATIC(rule_lists, static struct ao2_container *queues; @@ -45,7 +45,7 @@ Index: asterisk-22.6.0/apps/app_queue.c static void update_realtime_members(struct call_queue *q); static struct member *interface_exists(struct call_queue *q, const char *interface); static int set_member_paused(const char *queuename, const char *interface, const char *reason, int paused); -@@ -2736,11 +2758,11 @@ static struct ast_json *queue_member_blo +@@ -2696,11 +2718,11 @@ static struct ast_json *queue_member_blo "StateInterface", mem->state_interface, "Membership", (mem->dynamic ? "dynamic" : (mem->realtime ? "realtime" : "static")), "Penalty", mem->penalty, @@ -60,7 +60,7 @@ Index: asterisk-22.6.0/apps/app_queue.c "Status", mem->status, "Paused", mem->paused, "PausedReason", mem->reason_paused, -@@ -2822,11 +2844,11 @@ static int get_member_status(struct call +@@ -2782,11 +2804,11 @@ static int get_member_status(struct call ast_debug(4, "%s is unavailable because he is paused'\n", member->membername); break; } else if ((conditions & QUEUE_EMPTY_WRAPUP) @@ -75,7 +75,7 @@ Index: asterisk-22.6.0/apps/app_queue.c break; } else { ao2_ref(member, -1); -@@ -2926,7 +2948,7 @@ static void update_status(struct call_qu +@@ -2886,7 +2908,7 @@ static void update_status(struct call_qu * considered done and the call finished. */ if (status == AST_DEVICE_NOT_INUSE) { @@ -84,7 +84,7 @@ Index: asterisk-22.6.0/apps/app_queue.c } m->status = status; -@@ -2954,6 +2976,7 @@ static int is_member_available(struct ca +@@ -2914,6 +2936,7 @@ static int is_member_available(struct ca { int available = 0; int wrapuptime; @@ -92,7 +92,7 @@ Index: asterisk-22.6.0/apps/app_queue.c switch (mem->status) { case AST_DEVICE_INVALID: -@@ -2979,7 +3002,8 @@ static int is_member_available(struct ca +@@ -2939,7 +2962,8 @@ static int is_member_available(struct ca /* Let wrapuptimes override device state availability */ wrapuptime = get_wrapuptime(q, mem); @@ -102,7 +102,7 @@ Index: asterisk-22.6.0/apps/app_queue.c available = 0; } return available; -@@ -3207,12 +3231,28 @@ static void destroy_queue_member_cb(void +@@ -3167,12 +3191,28 @@ static void destroy_queue_member_cb(void if (mem->state_id != -1) { ast_extension_state_del(mem->state_id, extension_state_cb); } @@ -132,7 +132,7 @@ Index: asterisk-22.6.0/apps/app_queue.c if ((cur = ao2_alloc(sizeof(*cur), destroy_queue_member_cb))) { cur->ringinuse = ringinuse; -@@ -3253,6 +3293,34 @@ static struct member *create_queue_membe +@@ -3213,6 +3253,34 @@ static struct member *create_queue_membe ast_copy_string(cur->skills, skills, sizeof(cur->skills)); else cur->skills[0] = '\0'; @@ -167,7 +167,7 @@ Index: asterisk-22.6.0/apps/app_queue.c } return cur; -@@ -3413,10 +3481,10 @@ static void clear_queue(struct call_queu +@@ -3373,10 +3441,10 @@ static void clear_queue(struct call_queu struct member *mem; struct ao2_iterator mem_iter = ao2_iterator_init(q->members, 0); while ((mem = ao2_iterator_next(&mem_iter))) { @@ -182,7 +182,7 @@ Index: asterisk-22.6.0/apps/app_queue.c ao2_ref(mem, -1); } ao2_iterator_destroy(&mem_iter); -@@ -5074,6 +5142,7 @@ static int member_status_available(int s +@@ -5034,6 +5102,7 @@ static int member_status_available(int s static int can_ring_entry(struct queue_ent *qe, struct callattempt *call, int *busies) { struct member *memberp = call->member; @@ -190,7 +190,7 @@ Index: asterisk-22.6.0/apps/app_queue.c int wrapuptime; if (memberp->paused) { -@@ -5086,14 +5155,14 @@ static int can_ring_entry(struct queue_e +@@ -5046,14 +5115,14 @@ static int can_ring_entry(struct queue_e return 0; } @@ -209,7 +209,7 @@ Index: asterisk-22.6.0/apps/app_queue.c call->interface); return 0; } -@@ -5556,8 +5625,8 @@ static void rna(int rnatime, struct queu +@@ -5516,8 +5585,8 @@ static void rna(int rnatime, struct queu struct member *mem; ao2_lock(qe->parent); if ((mem = interface_exists(qe->parent, interface))) { @@ -220,7 +220,7 @@ Index: asterisk-22.6.0/apps/app_queue.c ao2_unlock(qe->parent); ao2_ref(mem, -1); return; -@@ -6397,6 +6466,141 @@ static int wait_our_turn(struct queue_en +@@ -6357,6 +6426,141 @@ static int wait_our_turn(struct queue_en } /*! @@ -362,7 +362,7 @@ Index: asterisk-22.6.0/apps/app_queue.c * \brief update the queue status * \retval 0 always */ -@@ -6404,43 +6608,23 @@ static int update_queue(struct call_queu +@@ -6364,43 +6568,23 @@ static int update_queue(struct call_queu { int oldtalktime; int newtalktime = time(NULL) - starttime; @@ -415,7 +415,7 @@ Index: asterisk-22.6.0/apps/app_queue.c /* Member might never experience any direct status change (local * channel with forwarding in particular). If that's the case, * this is the last chance to remove it from pending or subsequent -@@ -6532,14 +6716,14 @@ static int calc_metric(struct call_queue +@@ -6492,14 +6676,14 @@ static int calc_metric(struct call_queue tmp->metric = ast_random() % ((1 + penalty) * 1000); break; case QUEUE_STRATEGY_FEWESTCALLS: @@ -433,7 +433,7 @@ Index: asterisk-22.6.0/apps/app_queue.c } tmp->metric += penalty * 1000000 * usepenalty; break; -@@ -7626,7 +7810,8 @@ static int try_calling(struct queue_ent +@@ -7594,7 +7778,8 @@ static int try_calling(struct queue_ent recalc_holdtime(qe, (now - qe->start)); member = lpeer->member; ao2_lock(qe->parent); @@ -443,7 +443,7 @@ Index: asterisk-22.6.0/apps/app_queue.c ao2_unlock(qe->parent); /* Increment the refcount for this member, since we're going to be using it for awhile in here. */ ao2_ref(member, 1); -@@ -7735,7 +7920,7 @@ static int try_calling(struct queue_ent +@@ -7703,7 +7888,7 @@ static int try_calling(struct queue_ent /* use pbx_builtin_setvar to set a load of variables with one call */ if (qe->parent->setinterfacevar && interfacevar) { ast_str_set(&interfacevar, 0, "MEMBERINTERFACE=%s,MEMBERNAME=%s,MEMBERCALLS=%d,MEMBERLASTCALL=%ld,MEMBERPENALTY=%d,MEMBERDYNAMIC=%d,MEMBERREALTIME=%d", @@ -452,7 +452,7 @@ Index: asterisk-22.6.0/apps/app_queue.c pbx_builtin_setvar_multiple(qe->chan, ast_str_buffer(interfacevar)); pbx_builtin_setvar_multiple(peer, ast_str_buffer(interfacevar)); } -@@ -7859,8 +8044,8 @@ static int try_calling(struct queue_ent +@@ -7827,8 +8012,8 @@ static int try_calling(struct queue_ent } ao2_lock(qe->parent); @@ -463,7 +463,7 @@ Index: asterisk-22.6.0/apps/app_queue.c ao2_unlock(qe->parent); /* As a queue member may end up in multiple calls at once if a transfer occurs with * a Local channel in the mix we pass the current call information (starttime) to the -@@ -9593,7 +9778,7 @@ static int queue_function_mem_read(struc +@@ -9560,7 +9745,7 @@ static int queue_function_mem_read(struc while ((m = ao2_iterator_next(&mem_iter))) { /* Count the agents who are logged in, not paused and not wrapping up */ if ((m->status == AST_DEVICE_NOT_INUSE) && (!m->paused) && @@ -472,7 +472,7 @@ Index: asterisk-22.6.0/apps/app_queue.c count++; } ao2_ref(m, -1); -@@ -10267,8 +10452,8 @@ static void reload_single_member(const c +@@ -10184,8 +10369,8 @@ static void reload_single_member(const c /* Round Robin Queue Position must be copied if this is replacing an existing member */ newm->queuepos = cur->queuepos; /* Don't reset agent stats either */ @@ -483,7 +483,7 @@ Index: asterisk-22.6.0/apps/app_queue.c ao2_link(q->members, newm); ao2_unlink(q->members, cur); -@@ -10647,7 +10832,7 @@ static void print_queue(struct mansessio +@@ -10564,7 +10749,7 @@ static void print_queue(struct mansessio ast_str_append(&out, 0, "%s%s%s%s%s%s%s%s%s", mem->dynamic ? ast_term_color(COLOR_CYAN, COLOR_BLACK) : "", mem->dynamic ? " (dynamic)" : "", ast_term_reset(), mem->realtime ? ast_term_color(COLOR_MAGENTA, COLOR_BLACK) : "", mem->realtime ? " (realtime)" : "", ast_term_reset(), @@ -492,7 +492,7 @@ Index: asterisk-22.6.0/apps/app_queue.c if (mem->paused) { ast_str_append(&out, 0, " %s(paused%s%s was %ld secs ago)%s", -@@ -10665,9 +10850,9 @@ static void print_queue(struct mansessio +@@ -10582,9 +10767,9 @@ static void print_queue(struct mansessio ast_devstate2str(mem->status), ast_term_reset()); if (!ast_strlen_zero(mem->skills)) ast_str_append(&out, 0, " (skills: %s)", mem->skills); @@ -504,7 +504,7 @@ Index: asterisk-22.6.0/apps/app_queue.c } else { ast_str_append(&out, 0, " has taken no calls yet"); } -@@ -11165,7 +11350,7 @@ static int manager_queues_status(struct +@@ -11082,7 +11267,7 @@ static int manager_queues_status(struct "%s" "\r\n", q->name, mem->membername, mem->interface, mem->state_interface, mem->dynamic ? "dynamic" : "static", @@ -513,7 +513,7 @@ Index: asterisk-22.6.0/apps/app_queue.c mem->paused, mem->reason_paused, mem->wrapuptime, mem->skills, idText); ++q_items; } -@@ -12264,17 +12449,16 @@ static int qupd_exec(struct ast_channel +@@ -12181,17 +12366,16 @@ static int qupd_exec(struct ast_channel if (!strcasecmp(args.status, "ANSWER")) { oldtalktime = q->talktime; q->talktime = (((oldtalktime << 2) - oldtalktime) + newtalktime) >> 2; diff --git a/debian/patches/increase-max-sdp-media b/debian/patches/increase-max-sdp-media index a77e50f..3394fd9 100644 --- a/debian/patches/increase-max-sdp-media +++ b/debian/patches/increase-max-sdp-media @@ -1,7 +1,7 @@ -Index: asterisk-22.6.0/third-party/pjproject/patches/config_site.h +Index: asterisk-23.2.0/third-party/pjproject/patches/config_site.h =================================================================== ---- asterisk-22.6.0.orig/third-party/pjproject/patches/config_site.h -+++ asterisk-22.6.0/third-party/pjproject/patches/config_site.h +--- asterisk-23.2.0.orig/third-party/pjproject/patches/config_site.h ++++ asterisk-23.2.0/third-party/pjproject/patches/config_site.h @@ -87,7 +87,7 @@ #define PJMEDIA_MAX_SDP_FMT 72 #define PJMEDIA_MAX_SDP_BANDW 4 diff --git a/debian/patches/mix_monitor_announce_file b/debian/patches/mix_monitor_announce_file index 5b7f191..5964008 100644 --- a/debian/patches/mix_monitor_announce_file +++ b/debian/patches/mix_monitor_announce_file @@ -1,7 +1,7 @@ -Index: asterisk-22.6.0/apps/app_mixmonitor.c +Index: asterisk-23.2.0/apps/app_mixmonitor.c =================================================================== ---- asterisk-22.6.0.orig/apps/app_mixmonitor.c -+++ asterisk-22.6.0/apps/app_mixmonitor.c +--- asterisk-23.2.0.orig/apps/app_mixmonitor.c ++++ asterisk-23.2.0/apps/app_mixmonitor.c @@ -147,10 +147,14 @@ Stores the MixMonitor's ID on this channel variable. @@ -19,7 +19,7 @@ Index: asterisk-22.6.0/apps/app_mixmonitor.c