diff options
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | UPGRADE-12.txt | 2 | ||||
-rw-r--r-- | apps/app_agent_pool.c | 4 | ||||
-rw-r--r-- | apps/app_confbridge.c | 17 | ||||
-rw-r--r-- | apps/app_meetme.c | 6 | ||||
-rw-r--r-- | contrib/ast-db-manage/config/versions/de83fac997e2_add_bundle_to_ps_endpoints.py | 34 | ||||
-rwxr-xr-x | contrib/scripts/ast_coredumper | 41 | ||||
-rw-r--r-- | main/loader.c | 8 | ||||
-rw-r--r-- | res/res_pjsip_pubsub.c | 2 |
9 files changed, 84 insertions, 32 deletions
@@ -3218,7 +3218,7 @@ chan_agent has also been removed, for the same reason. * The endcall and enddtmf configuration options are removed. Use the - dialplan function CHANNEL(dtmf-features) to set DTMF features on the agent + dialplan function CHANNEL(dtmf_features) to set DTMF features on the agent channel before calling AgentLogin. chan_bridge diff --git a/UPGRADE-12.txt b/UPGRADE-12.txt index 3d6c00d90..79cafa11f 100644 --- a/UPGRADE-12.txt +++ b/UPGRADE-12.txt @@ -94,7 +94,7 @@ AgentLogin and chan_agent: reason as the updatecdr option. - The endcall and enddtmf configuration options are removed. Use the - dialplan function CHANNEL(dtmf-features) to set DTMF features on the agent + dialplan function CHANNEL(dtmf_features) to set DTMF features on the agent channel before calling AgentLogin. AgentMonitorOutgoing diff --git a/apps/app_agent_pool.c b/apps/app_agent_pool.c index bf12b291c..6a8c3955b 100644 --- a/apps/app_agent_pool.c +++ b/apps/app_agent_pool.c @@ -72,7 +72,7 @@ when a new call comes in for the agent. Login failures will continue in the dialplan with <variable>AGENT_STATUS</variable> set.</para> <para>Before logging in, you can setup on the real agent channel the - CHANNEL(dtmf-features) an agent will have when talking to a caller + CHANNEL(dtmf_features) an agent will have when talking to a caller and you can setup on the channel running this application the CONNECTEDLINE() information the agent will see while waiting for a caller.</para> @@ -92,7 +92,7 @@ <ref type="application">PauseQueueMember</ref> <ref type="application">UnpauseQueueMember</ref> <ref type="function">AGENT</ref> - <ref type="function">CHANNEL(dtmf-features)</ref> + <ref type="function">CHANNEL(dtmf_features)</ref> <ref type="function">CONNECTEDLINE()</ref> <ref type="filename">agents.conf</ref> <ref type="filename">queues.conf</ref> diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index d218d0f2e..73dff8634 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -2386,21 +2386,12 @@ static int confbridge_exec(struct ast_channel *chan, const char *data) user.tech_args.drop_silence = 1; } - if (ast_test_flag(&user.u_profile, USER_OPT_JITTERBUFFER)) { - char *func_jb; - if ((func_jb = ast_module_helper("", "func_jitterbuffer", 0, 0, 0, 0))) { - ast_free(func_jb); - ast_func_write(chan, "JITTERBUFFER(adaptive)", "default"); - } + if (ast_test_flag(&user.u_profile, USER_OPT_JITTERBUFFER) && ast_module_check("func_jitterbuffer.so")) { + ast_func_write(chan, "JITTERBUFFER(adaptive)", "default"); } - if (ast_test_flag(&user.u_profile, USER_OPT_DENOISE)) { - char *mod_speex; - /* Reduce background noise from each participant */ - if ((mod_speex = ast_module_helper("", "codec_speex", 0, 0, 0, 0))) { - ast_free(mod_speex); - ast_func_write(chan, "DENOISE(rx)", "on"); - } + if (ast_test_flag(&user.u_profile, USER_OPT_DENOISE) && ast_module_check("codec_speex.so")) { + ast_func_write(chan, "DENOISE(rx)", "on"); } /* if this user has a intro, play it before entering */ diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 7ca9ba39f..5567fe036 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -3198,7 +3198,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc struct timeval now; struct ast_dsp *dsp = NULL; struct ast_app *agi_app; - char *agifile, *mod_speex; + char *agifile; const char *agifiledefault = "conf-background.agi", *tmpvar; char meetmesecs[30] = ""; char exitcontext[AST_MAX_CONTEXT] = ""; @@ -3588,9 +3588,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc } /* Reduce background noise from each participant */ - if (!ast_test_flag64(confflags, CONFFLAG_DONT_DENOISE) && - (mod_speex = ast_module_helper("", "func_speex", 0, 0, 0, 0))) { - ast_free(mod_speex); + if (!ast_test_flag64(confflags, CONFFLAG_DONT_DENOISE) && ast_module_check("func_speex.so")) { ast_func_write(chan, "DENOISE(rx)", "on"); } diff --git a/contrib/ast-db-manage/config/versions/de83fac997e2_add_bundle_to_ps_endpoints.py b/contrib/ast-db-manage/config/versions/de83fac997e2_add_bundle_to_ps_endpoints.py new file mode 100644 index 000000000..57b56886c --- /dev/null +++ b/contrib/ast-db-manage/config/versions/de83fac997e2_add_bundle_to_ps_endpoints.py @@ -0,0 +1,34 @@ +"""add bundle to ps_endpoints + +Revision ID: de83fac997e2 +Revises: 20abce6d1e3c +Create Date: 2017-10-24 17:10:57.242020 + +""" + +# revision identifiers, used by Alembic. +revision = 'de83fac997e2' +down_revision = '20abce6d1e3c' + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects.postgresql import ENUM + +YESNO_NAME = 'yesno_values' +YESNO_VALUES = ['yes', 'no'] + +def upgrade(): + ############################# Enums ############################## + + # yesno_values have already been created, so use postgres enum object + # type to get around "already created" issue - works okay with mysql + yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False) + + op.add_column('ps_endpoints', sa.Column('bundle', yesno_values)) + +def downgrade(): + context = op.get_context() + + if context.bind.dialect.name == 'mssql': + op.drop_constraint('ck_ps_endpoints_bundle_yesno_values', 'ps_endpoints') + op.drop_column('ps_endpoints', 'bundle') diff --git a/contrib/scripts/ast_coredumper b/contrib/scripts/ast_coredumper index 73c79179d..9b01a4239 100755 --- a/contrib/scripts/ast_coredumper +++ b/contrib/scripts/ast_coredumper @@ -64,9 +64,15 @@ DESCRIPTION from the existing coredumps. --tarball-coredumps - Creates a gzipped tarball of all coredumps processed. - The tarball name will be: - /tmp/asterisk.<timestamp>.coredumps.tar.gz + Creates a gzipped tarball of coredumps processed, their + results txt files and copies of /etc/os-release, + /usr/sbin/asterisk, /usr/lib(64)/libasterisk* and + /usr/lib(64)/asterisk as those files are needed to properly + examine the coredump. The file will be named + /tmp/asterisk.<timestamp>.coredumps.tar.gz or + /tmp/asterisk-<uniqueid>.coredumps.tar.gz if + --tarball-uniqueid was specified. + WARNING: This file could 1gb in size! --delete-coredumps-after Deletes all processed coredumps regardless of whether @@ -388,12 +394,25 @@ for i in ${!COREDUMPS[@]} ; do done if $tarball_coredumps ; then - tf=/tmp/asterisk-$df.coredumps.tar - echo "Creating $tf.gz" + tf=/tmp/asterisk-$df.coredumps.tar.gz + echo "Creating $tf" + dest=/tmp/asterisk-$df + rm -rf $dest 2>/dev/null || : + libdir=usr/lib + [ -d /usr/lib64 ] && libdir+=64 + mkdir -p $dest/tmp $dest/$libdir/asterisk $dest/etc $dest/usr/sbin for i in ${!COREDUMPS[@]} ; do - tar -uvf $tf "${COREDUMPS[@]}" 2>/dev/null + ln -s "${COREDUMPS[@]}" $dest/"${COREDUMPS[@]}" + cp "${COREDUMPS[@]}"*.txt $dest/tmp/ done - gzip $tf + cp /etc/os-release $dest/etc/ + cp -a /$libdir/libasterisk* $dest/$libdir/ + cp -a /$libdir/asterisk/* $dest/$libdir/asterisk/ + cp -a /usr/sbin/asterisk $dest/usr/sbin + rm -rf $tf + tar -chzf $tf --transform="s/^[.]/$df/" -C $dest . + rm -rf $dest + echo "Created $tf" fi if $delete_coredumps_after ; then @@ -442,21 +461,29 @@ class DumpAsteriskCommand(gdb.Command): pass print("!@!@!@! thread1.txt !@!@!@!\n") try: + gdb.execute("p $_siginfo", from_tty) + gdb.execute("info signal $_siginfo.si_signo") gdb.execute("thread apply 1 bt full", from_tty) except: pass print("!@!@!@! brief.txt !@!@!@!\n") try: + gdb.execute("p $_siginfo", from_tty) + gdb.execute("info signal $_siginfo.si_signo") gdb.execute("thread apply all bt", from_tty) except: pass print("!@!@!@! full.txt !@!@!@!\n") try: + gdb.execute("p $_siginfo", from_tty) + gdb.execute("info signal $_siginfo.si_signo") gdb.execute("thread apply all bt full", from_tty) except: pass print("!@!@!@! locks.txt !@!@!@!\n") try: + gdb.execute("p $_siginfo", from_tty) + gdb.execute("info signal $_siginfo.si_signo") gdb.execute("show_locks", from_tty) except: pass diff --git a/main/loader.c b/main/loader.c index d5500076b..8250f1ffb 100644 --- a/main/loader.c +++ b/main/loader.c @@ -708,8 +708,9 @@ char *ast_module_helper(const char *line, const char *word, int pos, int state, int i, which=0, l = strlen(word); char *ret = NULL; - if (pos != rpos) + if (pos != rpos) { return NULL; + } AST_DLLIST_LOCK(&module_list); AST_DLLIST_TRAVERSE(&module_list, cur, entry) { @@ -722,10 +723,11 @@ char *ast_module_helper(const char *line, const char *word, int pos, int state, } AST_DLLIST_UNLOCK(&module_list); - if (!ret) { + if (!ret && needsreload) { for (i=0; !ret && reload_classes[i].name; i++) { - if (!strncasecmp(word, reload_classes[i].name, l) && ++which > state) + if (!strncasecmp(word, reload_classes[i].name, l) && ++which > state) { ret = ast_strdup(reload_classes[i].name); + } } } diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c index a1bfbb71f..62b187951 100644 --- a/res/res_pjsip_pubsub.c +++ b/res/res_pjsip_pubsub.c @@ -1089,7 +1089,7 @@ static void remove_subscription(struct sip_subscription_tree *obj) static void destroy_subscription(struct ast_sip_subscription *sub) { ast_debug(3, "Destroying SIP subscription from '%s->%s'\n", - sub->tree->endpoint ? ast_sorcery_object_get_id(sub->tree->endpoint) : "Unknown", + sub->tree && sub->tree->endpoint ? ast_sorcery_object_get_id(sub->tree->endpoint) : "Unknown", sub->resource); ast_free(sub->body_text); |