summaryrefslogtreecommitdiff
path: root/comms
diff options
context:
space:
mode:
authorjnemeth <jnemeth>2013-12-23 01:34:03 +0000
committerjnemeth <jnemeth>2013-12-23 01:34:03 +0000
commit87dd13225b54ca3337397890b5544b5ab9b320a4 (patch)
tree1dd16a6d9655f6d86402603a882b02fd9df830aa /comms
parent5b5ec2b2a8cb80fdad40d1afc620054997446181 (diff)
downloadpkgsrc-87dd13225b54ca3337397890b5544b5ab9b320a4.tar.gz
Update to Asterisk 11.6.1: this is a security fix update to fix
AST-2013-006 and AST-2013-007, and a minor bug fix update. pkgsrc change: disable SRTP on NetBSD as it doesn't link ---- 11.6.1 ---- The Asterisk Development Team has announced security releases for Certified Asterisk 1.8.15, 11.2, and Asterisk 1.8, 10, and 11. The available security releases are released as versions 1.8.15-cert4, 11.2-cert3, 1.8.24.1, 10.12.4, 10.12.4-digiumphones, and 11.6.1. The release of these versions resolve the following issues: * A buffer overflow when receiving odd length 16 bit messages in app_sms. An infinite loop could occur which would overwrite memory when a message is received into the unpacksms16() function and the length of the message is an odd number of bytes. * Prevent permissions escalation in the Asterisk Manager Interface. Asterisk now marks certain individual dialplan functions as 'dangerous', which will inhibit their execution from external sources. A 'dangerous' function is one which results in a privilege escalation. For example, if one were to read the channel variable SHELL(rm -rf /) Bad Things(TM) could happen; even if the external source has only read permissions. Execution from external sources may be enabled by setting 'live_dangerously' to 'yes' in the [options] section of asterisk.conf. Although doing so is not recommended. These issues and their resolutions are described in the security advisories. For more information about the details of these vulnerabilities, please read security advisories AST-2013-006 and AST-2013-007, which were released at the same time as this announcement. For a full list of changes in the current releases, please see the ChangeLogs: http://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-11.6.1 The security advisories are available at: * http://downloads.asterisk.org/pub/security/AST-2013-006.pdf * http://downloads.asterisk.org/pub/security/AST-2013-007.pdf Thank you for your continued support of Asterisk! ----- 11.6.0 ----- The Asterisk Development Team has announced the release of Asterisk 11.6.0. The release of Asterisk 11.6.0 resolves several issues reported by the community and would have not been possible without your participation. Thank you! The following is a sample of the issues resolved in this release: * --- Confbridge: empty conference not being torn down (Closes issue ASTERISK-21859. Reported by Chris Gentle) * --- Let Queue wrap up time influence member availability (Closes issue ASTERISK-22189. Reported by Tony Lewis) * --- Fix a longstanding issue with MFC-R2 configuration that prevented users (Closes issue ASTERISK-21117. Reported by Rafael Angulo) * --- chan_iax2: Fix saving the wrong expiry time in astdb. (Closes issue ASTERISK-22504. Reported by Stefan Wachtler) * --- Fix segfault for certain invalid WebSocket input. (Closes issue ASTERISK-21825. Reported by Alfred Farrugia) For a full list of changes in this release, please see the ChangeLog: http://downloads.asterisk.org/pub/telephony/asterisk/ChangeLog-11.6.0 Thank you for your continued support of Asterisk!
Diffstat (limited to 'comms')
-rw-r--r--comms/asterisk/Makefile7
-rw-r--r--comms/asterisk/distinfo23
-rw-r--r--comms/asterisk/patches/patch-apps_app__meetme.c137
-rw-r--r--comms/asterisk/patches/patch-apps_app__queue.c36
-rw-r--r--comms/asterisk/patches/patch-main_format.c17
-rw-r--r--comms/asterisk/patches/patch-main_http.c22
-rw-r--r--comms/asterisk/patches/patch-main_udptl.c19
-rw-r--r--comms/asterisk/patches/patch-res_res__xmpp.c68
8 files changed, 262 insertions, 67 deletions
diff --git a/comms/asterisk/Makefile b/comms/asterisk/Makefile
index 34494d4a8f2..9d3e4777af6 100644
--- a/comms/asterisk/Makefile
+++ b/comms/asterisk/Makefile
@@ -1,13 +1,12 @@
-# $NetBSD: Makefile,v 1.101 2013/10/19 09:07:00 adam Exp $
+# $NetBSD: Makefile,v 1.102 2013/12/23 01:34:03 jnemeth Exp $
#
# NOTE: when updating this package, there are two places that sound
# tarballs need to be checked
-DISTNAME= asterisk-11.5.1
+DISTNAME= asterisk-11.6.1
DIST_SUBDIR= ${PKGNAME_NOREV}
DISTFILES= ${DEFAULT_DISTFILES}
EXTRACT_ONLY= ${DISTNAME}.tar.gz
-PKGREVISION= 3
CATEGORIES= comms net audio
MASTER_SITES= http://downloads.asterisk.org/pub/telephony/asterisk/ \
http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/ \
@@ -37,6 +36,8 @@ CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR}
CONFIGURE_ARGS+= --without-gtk2
# XXX remove when lang/lua gets builtin.mk
CONFIGURE_ARGS+= --without-lua
+#JMN doesn't build properly on NetBSD, remove when -current is fixed
+CONFIGURE_ARGS+= --without-srtp
INSTALL_TARGET= install samples
INSTALLATION_DIRS+= lib/pkgconfig share/doc/${PKGBASE}
diff --git a/comms/asterisk/distinfo b/comms/asterisk/distinfo
index 25f20f95e42..e1bf719e60a 100644
--- a/comms/asterisk/distinfo
+++ b/comms/asterisk/distinfo
@@ -1,16 +1,17 @@
-$NetBSD: distinfo,v 1.60 2013/08/30 05:49:51 jnemeth Exp $
+$NetBSD: distinfo,v 1.61 2013/12/23 01:34:03 jnemeth Exp $
-SHA1 (asterisk-11.5.1/asterisk-11.5.1.tar.gz) = fd2d568dbb6d75be17b141466ee3e276d4910e23
-RMD160 (asterisk-11.5.1/asterisk-11.5.1.tar.gz) = b48db50357cb04d5f32f98ef958c9c2603de5ada
-Size (asterisk-11.5.1/asterisk-11.5.1.tar.gz) = 30580447 bytes
-SHA1 (asterisk-11.5.1/asterisk-extra-sounds-en-gsm-1.4.13.tar.gz) = 3aac6cf4a07cb2644b7b5369c618b07561619f9f
-RMD160 (asterisk-11.5.1/asterisk-extra-sounds-en-gsm-1.4.13.tar.gz) = 5dc9696c54d2233cf74835fe7ccd2c1791f20041
-Size (asterisk-11.5.1/asterisk-extra-sounds-en-gsm-1.4.13.tar.gz) = 4407925 bytes
+SHA1 (asterisk-11.6.1/asterisk-11.6.1.tar.gz) = 84293900e0f504c0cbd85d437c914a9ea9f2f6e8
+RMD160 (asterisk-11.6.1/asterisk-11.6.1.tar.gz) = 75404f8ab834382e24942f5baf4cea390639f143
+Size (asterisk-11.6.1/asterisk-11.6.1.tar.gz) = 34759138 bytes
+SHA1 (asterisk-11.6.1/asterisk-extra-sounds-en-gsm-1.4.13.tar.gz) = 3aac6cf4a07cb2644b7b5369c618b07561619f9f
+RMD160 (asterisk-11.6.1/asterisk-extra-sounds-en-gsm-1.4.13.tar.gz) = 5dc9696c54d2233cf74835fe7ccd2c1791f20041
+Size (asterisk-11.6.1/asterisk-extra-sounds-en-gsm-1.4.13.tar.gz) = 4407925 bytes
SHA1 (patch-Makefile) = ed581d46026e8e89ed8be374c7085efca19911d2
SHA1 (patch-apps_app__confbridge.c) = c815905994355a19c32e8e3e2eb5dc9f1679eb29
SHA1 (patch-apps_app__dial.c) = 0f78d2571af88384a2d472ece08bf4b06f9ad211
SHA1 (patch-apps_app__followme.c) = a54e08d0dd0b6ff12281d4b7b8447707c1cbe20a
-SHA1 (patch-apps_app__queue.c) = 5bdb602a709060a1ffca688830930f1ca6bc5841
+SHA1 (patch-apps_app__meetme.c) = 73485931d63b6482aa549ee73ed6a72ec0e5f9a0
+SHA1 (patch-apps_app__queue.c) = 9d78c6fdaaf7f583f3af8972d32ed3b2c3e67d41
SHA1 (patch-apps_app__skel.c) = e661a53b61d36343c54be7ad9ea6cde6cb10f180
SHA1 (patch-apps_app__sms.c) = d89b27a9df04d4da98d562241c07d25d182baefc
SHA1 (patch-apps_confbridge_conf__config__parser.c) = 42d5a6e2ce837111d06fa9154c7f66403cb83553
@@ -32,18 +33,20 @@ SHA1 (patch-main_acl.c) = 1eac532a15127c25981d2db9462a8ccce2c58620
SHA1 (patch-main_asterisk.c) = df7bcdaeb2fc90f9fdc1b16388fbb5cf7eba141c
SHA1 (patch-main_config__options.c) = e49a946da99546684e8988ca4301bcacbb415987
SHA1 (patch-main_features.c) = 1c11207c60ce53c1101141e07ae04d0ddb838450
+SHA1 (patch-main_format.c) = a6d446c3de883cf3ef768d03d39e8d8db068b750
+SHA1 (patch-main_http.c) = 1d3d6b47d1ced22faf79fb17c56e7a3067b7c892
SHA1 (patch-main_manager.c) = 754c77f373bff93cbd33e907823effc12824dd45
SHA1 (patch-main_named__acl.c) = 48c23ed0e558299679bbfc9e564383f9f7dd181f
SHA1 (patch-main_netsock.c) = 015796266b9806425180c9bb05a1907116ef086d
SHA1 (patch-main_sched.c) = 73759369470b575e73ca78f9cff096ebb477c9b1
SHA1 (patch-main_stdtime_localtime.c) = 1a5fe07f174fc81d1a59e08a8e5768e99ec46da1
-SHA1 (patch-main_udptl.c) = d575d0c6b6fc1eae9623dfd2c27609e74d25a38c
+SHA1 (patch-main_udptl.c) = 260586e4203b4bf51737ba171cbfe57621de8728
SHA1 (patch-main_utils.c) = e509c0ea81624b7404a535a3e8be563ce58039f6
SHA1 (patch-pbx_pbx__dundi.c) = 2823c48d64d2b96abb5cf627045d17282629521b
SHA1 (patch-res_pjproject_aconfigure) = 0095894c5daac2dec6a9ec745c0ecb8d46c0b73a
SHA1 (patch-res_pjproject_aconfigure.ac) = cbabe4a5f1888e180c93404324ddb96728dc20b9
SHA1 (patch-res_pjproject_build.symbian_makedef.sh) = 37781fe307564ad827e9be67f507f84230ebf299
-SHA1 (patch-res_res__xmpp.c) = 456a69a763b280a0e735899689de1facd1cd5a62
+SHA1 (patch-res_res__xmpp.c) = 5296a4f7454e432592a058939c7b0f2e328d53e2
SHA1 (patch-sounds_Makefile) = 792c2e25e1c8334fe8c9038b8b630376a5894c31
SHA1 (patch-tests_test__abstract__jb.c) = 42cfa303fc2e399aa9fe3bebf51464d0776e171c
SHA1 (patch-tests_test__config.c) = fa049dc1fedb8a0c898afa6848406d191acb54d3
diff --git a/comms/asterisk/patches/patch-apps_app__meetme.c b/comms/asterisk/patches/patch-apps_app__meetme.c
new file mode 100644
index 00000000000..8fb6db2bcec
--- /dev/null
+++ b/comms/asterisk/patches/patch-apps_app__meetme.c
@@ -0,0 +1,137 @@
+$NetBSD: patch-apps_app__meetme.c,v 1.1 2013/12/23 01:34:03 jnemeth Exp $
+
+--- apps/app_meetme.c.orig 2013-09-13 13:48:34.000000000 +0000
++++ apps/app_meetme.c
+@@ -5001,6 +5001,8 @@ static int user_chan_cb(void *obj, void
+
+ /*! \brief The MeetMeadmin application
+
++RAII_DECL(struct ast_conf_user *, eject_user, ao2_cleanup);
++
+ MeetMeAdmin(confno, command, caller) */
+ static int admin_exec(struct ast_channel *chan, const char *data) {
+ char *params;
+@@ -5082,7 +5084,7 @@ static int admin_exec(struct ast_channel
+ case 101: /* e: Eject last user*/
+ {
+ int max_no = 0;
+- RAII_VAR(struct ast_conf_user *, eject_user, NULL, ao2_cleanup);
++ RAII_VAR(struct ast_conf_user *, eject_user, NULL);
+
+ ao2_callback(cnf->usercontainer, OBJ_NODATA, user_max_cmp, &max_no);
+ eject_user = ao2_find(cnf->usercontainer, &max_no, 0);
+@@ -5840,10 +5842,13 @@ static void answer_trunk_chan(struct ast
+ ast_indicate(chan, -1);
+ }
+
++RAII_DECL(struct sla_station *, station, ao2_cleanup);
++RAII_DECL(struct sla_trunk_ref *, trunk_ref, ao2_cleanup);
++
+ static void *run_station(void *data)
+ {
+- RAII_VAR(struct sla_station *, station, NULL, ao2_cleanup);
+- RAII_VAR(struct sla_trunk_ref *, trunk_ref, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_station *, station, NULL);
++ RAII_VAR(struct sla_trunk_ref *, trunk_ref, NULL);
+ struct ast_str *conf_name = ast_str_create(16);
+ struct ast_flags64 conf_flags = { 0 };
+ struct ast_conference *conf;
+@@ -6004,12 +6009,14 @@ static struct sla_ringing_trunk *sla_cho
+ return ringing_trunk;
+ }
+
++RAII_DECL(struct sla_trunk_ref *, s_trunk_ref, ao2_cleanup);
++
+ static void sla_handle_dial_state_event(void)
+ {
+ struct sla_ringing_station *ringing_station;
+
+ AST_LIST_TRAVERSE_SAFE_BEGIN(&sla.ringing_stations, ringing_station, entry) {
+- RAII_VAR(struct sla_trunk_ref *, s_trunk_ref, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_trunk_ref *, s_trunk_ref, NULL);
+ struct sla_ringing_trunk *ringing_trunk = NULL;
+ struct run_station_args args;
+ enum ast_dial_result dial_res;
+@@ -6222,7 +6229,7 @@ static struct sla_trunk_ref *sla_find_tr
+ static int sla_check_station_delay(struct sla_station *station,
+ struct sla_ringing_trunk *ringing_trunk)
+ {
+- RAII_VAR(struct sla_trunk_ref *, trunk_ref, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_trunk_ref *, trunk_ref, NULL);
+ unsigned int delay = UINT_MAX;
+ int time_left, time_elapsed;
+
+@@ -6633,8 +6640,8 @@ static void *dial_trunk(void *data)
+ char conf_name[MAX_CONFNUM];
+ struct ast_conference *conf;
+ struct ast_flags64 conf_flags = { 0 };
+- RAII_VAR(struct sla_trunk_ref *, trunk_ref, args->trunk_ref, ao2_cleanup);
+- RAII_VAR(struct sla_station *, station, args->station, ao2_cleanup);
++ RAII_VAR(struct sla_trunk_ref *, trunk_ref, args->trunk_ref);
++ RAII_VAR(struct sla_station *, station, args->station);
+ int caller_is_saved;
+ struct ast_party_caller caller;
+ int last_state = 0;
+@@ -6781,8 +6788,8 @@ static struct sla_trunk_ref *sla_choose_
+ static int sla_station_exec(struct ast_channel *chan, const char *data)
+ {
+ char *station_name, *trunk_name;
+- RAII_VAR(struct sla_station *, station, NULL, ao2_cleanup);
+- RAII_VAR(struct sla_trunk_ref *, trunk_ref, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_station *, station, NULL);
++ RAII_VAR(struct sla_trunk_ref *, trunk_ref, NULL);
+ char conf_name[MAX_CONFNUM];
+ struct ast_flags64 conf_flags = { 0 };
+ struct ast_conference *conf;
+@@ -7000,12 +7007,14 @@ AST_APP_OPTIONS(sla_trunk_opts, BEGIN_OP
+ AST_APP_OPTION_ARG('M', SLA_TRUNK_OPT_MOH, SLA_TRUNK_OPT_ARG_MOH_CLASS),
+ END_OPTIONS );
+
++RAII_DECL(struct sla_trunk *, trunk, ao2_cleanup);
++
+ static int sla_trunk_exec(struct ast_channel *chan, const char *data)
+ {
+ char conf_name[MAX_CONFNUM];
+ struct ast_conference *conf;
+ struct ast_flags64 conf_flags = { 0 };
+- RAII_VAR(struct sla_trunk *, trunk, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_trunk *, trunk, NULL);
+ struct sla_ringing_trunk *ringing_trunk;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(trunk_name);
+@@ -7101,7 +7110,7 @@ static int sla_trunk_exec(struct ast_cha
+ static enum ast_device_state sla_state(const char *data)
+ {
+ char *buf, *station_name, *trunk_name;
+- RAII_VAR(struct sla_station *, station, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_station *, station, NULL);
+ struct sla_trunk_ref *trunk_ref;
+ enum ast_device_state res = AST_DEVICE_INVALID;
+
+@@ -7262,7 +7271,7 @@ static void sla_trunk_destructor(void *o
+
+ static int sla_build_trunk(struct ast_config *cfg, const char *cat)
+ {
+- RAII_VAR(struct sla_trunk *, trunk, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_trunk *, trunk, NULL);
+ struct ast_variable *var;
+ const char *dev;
+ int existing_trunk = 0;
+@@ -7351,7 +7360,7 @@ static int sla_build_trunk(struct ast_co
+ */
+ static void sla_add_trunk_to_station(struct sla_station *station, struct ast_variable *var)
+ {
+- RAII_VAR(struct sla_trunk *, trunk, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_trunk *, trunk, NULL);
+ struct sla_trunk_ref *trunk_ref = NULL;
+ struct sla_station_ref *station_ref;
+ char *trunk_name, *options, *cur;
+@@ -7435,7 +7444,7 @@ static void sla_add_trunk_to_station(str
+
+ static int sla_build_station(struct ast_config *cfg, const char *cat)
+ {
+- RAII_VAR(struct sla_station *, station, NULL, ao2_cleanup);
++ RAII_VAR(struct sla_station *, station, NULL);
+ struct ast_variable *var;
+ const char *dev;
+ int existing_station = 0;
diff --git a/comms/asterisk/patches/patch-apps_app__queue.c b/comms/asterisk/patches/patch-apps_app__queue.c
index f17fd7ef273..0bf10c742ac 100644
--- a/comms/asterisk/patches/patch-apps_app__queue.c
+++ b/comms/asterisk/patches/patch-apps_app__queue.c
@@ -1,8 +1,8 @@
-$NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
+$NetBSD: patch-apps_app__queue.c,v 1.3 2013/12/23 01:34:03 jnemeth Exp $
---- apps/app_queue.c.orig 2013-01-09 00:03:40.000000000 +0000
+--- apps/app_queue.c.orig 2013-09-12 00:02:37.000000000 +0000
+++ apps/app_queue.c
-@@ -4717,7 +4717,7 @@ static int wait_our_turn(struct queue_en
+@@ -4735,7 +4735,7 @@ static int wait_our_turn(struct queue_en
if ((status = get_member_status(qe->parent, qe->max_penalty, qe->min_penalty, qe->parent->leavewhenempty))) {
*reason = QUEUE_LEAVEEMPTY;
@@ -11,7 +11,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
leave_queue(qe);
break;
}
-@@ -4957,12 +4957,12 @@ static void send_agent_complete(const st
+@@ -4975,12 +4975,12 @@ static void send_agent_complete(const st
"Channel: %s\r\n"
"Member: %s\r\n"
"MemberName: %s\r\n"
@@ -27,7 +27,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, vars_len) : "");
}
-@@ -5005,9 +5005,9 @@ static void queue_transfer_fixup(void *d
+@@ -5023,9 +5023,9 @@ static void queue_transfer_fixup(void *d
int callcompletedinsl = qtds->callcompletedinsl;
struct ast_datastore *datastore;
@@ -39,8 +39,8 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
+ (intmax_t) (time(NULL) - callstart), qe->opos);
update_queue(qe->parent, member, callcompletedinsl, (time(NULL) - callstart));
-
-@@ -5524,7 +5524,7 @@ static int try_calling(struct queue_ent
+
+@@ -5542,7 +5542,7 @@ static int try_calling(struct queue_ent
} else if (ast_check_hangup(qe->chan)) {
/* Caller must have hung up just before being connected */
ast_log(LOG_NOTICE, "Caller was about to talk to agent on %s but the caller hungup.\n", ast_channel_name(peer));
@@ -49,7 +49,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
record_abandoned(qe);
ast_autoservice_chan_hangup_peer(qe->chan, peer);
ao2_ref(member, -1);
-@@ -5573,8 +5573,8 @@ static int try_calling(struct queue_ent
+@@ -5591,8 +5591,8 @@ static int try_calling(struct queue_ent
/* if setqueueentryvar is defined, make queue entry (i.e. the caller) variables available to the channel */
/* use pbx_builtin_setvar to set a load of variables with one call */
if (qe->parent->setqueueentryvar) {
@@ -60,7 +60,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
pbx_builtin_setvar_multiple(qe->chan, interfacevar);
pbx_builtin_setvar_multiple(peer, interfacevar);
}
-@@ -5791,8 +5791,8 @@ static int try_calling(struct queue_ent
+@@ -5809,8 +5809,8 @@ static int try_calling(struct queue_ent
}
}
qe->handled++;
@@ -71,7 +71,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
if (ast_channel_cdr(qe->chan)) {
struct ast_cdr *cdr;
-@@ -5846,12 +5846,12 @@ static int try_calling(struct queue_ent
+@@ -5864,12 +5864,12 @@ static int try_calling(struct queue_ent
"Channel: %s\r\n"
"Member: %s\r\n"
"MemberName: %s\r\n"
@@ -87,7 +87,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, sizeof(vars)) : "");
ast_copy_string(oldcontext, ast_channel_context(qe->chan), sizeof(oldcontext));
ast_copy_string(oldexten, ast_channel_exten(qe->chan), sizeof(oldexten));
-@@ -5883,17 +5883,17 @@ static int try_calling(struct queue_ent
+@@ -5901,17 +5901,17 @@ static int try_calling(struct queue_ent
/* detect a blind transfer */
if (!(ast_channel_softhangup_internal_flag(qe->chan) | ast_channel_softhangup_internal_flag(peer)) && (strcasecmp(oldcontext, ast_channel_context(qe->chan)) || strcasecmp(oldexten, ast_channel_exten(qe->chan)))) {
@@ -111,19 +111,19 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
+ (intmax_t) (callstart - qe->start), (intmax_t) (time(NULL) - callstart), qe->opos);
send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), AGENT);
}
- if ((tds = ast_channel_datastore_find(qe->chan, &queue_transfer_info, NULL))) {
-@@ -7070,8 +7070,8 @@ check_turns:
+ if ((tds = ast_channel_datastore_find(qe->chan, &queue_transfer_info, NULL))) {
+@@ -7088,8 +7088,8 @@ check_turns:
record_abandoned(&qe);
reason = QUEUE_TIMEOUT;
res = 0;
-- ast_queue_log(args.queuename, ast_channel_uniqueid(chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld",
+- ast_queue_log(args.queuename, ast_channel_uniqueid(chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld",
- qe.pos, qe.opos, (long) time(NULL) - qe.start);
-+ ast_queue_log(args.queuename, ast_channel_uniqueid(chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%jd",
++ ast_queue_log(args.queuename, ast_channel_uniqueid(chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%jd",
+ qe.pos, qe.opos, (intmax_t) time(NULL) - qe.start);
break;
}
-@@ -7115,7 +7115,7 @@ check_turns:
+@@ -7133,7 +7133,7 @@ check_turns:
if ((status = get_member_status(qe.parent, qe.max_penalty, qe.min_penalty, qe.parent->leavewhenempty))) {
record_abandoned(&qe);
reason = QUEUE_LEAVEEMPTY;
@@ -132,7 +132,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
res = 0;
break;
}
-@@ -7137,7 +7137,7 @@ check_turns:
+@@ -7155,7 +7155,7 @@ check_turns:
record_abandoned(&qe);
reason = QUEUE_TIMEOUT;
res = 0;
@@ -141,7 +141,7 @@ $NetBSD: patch-apps_app__queue.c,v 1.2 2013/05/05 01:32:35 jnemeth Exp $
break;
}
-@@ -7165,8 +7165,8 @@ stop:
+@@ -7183,8 +7183,8 @@ stop:
if (!qe.handled) {
record_abandoned(&qe);
ast_queue_log(args.queuename, ast_channel_uniqueid(chan), "NONE", "ABANDON",
diff --git a/comms/asterisk/patches/patch-main_format.c b/comms/asterisk/patches/patch-main_format.c
new file mode 100644
index 00000000000..77a37d26988
--- /dev/null
+++ b/comms/asterisk/patches/patch-main_format.c
@@ -0,0 +1,17 @@
+$NetBSD: patch-main_format.c,v 1.1 2013/12/23 01:34:03 jnemeth Exp $
+
+--- main/format.c.orig 2013-06-12 02:25:23.000000000 +0000
++++ main/format.c
+@@ -914,9 +914,11 @@ int init_framer(void)
+ return 0;
+ }
+
++RAII_DECL(struct ast_format_list *, entry, ao2_cleanup);
++
+ static int format_list_add_custom(struct ast_format_list *new)
+ {
+- RAII_VAR(struct ast_format_list *, entry, NULL, ao2_cleanup);
++ RAII_VAR(struct ast_format_list *, entry, NULL);
+ if (!(entry = ao2_alloc(sizeof(*entry), NULL))) {
+ return -1;
+ }
diff --git a/comms/asterisk/patches/patch-main_http.c b/comms/asterisk/patches/patch-main_http.c
new file mode 100644
index 00000000000..191b6602e22
--- /dev/null
+++ b/comms/asterisk/patches/patch-main_http.c
@@ -0,0 +1,22 @@
+$NetBSD: patch-main_http.c,v 1.1 2013/12/23 01:34:03 jnemeth Exp $
+
+--- main/http.c.orig 2013-08-21 17:07:06.000000000 +0000
++++ main/http.c
+@@ -1014,6 +1014,8 @@ static void add_redirect(const char *val
+ AST_RWLIST_UNLOCK(&uri_redirects);
+ }
+
++RAII_DECL(struct ast_sockaddr *, addrs, ast_free);
++
+ static int __ast_http_load(int reload)
+ {
+ struct ast_config *cfg;
+@@ -1024,7 +1026,7 @@ static int __ast_http_load(int reload)
+ struct http_uri_redirect *redirect;
+ struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
+ uint32_t bindport = DEFAULT_PORT;
+- RAII_VAR(struct ast_sockaddr *, addrs, NULL, ast_free);
++ RAII_VAR(struct ast_sockaddr *, addrs, NULL);
+ int num_addrs = 0;
+ int http_tls_was_enabled = 0;
+
diff --git a/comms/asterisk/patches/patch-main_udptl.c b/comms/asterisk/patches/patch-main_udptl.c
index 34554223ce8..410c32737bb 100644
--- a/comms/asterisk/patches/patch-main_udptl.c
+++ b/comms/asterisk/patches/patch-main_udptl.c
@@ -1,6 +1,6 @@
-$NetBSD: patch-main_udptl.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
+$NetBSD: patch-main_udptl.c,v 1.2 2013/12/23 01:34:03 jnemeth Exp $
---- main/udptl.c.orig 2012-12-11 21:12:26.000000000 +0000
+--- main/udptl.c.orig 2013-09-18 23:36:12.000000000 +0000
+++ main/udptl.c
@@ -952,6 +952,8 @@ unsigned int ast_udptl_get_far_max_ifp(s
return udptl->far_max_ifp;
@@ -29,3 +29,18 @@ $NetBSD: patch-main_udptl.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
switch (cmd) {
case CLI_INIT:
+@@ -1417,11 +1419,13 @@ static int removed_options_handler(const
+ return 0;
+ }
+
++RAII_DECL(struct udptl_config *, udptl_cfg, ao2_cleanup);
++
+ static void __ast_udptl_reload(int reload)
+ {
+ if (aco_process_config(&cfg_info, reload) == ACO_PROCESS_ERROR) {
+ if (!reload) {
+- RAII_VAR(struct udptl_config *, udptl_cfg, udptl_snapshot_alloc(), ao2_cleanup);
++ RAII_VAR(struct udptl_config *, udptl_cfg, udptl_snapshot_alloc());
+
+ if (aco_set_defaults(&general_option, "general", udptl_cfg->general)) {
+ ast_log(LOG_ERROR, "Failed to load udptl.conf and failed to initialize defaults.\n");
diff --git a/comms/asterisk/patches/patch-res_res__xmpp.c b/comms/asterisk/patches/patch-res_res__xmpp.c
index 24df78da5e7..de43a58fd94 100644
--- a/comms/asterisk/patches/patch-res_res__xmpp.c
+++ b/comms/asterisk/patches/patch-res_res__xmpp.c
@@ -1,6 +1,6 @@
-$NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
+$NetBSD: patch-res_res__xmpp.c,v 1.2 2013/12/23 01:34:03 jnemeth Exp $
---- res/res_xmpp.c.orig 2013-04-16 23:27:51.000000000 +0000
+--- res/res_xmpp.c.orig 2013-09-07 00:59:41.000000000 +0000
+++ res/res_xmpp.c
@@ -510,11 +510,14 @@ static void *xmpp_config_find(struct ao2
return ao2_find(tmp_container, category, OBJ_KEY);
@@ -115,7 +115,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
iks *request = xmpp_pubsub_iq_create(client, "set");
iks *pubsub, *subscribe;
-@@ -1369,7 +1374,7 @@ static int xmpp_pubsub_handle_event(void
+@@ -1370,7 +1375,7 @@ static int xmpp_pubsub_handle_event(void
static int xmpp_pubsub_handle_error(void *data, ikspak *pak)
{
@@ -124,7 +124,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
char *node_name, *error;
int error_num;
iks *orig_request, *orig_pubsub = iks_find(pak->x, "pubsub");
-@@ -1442,8 +1447,8 @@ static int xmpp_pubsub_handle_error(void
+@@ -1443,8 +1448,8 @@ static int xmpp_pubsub_handle_error(void
*/
static void xmpp_init_event_distribution(struct ast_xmpp_client *client)
{
@@ -135,7 +135,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
if (!cfg || !cfg->clients || !(clientcfg = xmpp_config_find(cfg->clients, client->name))) {
return;
-@@ -1497,8 +1502,8 @@ static int xmpp_resource_immediate(void
+@@ -1498,8 +1503,8 @@ static int xmpp_resource_immediate(void
*/
static int xmpp_status_exec(struct ast_channel *chan, const char *data)
{
@@ -146,7 +146,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_buddy *buddy;
struct ast_xmpp_resource *resource;
char *s = NULL, status[2];
-@@ -1576,8 +1581,8 @@ static int xmpp_status_exec(struct ast_c
+@@ -1577,8 +1582,8 @@ static int xmpp_status_exec(struct ast_c
*/
static int acf_jabberstatus_read(struct ast_channel *chan, const char *name, char *data, char *buf, size_t buflen)
{
@@ -157,7 +157,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_buddy *buddy;
struct ast_xmpp_resource *resource;
int stat = 7;
-@@ -1649,8 +1654,8 @@ static struct ast_custom_function jabber
+@@ -1650,8 +1655,8 @@ static struct ast_custom_function jabber
*/
static int xmpp_join_exec(struct ast_channel *chan, const char *data)
{
@@ -168,7 +168,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
char *s, nick[XMPP_MAX_RESJIDLEN];
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(sender);
-@@ -1708,8 +1713,8 @@ static int xmpp_join_exec(struct ast_cha
+@@ -1709,8 +1714,8 @@ static int xmpp_join_exec(struct ast_cha
*/
static int xmpp_leave_exec(struct ast_channel *chan, const char *data)
{
@@ -179,7 +179,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
char *s, nick[XMPP_MAX_RESJIDLEN];
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(sender);
-@@ -1769,8 +1774,8 @@ static int xmpp_leave_exec(struct ast_ch
+@@ -1770,8 +1775,8 @@ static int xmpp_leave_exec(struct ast_ch
*/
static int xmpp_send_exec(struct ast_channel *chan, const char *data)
{
@@ -190,7 +190,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
char *s;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(sender);
-@@ -1810,8 +1815,8 @@ static int xmpp_send_exec(struct ast_cha
+@@ -1811,8 +1816,8 @@ static int xmpp_send_exec(struct ast_cha
*/
static int xmpp_sendgroup_exec(struct ast_channel *chan, const char *data)
{
@@ -201,7 +201,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
char *s, nick[XMPP_MAX_RESJIDLEN];
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(sender);
-@@ -1863,8 +1868,8 @@ static int xmpp_sendgroup_exec(struct as
+@@ -1864,8 +1869,8 @@ static int xmpp_sendgroup_exec(struct as
*/
static int acf_jabberreceive_read(struct ast_channel *chan, const char *name, char *data, char *buf, size_t buflen)
{
@@ -212,7 +212,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
char *parse = NULL;
int timeout, jidlen, resourcelen, found = 0;
struct timeval start;
-@@ -2022,8 +2027,8 @@ static struct ast_custom_function jabber
+@@ -2023,8 +2028,8 @@ static struct ast_custom_function jabber
*/
static int delete_old_messages(struct ast_xmpp_client *client, char *from)
{
@@ -223,7 +223,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
int deleted = 0, isold = 0;
struct ast_xmpp_message *message = NULL;
-@@ -2056,8 +2061,8 @@ static int delete_old_messages(struct as
+@@ -2057,8 +2062,8 @@ static int delete_old_messages(struct as
static int xmpp_send_cb(const struct ast_msg *msg, const char *to, const char *from)
{
@@ -234,7 +234,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
char *sender, *dest;
int res;
-@@ -2181,8 +2186,8 @@ static int xmpp_client_subscribe_user(vo
+@@ -2182,8 +2187,8 @@ static int xmpp_client_subscribe_user(vo
/*! \brief Hook function called when roster is received from server */
static int xmpp_roster_hook(void *data, ikspak *pak)
{
@@ -245,7 +245,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_client *client = data;
iks *item;
-@@ -2239,8 +2244,8 @@ static int xmpp_roster_hook(void *data,
+@@ -2240,8 +2245,8 @@ static int xmpp_roster_hook(void *data,
/*! \brief Internal function which changes the presence status of an XMPP client */
static void xmpp_client_set_presence(struct ast_xmpp_client *client, const char *to, const char *from, int level, const char *desc)
{
@@ -256,7 +256,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
iks *presence = NULL, *cnode = NULL, *priority = NULL;
char priorityS[10];
-@@ -2367,8 +2372,8 @@ static int xmpp_client_service_discovery
+@@ -2368,8 +2373,8 @@ static int xmpp_client_service_discovery
/*! \brief Hook function called when client finishes authenticating with the server */
static int xmpp_connect_hook(void *data, ikspak *pak)
{
@@ -267,7 +267,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_client *client = data;
iks *roster;
-@@ -2405,8 +2410,8 @@ static int xmpp_connect_hook(void *data,
+@@ -2406,8 +2411,8 @@ static int xmpp_connect_hook(void *data,
/*! \brief Logging hook function */
static void xmpp_log_hook(void *data, const char *xmpp, size_t size, int incoming)
{
@@ -278,7 +278,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_client *client = data;
if (!ast_strlen_zero(xmpp)) {
-@@ -2750,8 +2755,8 @@ static int xmpp_component_authenticate(s
+@@ -2745,8 +2750,8 @@ static int xmpp_component_authenticate(s
/*! \brief Hook function called when component receives a service discovery get message */
static int xmpp_component_service_discovery_get_hook(void *data, ikspak *pak)
{
@@ -289,7 +289,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_client *client = data;
iks *iq = NULL, *query = NULL, *identity = NULL, *disco = NULL, *reg = NULL, *commands = NULL, *gateway = NULL;
iks *version = NULL, *vcard = NULL, *search = NULL, *item = NULL;
-@@ -2837,8 +2842,8 @@ done:
+@@ -2832,8 +2837,8 @@ done:
/*! \brief Hook function called when the component is queried about registration */
static int xmpp_component_register_get_hook(void *data, ikspak *pak)
{
@@ -300,7 +300,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_client *client = data;
iks *iq = NULL, *query = NULL, *error = NULL, *notacceptable = NULL, *instructions = NULL;
struct ast_xmpp_buddy *buddy;
-@@ -2945,8 +2950,8 @@ done:
+@@ -2940,8 +2945,8 @@ done:
/*! \brief Hook function called when we receive a service discovery items request */
static int xmpp_component_service_discovery_items_hook(void *data, ikspak *pak)
{
@@ -311,7 +311,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_client *client = data;
iks *iq = NULL, *query = NULL, *item = NULL, *feature = NULL;
char *node;
-@@ -3295,8 +3300,8 @@ static int xmpp_pak_s10n(struct ast_xmpp
+@@ -3324,8 +3329,8 @@ static int xmpp_pak_s10n(struct ast_xmpp
/*! \brief Action hook for when things occur */
static int xmpp_action_hook(void *data, int type, iks *node)
{
@@ -322,10 +322,10 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ast_xmpp_client *client = data;
ikspak *pak;
int i;
-@@ -3405,8 +3410,8 @@ int ast_xmpp_client_disconnect(struct as
- /*! \brief Internal function used to reconnect an XMPP client to its server */
+@@ -3435,8 +3440,8 @@ int ast_xmpp_client_disconnect(struct as
static int xmpp_client_reconnect(struct ast_xmpp_client *client)
{
+ struct timeval tv = { .tv_sec = 5, .tv_usec = 0 };
- RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
- RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL, ao2_cleanup);
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
@@ -333,7 +333,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
int res = IKS_NET_NOCONN;
if (!cfg || !cfg->clients || !(clientcfg = xmpp_config_find(cfg->clients, client->name))) {
-@@ -3569,8 +3574,8 @@ static void *xmpp_client_thread(void *da
+@@ -3611,8 +3616,8 @@ static void *xmpp_client_thread(void *da
} else if (res == IKS_NET_TLSFAIL) {
ast_log(LOG_ERROR, "JABBER: Failure in TLS.\n");
} else if (!client->timeout && client->state == XMPP_STATE_CONNECTED) {
@@ -342,9 +342,9 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
+ RAII_VAR(struct xmpp_config *, cfg, ao2_global_obj_ref(globals));
+ RAII_VAR(struct ast_xmpp_client_config *, clientcfg, NULL);
- if (cfg && cfg->clients && (clientcfg = xmpp_config_find(cfg->clients, client->name))) {
- res = ast_test_flag(&clientcfg->flags, XMPP_KEEPALIVE) ? xmpp_client_send_raw_message(client, " ") : IKS_OK;
-@@ -3667,8 +3672,8 @@ static int xmpp_client_config_post_apply
+ if (cfg && cfg->clients) {
+ clientcfg = xmpp_config_find(cfg->clients, client->name);
+@@ -3725,8 +3730,8 @@ static int xmpp_client_config_post_apply
*/
static int manager_jabber_send(struct mansession *s, const struct message *m)
{
@@ -355,7 +355,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
const char *id = astman_get_header(m, "ActionID");
const char *jabber = astman_get_header(m, "Jabber");
const char *screenname = astman_get_header(m, "ScreenName");
-@@ -3794,8 +3799,8 @@ static void xmpp_pubsub_request_nodes(st
+@@ -3852,8 +3857,8 @@ static void xmpp_pubsub_request_nodes(st
static char *xmpp_cli_list_pubsub_nodes(struct ast_cli_entry *e, int cmd, struct
ast_cli_args *a)
{
@@ -366,7 +366,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
const char *name = NULL, *collection = NULL;
switch (cmd) {
-@@ -3880,8 +3885,8 @@ static void xmpp_pubsub_purge_nodes(stru
+@@ -3938,8 +3943,8 @@ static void xmpp_pubsub_purge_nodes(stru
static char *xmpp_cli_purge_pubsub_nodes(struct ast_cli_entry *e, int cmd, struct
ast_cli_args *a)
{
@@ -377,7 +377,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
const char *name;
switch (cmd) {
-@@ -3925,8 +3930,8 @@ static char *xmpp_cli_purge_pubsub_nodes
+@@ -3983,8 +3988,8 @@ static char *xmpp_cli_purge_pubsub_nodes
static char *xmpp_cli_delete_pubsub_node(struct ast_cli_entry *e, int cmd, struct
ast_cli_args *a)
{
@@ -388,7 +388,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
const char *name;
switch (cmd) {
-@@ -3962,8 +3967,8 @@ static char *xmpp_cli_delete_pubsub_node
+@@ -4020,8 +4025,8 @@ static char *xmpp_cli_delete_pubsub_node
*/
static char *xmpp_cli_create_collection(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
@@ -399,7 +399,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
const char *name, *collection_name;
switch (cmd) {
-@@ -4002,8 +4007,8 @@ static char *xmpp_cli_create_collection(
+@@ -4060,8 +4065,8 @@ static char *xmpp_cli_create_collection(
*/
static char *xmpp_cli_create_leafnode(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
@@ -410,7 +410,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
const char *name, *collection_name, *leaf_name;
switch (cmd) {
-@@ -4078,7 +4083,7 @@ static char *xmpp_do_set_debug(struct as
+@@ -4136,7 +4141,7 @@ static char *xmpp_do_set_debug(struct as
*/
static char *xmpp_show_clients(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
@@ -419,7 +419,7 @@ $NetBSD: patch-res_res__xmpp.c,v 1.1 2013/08/08 00:45:10 jnemeth Exp $
struct ao2_iterator i;
struct ast_xmpp_client_config *clientcfg;
-@@ -4154,7 +4159,7 @@ static char *xmpp_show_clients(struct as
+@@ -4212,7 +4217,7 @@ static char *xmpp_show_clients(struct as
*/
static char *xmpp_show_buddies(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{