[asterisk-commits] oej: branch oej/jitterbuffer-1.2 r46605 - in
/team/oej/jitterbuffer-1.2: ./ a...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue Oct 31 02:16:13 MST 2006
Author: oej
Date: Tue Oct 31 03:16:12 2006
New Revision: 46605
URL: http://svn.digium.com/view/asterisk?rev=46605&view=rev
Log:
Reset automerge on this branch
Added:
team/oej/jitterbuffer-1.2/channels/misdn/fac.c
- copied unchanged from r46430, branches/1.2/channels/misdn/fac.c
team/oej/jitterbuffer-1.2/channels/misdn/fac.h
- copied unchanged from r46430, branches/1.2/channels/misdn/fac.h
team/oej/jitterbuffer-1.2/channels/misdn_config.c
- copied unchanged from r46430, branches/1.2/channels/misdn_config.c
Removed:
team/oej/jitterbuffer-1.2/channels/chan_misdn_config.c
team/oej/jitterbuffer-1.2/channels/misdn/mISDN.patch
team/oej/jitterbuffer-1.2/channels/misdn/portinfo.c
Modified:
team/oej/jitterbuffer-1.2/ (props changed)
team/oej/jitterbuffer-1.2/.cleancount
team/oej/jitterbuffer-1.2/CREDITS
team/oej/jitterbuffer-1.2/LICENSE
team/oej/jitterbuffer-1.2/Makefile
team/oej/jitterbuffer-1.2/acl.c
team/oej/jitterbuffer-1.2/apps/app_alarmreceiver.c
team/oej/jitterbuffer-1.2/apps/app_authenticate.c
team/oej/jitterbuffer-1.2/apps/app_chanspy.c
team/oej/jitterbuffer-1.2/apps/app_dial.c
team/oej/jitterbuffer-1.2/apps/app_directory.c
team/oej/jitterbuffer-1.2/apps/app_externalivr.c
team/oej/jitterbuffer-1.2/apps/app_festival.c
team/oej/jitterbuffer-1.2/apps/app_hasnewvoicemail.c
team/oej/jitterbuffer-1.2/apps/app_macro.c
team/oej/jitterbuffer-1.2/apps/app_math.c
team/oej/jitterbuffer-1.2/apps/app_meetme.c
team/oej/jitterbuffer-1.2/apps/app_mixmonitor.c
team/oej/jitterbuffer-1.2/apps/app_page.c
team/oej/jitterbuffer-1.2/apps/app_playback.c
team/oej/jitterbuffer-1.2/apps/app_queue.c
team/oej/jitterbuffer-1.2/apps/app_random.c
team/oej/jitterbuffer-1.2/apps/app_record.c
team/oej/jitterbuffer-1.2/apps/app_rpt.c
team/oej/jitterbuffer-1.2/apps/app_voicemail.c
team/oej/jitterbuffer-1.2/asterisk.c
team/oej/jitterbuffer-1.2/cdr.c
team/oej/jitterbuffer-1.2/cdr/Makefile
team/oej/jitterbuffer-1.2/cdr/cdr_odbc.c
team/oej/jitterbuffer-1.2/cdr/cdr_tds.c
team/oej/jitterbuffer-1.2/channel.c
team/oej/jitterbuffer-1.2/channels/Makefile
team/oej/jitterbuffer-1.2/channels/chan_agent.c
team/oej/jitterbuffer-1.2/channels/chan_features.c
team/oej/jitterbuffer-1.2/channels/chan_h323.c
team/oej/jitterbuffer-1.2/channels/chan_iax2.c
team/oej/jitterbuffer-1.2/channels/chan_local.c
team/oej/jitterbuffer-1.2/channels/chan_mgcp.c
team/oej/jitterbuffer-1.2/channels/chan_misdn.c
team/oej/jitterbuffer-1.2/channels/chan_modem.c
team/oej/jitterbuffer-1.2/channels/chan_phone.c
team/oej/jitterbuffer-1.2/channels/chan_sip.c
team/oej/jitterbuffer-1.2/channels/chan_skinny.c
team/oej/jitterbuffer-1.2/channels/chan_vpb.c
team/oej/jitterbuffer-1.2/channels/chan_zap.c
team/oej/jitterbuffer-1.2/channels/iax2-provision.c
team/oej/jitterbuffer-1.2/channels/misdn/Makefile
team/oej/jitterbuffer-1.2/channels/misdn/chan_misdn_config.h
team/oej/jitterbuffer-1.2/channels/misdn/ie.c
team/oej/jitterbuffer-1.2/channels/misdn/isdn_lib.c
team/oej/jitterbuffer-1.2/channels/misdn/isdn_lib.h
team/oej/jitterbuffer-1.2/channels/misdn/isdn_lib_intern.h
team/oej/jitterbuffer-1.2/channels/misdn/isdn_msg_parser.c
team/oej/jitterbuffer-1.2/cli.c
team/oej/jitterbuffer-1.2/config.c
team/oej/jitterbuffer-1.2/configs/alsa.conf.sample
team/oej/jitterbuffer-1.2/configs/cdr.conf.sample
team/oej/jitterbuffer-1.2/configs/dundi.conf.sample
team/oej/jitterbuffer-1.2/configs/enum.conf.sample
team/oej/jitterbuffer-1.2/configs/extensions.conf.sample
team/oej/jitterbuffer-1.2/configs/features.conf.sample
team/oej/jitterbuffer-1.2/configs/iax.conf.sample
team/oej/jitterbuffer-1.2/configs/indications.conf.sample
team/oej/jitterbuffer-1.2/configs/misdn.conf.sample
team/oej/jitterbuffer-1.2/configs/osp.conf.sample
team/oej/jitterbuffer-1.2/configs/phone.conf.sample
team/oej/jitterbuffer-1.2/configs/queues.conf.sample
team/oej/jitterbuffer-1.2/configs/sip.conf.sample
team/oej/jitterbuffer-1.2/configs/skinny.conf.sample
team/oej/jitterbuffer-1.2/configs/voicemail.conf.sample
team/oej/jitterbuffer-1.2/configs/vpb.conf.sample
team/oej/jitterbuffer-1.2/configs/zapata.conf.sample
team/oej/jitterbuffer-1.2/contrib/init.d/rc.redhat.asterisk
team/oej/jitterbuffer-1.2/contrib/scripts/astgenkey.8
team/oej/jitterbuffer-1.2/dnsmgr.c
team/oej/jitterbuffer-1.2/doc/README.misdn
team/oej/jitterbuffer-1.2/doc/README.variables
team/oej/jitterbuffer-1.2/file.c
team/oej/jitterbuffer-1.2/frame.c
team/oej/jitterbuffer-1.2/funcs/func_cdr.c
team/oej/jitterbuffer-1.2/funcs/func_timeout.c
team/oej/jitterbuffer-1.2/include/asterisk/channel.h
team/oej/jitterbuffer-1.2/include/asterisk/chanspy.h
team/oej/jitterbuffer-1.2/include/asterisk/linkedlists.h
team/oej/jitterbuffer-1.2/include/asterisk/lock.h
team/oej/jitterbuffer-1.2/include/asterisk/logger.h
team/oej/jitterbuffer-1.2/include/asterisk/rtp.h
team/oej/jitterbuffer-1.2/include/asterisk/utils.h
team/oej/jitterbuffer-1.2/io.c
team/oej/jitterbuffer-1.2/logger.c
team/oej/jitterbuffer-1.2/netsock.c
team/oej/jitterbuffer-1.2/pbx.c
team/oej/jitterbuffer-1.2/pbx/pbx_ael.c
team/oej/jitterbuffer-1.2/pbx/pbx_config.c
team/oej/jitterbuffer-1.2/pbx/pbx_gtkconsole.c
team/oej/jitterbuffer-1.2/res/res_agi.c
team/oej/jitterbuffer-1.2/res/res_features.c
team/oej/jitterbuffer-1.2/res/res_monitor.c
team/oej/jitterbuffer-1.2/res/res_musiconhold.c
team/oej/jitterbuffer-1.2/rtp.c
team/oej/jitterbuffer-1.2/utils.c
Propchange: team/oej/jitterbuffer-1.2/
------------------------------------------------------------------------------
automerge = http://edvina.net/training/
Propchange: team/oej/jitterbuffer-1.2/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Oct 31 03:16:12 2006
@@ -1,1 +1,1 @@
-/branches/1.2:1-38844
+/branches/1.2:1-46504
Modified: team/oej/jitterbuffer-1.2/.cleancount
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/.cleancount?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/.cleancount (original)
+++ team/oej/jitterbuffer-1.2/.cleancount Tue Oct 31 03:16:12 2006
@@ -1,1 +1,1 @@
-8
+9
Modified: team/oej/jitterbuffer-1.2/CREDITS
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/CREDITS?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/CREDITS (original)
+++ team/oej/jitterbuffer-1.2/CREDITS Tue Oct 31 03:16:12 2006
@@ -33,6 +33,14 @@
Russell Bryant - Asterisk 1.0 maintainer and misc. enhancements
russelb at clemson.edu
Anthony Minessale II - Countless big and small fixes, and relentless forward push
+ ChanSpy, ForkCDR, ControlPlayback, While/EndWhile, DumpChan, Dictate,
+ MacroIf, ExecIf, ExecIfTime, RetryDial, MixMonitor applications; res_odbc;
+ many realtime concepts and implementation pieces, including res_config_odbc;
+ format_slin; cdr_custom; several features in Dial including L(), G() and
+ enhancements to M() and D(); several CDR enhancements including CDR variables;
+ attended transfer; one touch record; native MOH; manager eventmask; command
+ line '-t' flag to allow recording/voicemail on nfs shares; #exec command and
+ multiline comments in config files; setvar in iax and sip configs.
anthmct at yahoo.com http://www.asterlink.com
James Golovich - Innumerable contributions
You can find him and asterisk-perl at http://asterisk.gnuinter.net
Modified: team/oej/jitterbuffer-1.2/LICENSE
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/LICENSE?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/LICENSE (original)
+++ team/oej/jitterbuffer-1.2/LICENSE Tue Oct 31 03:16:12 2006
@@ -4,6 +4,18 @@
applies to all loadable Asterisk modules used on your system as well,
except as defined below. The GPL (version 2) is included in this
source tree in the file COPYING.
+
+This package also includes various components that are not part of
+Asterisk itself; these components are in the 'contrib' directory
+and its subdirectories. Most of these components are also
+distributed under the GPL version 2 as well, except for the following:
+
+contrib/firmware/iax/iaxy.bin:
+ This file is Copyright (C) Digium, Inc. and is licensed for
+ use with Digium IAXy hardware devices only. It can be
+ distributed freely as long as the distribution is in the
+ original form present in this package (not reformatted or
+ modified).
Digium, Inc. (formerly Linux Support Services) holds copyright
and/or sufficient licenses to all components of the Asterisk
Modified: team/oej/jitterbuffer-1.2/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/Makefile?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/Makefile (original)
+++ team/oej/jitterbuffer-1.2/Makefile Tue Oct 31 03:16:12 2006
@@ -593,7 +593,7 @@
exit 1; \
fi; \
done
- for x in sounds/demo-* sounds/vm-* sounds/transfer* sounds/pbx-* sounds/ss-* sounds/beep* sounds/dir-* sounds/conf-* sounds/agent-* sounds/invalid* sounds/tt-* sounds/auth-* sounds/privacy-* sounds/queue-* sounds/spy-* sounds/priv-* sounds/screen-* sounds/hello-*; do \
+ for x in sounds/demo-* sounds/vm-* sounds/transfer* sounds/pbx-* sounds/ss-* sounds/beep* sounds/dir-* sounds/conf-* sounds/agent-* sounds/invalid* sounds/tt-* sounds/auth-* sounds/privacy-* sounds/queue-* sounds/spy-* sounds/priv-* sounds/screen-* sounds/hello-* sounds/hours* sounds/minute* sounds/second* ; do \
if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
else \
Modified: team/oej/jitterbuffer-1.2/acl.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/acl.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/acl.c (original)
+++ team/oej/jitterbuffer-1.2/acl.c Tue Oct 31 03:16:12 2006
@@ -176,12 +176,12 @@
} else if (!inet_aton(nm, &ha->netmask)) {
ast_log(LOG_WARNING, "%s is not a valid netmask\n", nm);
free(ha);
- return path;
+ return ret;
}
if (!inet_aton(tmp, &ha->netaddr)) {
ast_log(LOG_WARNING, "%s is not a valid IP\n", tmp);
free(ha);
- return path;
+ return ret;
}
ha->netaddr.s_addr &= ha->netmask.s_addr;
if (!strncasecmp(sense, "p", 1)) {
Modified: team/oej/jitterbuffer-1.2/apps/app_alarmreceiver.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_alarmreceiver.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_alarmreceiver.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_alarmreceiver.c Tue Oct 31 03:16:12 2006
@@ -145,7 +145,7 @@
res = ast_db_put(db_family, key, value);
if((res)&&(option_verbose >= 4))
- ast_verbose(VERBOSE_PREFIX_4 "AlarmReceiver: database_increment write error");
+ ast_verbose(VERBOSE_PREFIX_4 "AlarmReceiver: database_increment write error\n");
return;
}
Modified: team/oej/jitterbuffer-1.2/apps/app_authenticate.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_authenticate.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_authenticate.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_authenticate.c Tue Oct 31 03:16:12 2006
@@ -186,7 +186,7 @@
if (!res)
res = ast_waitstream(chan, "");
} else {
- if (jump && ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) {
+ if (jump && ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101) == 0) {
res = 0;
} else {
if (!ast_streamfile(chan, "vm-goodbye", chan->language))
Modified: team/oej/jitterbuffer-1.2/apps/app_chanspy.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_chanspy.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_chanspy.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_chanspy.c Tue Oct 31 03:16:12 2006
@@ -131,7 +131,7 @@
ast_mutex_lock(&modlock);
chan = local_channel_walk(NULL);
while (chan) {
- if (!strncmp(chan->name, name, strlen(name))) {
+ if (!strncmp(chan->name, name, strlen(name)) && strncmp(chan->name, "Zap/pseudo", 10)) {
ret = chan;
break;
}
@@ -206,21 +206,6 @@
return res;
}
-
-static void stop_spying(struct ast_channel *chan, struct ast_channel_spy *spy)
-{
- /* If our status has changed to DONE, then the channel we're spying on is gone....
- DON'T TOUCH IT!!! RUN AWAY!!! */
- if (spy->status == CHANSPY_DONE)
- return;
-
- if (!chan)
- return;
-
- ast_mutex_lock(&chan->lock);
- ast_channel_spy_remove(chan, spy);
- ast_mutex_unlock(&chan->lock);
-};
/* Map 'volume' levels from -4 through +4 into
decibel (dB) settings for channel drivers
@@ -252,102 +237,111 @@
static int channel_spy(struct ast_channel *chan, struct ast_channel *spyee, int *volfactor, int fd)
{
struct chanspy_translation_helper csth;
- int running, res = 0, x = 0;
- char inp[24];
- char *name=NULL;
- struct ast_frame *f;
-
- running = (chan && !ast_check_hangup(chan) && spyee && !ast_check_hangup(spyee));
-
- if (running) {
- memset(inp, 0, sizeof(inp));
- name = ast_strdupa(spyee->name);
- if (option_verbose >= 2)
- ast_verbose(VERBOSE_PREFIX_2 "Spying on channel %s\n", name);
-
- memset(&csth, 0, sizeof(csth));
- ast_set_flag(&csth.spy, CHANSPY_FORMAT_AUDIO);
- ast_set_flag(&csth.spy, CHANSPY_TRIGGER_NONE);
- ast_set_flag(&csth.spy, CHANSPY_MIXAUDIO);
- csth.spy.type = chanspy_spy_type;
- csth.spy.status = CHANSPY_RUNNING;
- csth.spy.read_queue.format = AST_FORMAT_SLINEAR;
- csth.spy.write_queue.format = AST_FORMAT_SLINEAR;
- ast_mutex_init(&csth.spy.lock);
- csth.volfactor = *volfactor;
- set_volume(chan, &csth);
+ int running = 0, res = 0, x = 0;
+ char inp[24] = "", *name = NULL;
+ struct ast_frame *f = NULL;
+
+ if ((chan && ast_check_hangup(chan)) || (spyee && ast_check_hangup(spyee)))
+ return 0;
+
+ name = ast_strdupa(spyee->name);
+ if (option_verbose > 1)
+ ast_verbose(VERBOSE_PREFIX_2 "Spying on channel %s\n", name);
+
+ memset(&csth, 0, sizeof(csth));
+ ast_set_flag(&csth.spy, CHANSPY_FORMAT_AUDIO);
+ ast_set_flag(&csth.spy, CHANSPY_TRIGGER_NONE);
+ ast_set_flag(&csth.spy, CHANSPY_MIXAUDIO);
+ csth.spy.type = chanspy_spy_type;
+ csth.spy.status = CHANSPY_RUNNING;
+ csth.spy.read_queue.format = AST_FORMAT_SLINEAR;
+ csth.spy.write_queue.format = AST_FORMAT_SLINEAR;
+ ast_mutex_init(&csth.spy.lock);
+ csth.volfactor = *volfactor;
+ set_volume(chan, &csth);
+ if (csth.volfactor) {
+ ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
csth.spy.read_vol_adjustment = csth.volfactor;
+ ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
csth.spy.write_vol_adjustment = csth.volfactor;
- csth.fd = fd;
-
- if (start_spying(spyee, chan, &csth.spy))
- running = 0;
- }
-
- if (running) {
- running = 1;
- ast_activate_generator(chan, &spygen, &csth);
-
- while (csth.spy.status == CHANSPY_RUNNING &&
- chan && !ast_check_hangup(chan) &&
- spyee &&
- !ast_check_hangup(spyee) &&
- running == 1 &&
- (res = ast_waitfor(chan, -1) > -1)) {
- if ((f = ast_read(chan))) {
- res = 0;
- if (f->frametype == AST_FRAME_DTMF) {
- res = f->subclass;
+ }
+ csth.fd = fd;
+
+ if (start_spying(spyee, chan, &csth.spy)) {
+ ast_channel_spy_free(&csth.spy);
+ return 0;
+ }
+
+ ast_activate_generator(chan, &spygen, &csth);
+
+ while (csth.spy.status == CHANSPY_RUNNING &&
+ (res = ast_waitfor(chan, -1) > -1)) {
+
+ /* Read in frame from channel, break out if no frame */
+ if (!(f = ast_read(chan)))
+ break;
+
+ /* Now if this is DTMF then we have to handle it as such, otherwise just skip it */
+ res = 0;
+ if (f->frametype == AST_FRAME_DTMF)
+ res = f->subclass;
+ ast_frfree(f);
+ if (!res)
+ continue;
+
+ if (x == sizeof(inp))
+ x = 0;
+
+ if (res < 0) {
+ running = -1;
+ break;
+ }
+
+ /* Process DTMF digits */
+ if (res == '#') {
+ if (!ast_strlen_zero(inp)) {
+ running = x ? atoi(inp) : -1;
+ break;
+ } else {
+ (*volfactor)++;
+ if (*volfactor > 4)
+ *volfactor = -1;
+ if (option_verbose > 2)
+ ast_verbose(VERBOSE_PREFIX_3 "Setting spy volume on %s to %d\n", chan->name, *volfactor);
+ csth.volfactor = *volfactor;
+ set_volume(chan, &csth);
+ if (csth.volfactor) {
+ ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+ csth.spy.read_vol_adjustment = csth.volfactor;
+ ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
+ csth.spy.write_vol_adjustment = csth.volfactor;
+ } else {
+ ast_clear_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+ ast_clear_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
}
- ast_frfree(f);
- if (!res) {
- continue;
- }
- } else {
- break;
}
- if (x == sizeof(inp)) {
- x = 0;
- }
- if (res < 0) {
- running = -1;
- }
- if (res == 0) {
- continue;
- } else if (res == '*') {
- running = 0;
- } else if (res == '#') {
- if (!ast_strlen_zero(inp)) {
- running = x ? atoi(inp) : -1;
- break;
- } else {
- (*volfactor)++;
- if (*volfactor > 4) {
- *volfactor = -4;
- }
- if (option_verbose > 2) {
- ast_verbose(VERBOSE_PREFIX_3 "Setting spy volume on %s to %d\n", chan->name, *volfactor);
- }
- csth.volfactor = *volfactor;
- set_volume(chan, &csth);
- csth.spy.read_vol_adjustment = csth.volfactor;
- csth.spy.write_vol_adjustment = csth.volfactor;
- }
- } else if (res >= 48 && res <= 57) {
- inp[x++] = res;
- }
- }
- ast_deactivate_generator(chan);
- stop_spying(spyee, &csth.spy);
-
- if (option_verbose >= 2) {
- ast_verbose(VERBOSE_PREFIX_2 "Done Spying on channel %s\n", name);
- }
- } else {
- running = 0;
- }
-
- ast_mutex_destroy(&csth.spy.lock);
+ } else if (res == '*') {
+ break;
+ } else if (res >= 48 && res <= 57) {
+ inp[x++] = res;
+ }
+ }
+
+ ast_deactivate_generator(chan);
+
+ ast_mutex_lock(&csth.spy.lock);
+ if (csth.spy.chan) {
+ csth.spy.status = CHANSPY_DONE;
+ ast_mutex_lock(&csth.spy.chan->lock);
+ ast_channel_spy_remove(csth.spy.chan, &csth.spy);
+ ast_mutex_unlock(&csth.spy.chan->lock);
+ }
+ ast_mutex_unlock(&csth.spy.lock);
+
+ if (option_verbose > 1)
+ ast_verbose(VERBOSE_PREFIX_2 "Done Spying on channel %s\n", name);
+
+ ast_channel_spy_free(&csth.spy);
return running;
}
Modified: team/oej/jitterbuffer-1.2/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_dial.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_dial.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_dial.c Tue Oct 31 03:16:12 2006
@@ -31,6 +31,7 @@
#include <stdio.h>
#include <sys/time.h>
#include <sys/signal.h>
+#include <sys/stat.h>
#include <netinet/in.h>
#include "asterisk.h"
@@ -965,7 +966,13 @@
unless it is already there-- this should be done before the
call is actually dialed */
- /* make sure the priv-callerintros dir exists? */
+ /* make sure the priv-callerintros dir actually exists */
+ snprintf(privintro, sizeof(privintro), "%s/sounds/priv-callerintros", ast_config_AST_VAR_DIR);
+ if (mkdir(privintro, 0755) && errno != EEXIST) {
+ ast_log(LOG_WARNING, "privacy: can't create directory priv-callerintros: %s\n", strerror(errno));
+ res = -1;
+ goto out;
+ }
snprintf(privintro,sizeof(privintro),"priv-callerintros/%s", privcid);
if( ast_fileexists(privintro,NULL,NULL ) > 0 && strncmp(privcid,"NOCALLERID",10) != 0) {
@@ -1151,7 +1158,7 @@
/* Again, keep going even if there's an error */
if (option_debug)
ast_log(LOG_DEBUG, "ast call on peer returned %d\n", res);
- else if (option_verbose > 2)
+ if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Couldn't call %s\n", numsubst);
ast_hangup(tmp->chan);
tmp->chan = NULL;
Modified: team/oej/jitterbuffer-1.2/apps/app_directory.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_directory.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_directory.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_directory.c Tue Oct 31 03:16:12 2006
@@ -256,7 +256,7 @@
* '1' for selected entry from directory
* '*' for skipped entry from directory
*/
-static int play_mailbox_owner(struct ast_channel *chan, char *context, char *dialcontext, char *ext, char *name) {
+static int play_mailbox_owner(struct ast_channel *chan, char *context, char *dialcontext, char *ext, char *name, int fromappvm) {
int res = 0;
int loop = 3;
char fn[256];
@@ -314,12 +314,17 @@
case '1':
/* Name selected */
loop = 0;
- if (ast_goto_if_exists(chan, dialcontext, ext, 1)) {
- ast_log(LOG_WARNING,
- "Can't find extension '%s' in context '%s'. "
- "Did you pass the wrong context to Directory?\n",
- ext, dialcontext);
- res = -1;
+ if (fromappvm) {
+ /* We still want to set the exten */
+ ast_copy_string(chan->exten, ext, sizeof(chan->exten));
+ } else {
+ if (ast_goto_if_exists(chan, dialcontext, ext, 1)) {
+ ast_log(LOG_WARNING,
+ "Can't find extension '%s' in context '%s'. "
+ "Did you pass the wrong context to Directory?\n",
+ ext, dialcontext);
+ res = -1;
+ }
}
break;
@@ -403,7 +408,7 @@
return cfg;
}
-static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char *context, char *dialcontext, char digit, int last)
+static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char *context, char *dialcontext, char digit, int last, int fromappvm)
{
/* Read in the first three digits.. "digit" is the first digit, already read */
char ext[NUMDIGITS + 1];
@@ -421,7 +426,7 @@
return -1;
}
if (digit == '0') {
- if (!ast_goto_if_exists(chan, chan->context, "o", 1) ||
+ if (!ast_goto_if_exists(chan, dialcontext, "o", 1) ||
(!ast_strlen_zero(chan->macrocontext) &&
!ast_goto_if_exists(chan, chan->macrocontext, "o", 1))) {
return 0;
@@ -432,7 +437,7 @@
}
}
if (digit == '*') {
- if (!ast_goto_if_exists(chan, chan->context, "a", 1) ||
+ if (!ast_goto_if_exists(chan, dialcontext, "a", 1) ||
(!ast_strlen_zero(chan->macrocontext) &&
!ast_goto_if_exists(chan, chan->macrocontext, "a", 1))) {
return 0;
@@ -482,7 +487,7 @@
if (v) {
/* We have a match -- play a greeting if they have it */
- res = play_mailbox_owner(chan, context, dialcontext, v->name, name);
+ res = play_mailbox_owner(chan, context, dialcontext, v->name, name, fromappvm);
switch (res) {
case -1:
/* user pressed '1' but extension does not exist, or
@@ -529,6 +534,7 @@
struct localuser *u;
struct ast_config *cfg;
int last = 1;
+ int fromappvm = 0;
char *context, *dialcontext, *dirintro, *options;
if (ast_strlen_zero(data)) {
@@ -549,6 +555,8 @@
options++;
if (strchr(options, 'f'))
last = 0;
+ if (strchr(options, 'v'))
+ fromappvm = 1;
}
} else
dialcontext = context;
@@ -581,7 +589,7 @@
if (!res)
res = ast_waitfordigit(chan, 5000);
if (res > 0) {
- res = do_directory(chan, cfg, context, dialcontext, res, last);
+ res = do_directory(chan, cfg, context, dialcontext, res, last, fromappvm);
if (res > 0) {
res = ast_waitstream(chan, AST_DIGIT_ANY);
ast_stopstream(chan);
Modified: team/oej/jitterbuffer-1.2/apps/app_externalivr.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_externalivr.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_externalivr.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_externalivr.c Tue Oct 31 03:16:12 2006
@@ -324,7 +324,7 @@
close(i);
execv(argv[0], argv);
fprintf(stderr, "Failed to execute '%s': %s\n", argv[0], strerror(errno));
- exit(1);
+ _exit(1);
} else {
/* parent process */
int child_events_fd = child_stdin[1];
@@ -447,7 +447,7 @@
continue;
if (input[0] == 'S') {
- if (ast_fileexists(&input[2], NULL, NULL) == -1) {
+ if (ast_fileexists(&input[2], NULL, u->chan->language) == -1) {
ast_chan_log(LOG_WARNING, chan, "Unknown file requested '%s'\n", &input[2]);
send_child_event(child_events, 'Z', NULL, chan);
strcpy(&input[2], "exception");
@@ -466,7 +466,7 @@
AST_LIST_INSERT_TAIL(&u->playlist, entry, list);
AST_LIST_UNLOCK(&u->playlist);
} else if (input[0] == 'A') {
- if (ast_fileexists(&input[2], NULL, NULL) == -1) {
+ if (ast_fileexists(&input[2], NULL, u->chan->language) == -1) {
ast_chan_log(LOG_WARNING, chan, "Unknown file requested '%s'\n", &input[2]);
send_child_event(child_events, 'Z', NULL, chan);
strcpy(&input[2], "exception");
Modified: team/oej/jitterbuffer-1.2/apps/app_festival.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_festival.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_festival.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_festival.c Tue Oct 31 03:16:12 2006
@@ -471,7 +471,7 @@
* */
if ( read_data == -1 )
{
- ast_log(LOG_WARNING,"Unable to read from cache/festival fd");
+ ast_log(LOG_WARNING,"Unable to read from cache/festival fd\n");
close(fd);
ast_config_destroy(cfg);
LOCAL_USER_REMOVE(u);
Modified: team/oej/jitterbuffer-1.2/apps/app_hasnewvoicemail.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_hasnewvoicemail.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_hasnewvoicemail.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_hasnewvoicemail.c Tue Oct 31 03:16:12 2006
@@ -260,7 +260,7 @@
args = ast_strdupa(data);
if (!args) {
- ast_log(LOG_ERROR, "Out of memory");
+ ast_log(LOG_ERROR, "Out of memory\n");
LOCAL_USER_REMOVE(u);
return buf;
}
Modified: team/oej/jitterbuffer-1.2/apps/app_macro.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_macro.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_macro.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_macro.c Tue Oct 31 03:16:12 2006
@@ -60,7 +60,13 @@
"If you Goto out of the Macro context, the Macro will terminate and control\n"
"will be returned at the location of the Goto.\n"
"If ${MACRO_OFFSET} is set at termination, Macro will attempt to continue\n"
-"at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise.\n";
+"at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise.\n"
+"WARNING: Because of the way Macro is implemented (it executes the priorities\n"
+" contained within it via sub-engine), and a fixed per-thread\n"
+" memory stack allowance, macros are limited to 7 levels\n"
+" of nesting (macro calling macro calling macro, etc.); It\n"
+" may be possible that stack-intensive applications in deeply nested\n"
+" macros could cause asterisk to crash earlier than this limit.\n";
static char *if_descrip =
" MacroIf(<expr>?macroname_a[|arg1][:macroname_b[|arg1]])\n"
@@ -101,8 +107,8 @@
int oldpriority;
char pc[80], depthc[12];
char oldcontext[AST_MAX_CONTEXT] = "";
- char *offsets;
- int offset, depth;
+ char *offsets, *s;
+ int offset, depth = 0, maxdepth = 7;
int setmacrocontext=0;
int autoloopflag, dead = 0;
@@ -119,6 +125,11 @@
LOCAL_USER_ADD(u);
+ /* does the user want a deeper rabbit hole? */
+ s = pbx_builtin_getvar_helper(chan, "MACRO_RECURSION");
+ if (s)
+ sscanf(s, "%d", &maxdepth);
+
/* Count how many levels deep the rabbit hole goes */
tmp = pbx_builtin_getvar_helper(chan, "MACRO_DEPTH");
if (tmp) {
@@ -127,7 +138,7 @@
depth = 0;
}
- if (depth >= 7) {
+ if (depth >= maxdepth) {
ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n");
LOCAL_USER_REMOVE(u);
return 0;
@@ -222,14 +233,14 @@
case AST_PBX_KEEPALIVE:
if (option_debug)
ast_log(LOG_DEBUG, "Spawn extension (%s,%s,%d) exited KEEPALIVE in macro %s on '%s'\n", chan->context, chan->exten, chan->priority, macro, chan->name);
- else if (option_verbose > 1)
+ if (option_verbose > 1)
ast_verbose( VERBOSE_PREFIX_2 "Spawn extension (%s, %s, %d) exited KEEPALIVE in macro '%s' on '%s'\n", chan->context, chan->exten, chan->priority, macro, chan->name);
goto out;
break;
default:
if (option_debug)
ast_log(LOG_DEBUG, "Spawn extension (%s,%s,%d) exited non-zero on '%s' in macro '%s'\n", chan->context, chan->exten, chan->priority, chan->name, macro);
- else if (option_verbose > 1)
+ if (option_verbose > 1)
ast_verbose( VERBOSE_PREFIX_2 "Spawn extension (%s, %s, %d) exited non-zero on '%s' in macro '%s'\n", chan->context, chan->exten, chan->priority, chan->name, macro);
dead = 1;
goto out;
@@ -241,9 +252,9 @@
break;
}
/* don't stop executing extensions when we're in "h" */
- if (chan->_softhangup && strcasecmp(oldexten,"h")) {
- ast_log(LOG_DEBUG, "Extension %s, priority %d returned normally even though call was hung up\n",
- chan->exten, chan->priority);
+ if (chan->_softhangup && strcasecmp(oldexten,"h") && strcasecmp(chan->macroexten,"h")) {
+ ast_log(LOG_DEBUG, "Extension %s, macroexten %s, priority %d returned normally even though call was hung up\n",
+ chan->exten, chan->macroexten, chan->priority);
goto out;
}
chan->priority++;
Modified: team/oej/jitterbuffer-1.2/apps/app_math.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_math.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_math.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_math.c Tue Oct 31 03:16:12 2006
@@ -69,7 +69,8 @@
"Perform floating point calculation on number 1 to number 2 and \n"
"store the result in returnvar. Valid ops are: \n"
" +,-,/,*,%,<,>,>=,<=,==\n"
-"and behave as their C equivalents.\n";
+"and behave as their C equivalents.\n"
+" This application has been deprecated in favor of the MATH function.\n";
#define ADDFUNCTION 0
#define DIVIDEFUNCTION 1
Modified: team/oej/jitterbuffer-1.2/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_meetme.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_meetme.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_meetme.c Tue Oct 31 03:16:12 2006
@@ -96,7 +96,8 @@
" 's' -- Present menu (user or admin) when '*' is received ('send' to menu)\n"
" 't' -- set talk only mode. (Talk only, no listening)\n"
" 'T' -- set talker detection (sent to manager interface and meetme list)\n"
-" 'w' -- wait until the marked user enters the conference\n"
+" 'w[(<secs>)]'\n"
+" -- wait until the marked user enters the conference\n"
" 'x' -- close the conference when last marked user exits\n"
" 'X' -- allow user to exit the conference by entering a valid single\n"
" digit extension ${MEETME_EXIT_CONTEXT} or the current context\n"
@@ -227,6 +228,10 @@
#define CONFFLAG_EMPTYNOPIN (1 << 20)
#define CONFFLAG_ALWAYSPROMPT (1 << 21)
+enum {
+ OPT_ARG_WAITMARKED = 0,
+ OPT_ARG_ARRAY_SIZE = 1,
+} meetme_option_args;
AST_APP_OPTIONS(meetme_opts, {
AST_APP_OPTION('a', CONFFLAG_ADMIN ),
@@ -243,7 +248,7 @@
AST_APP_OPTION('X', CONFFLAG_EXIT_CONTEXT ),
AST_APP_OPTION('A', CONFFLAG_MARKEDUSER ),
AST_APP_OPTION('b', CONFFLAG_AGI ),
- AST_APP_OPTION('w', CONFFLAG_WAITMARKED ),
+ AST_APP_OPTION_ARG('w', CONFFLAG_WAITMARKED, OPT_ARG_WAITMARKED ),
AST_APP_OPTION('r', CONFFLAG_RECORDCONF ),
AST_APP_OPTION('d', CONFFLAG_DYNAMIC ),
AST_APP_OPTION('D', CONFFLAG_DYNAMICPIN ),
@@ -790,7 +795,7 @@
return 0;
}
-static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int confflags)
+static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int confflags, char *optargs[])
{
struct ast_conf_user *user = calloc(1, sizeof(*user));
struct ast_conf_user *usr = NULL;
@@ -822,7 +827,8 @@
char meetmesecs[30] = "";
char exitcontext[AST_MAX_CONTEXT] = "";
char recordingtmp[AST_MAX_EXTENSION] = "";
- int dtmf;
+ int dtmf, opt_waitmarked_timeout = 0;
+ time_t timeout = 0;
ZT_BUFFERINFO bi;
char __buf[CONF_SIZE + AST_FRIENDLY_OFFSET];
char *buf = __buf + AST_FRIENDLY_OFFSET;
@@ -830,6 +836,14 @@
if (!user) {
ast_log(LOG_ERROR, "Out of memory\n");
return ret;
+ }
+
+ /* Possible timeout waiting for marked user */
+ if ((confflags & CONFFLAG_WAITMARKED) &&
+ !ast_strlen_zero(optargs[OPT_ARG_WAITMARKED]) &&
+ (sscanf(optargs[OPT_ARG_WAITMARKED], "%d", &opt_waitmarked_timeout) == 1) &&
+ (opt_waitmarked_timeout > 0)) {
+ timeout = time(NULL) + opt_waitmarked_timeout;
}
if (confflags & CONFFLAG_RECORDCONF && conf->recording !=MEETME_RECORD_ACTIVE) {
@@ -922,6 +936,7 @@
if (conf->users == 2) {
if (!ast_streamfile(chan,"conf-onlyone",chan->language)) {
res = ast_waitstream(chan, AST_DIGIT_ANY);
+ ast_stopstream(chan);
if (res > 0)
keepplaying=0;
else if (res == -1)
@@ -930,6 +945,7 @@
} else {
if (!ast_streamfile(chan, "conf-thereare", chan->language)) {
res = ast_waitstream(chan, AST_DIGIT_ANY);
+ ast_stopstream(chan);
if (res > 0)
keepplaying=0;
else if (res == -1)
@@ -944,6 +960,7 @@
}
if (keepplaying && !ast_streamfile(chan, "conf-otherinparty", chan->language)) {
res = ast_waitstream(chan, AST_DIGIT_ANY);
+ ast_stopstream(chan);
if (res > 0)
keepplaying=0;
else if (res == -1)
@@ -1118,7 +1135,10 @@
outfd = -1;
ms = -1;
-
+
+ if (timeout && time(NULL) >= timeout)
+ break;
+
/* if we have just exited from the menu, and the user had a channel-driver
volume adjustment, restore it
*/
@@ -1181,6 +1201,8 @@
}
}
} else if(currentmarked >= 1 && lastmarked == 0) {
+ /* Marked user entered, so cancel timeout */
+ timeout = 0;
if (confflags & CONFFLAG_MONITOR)
ztc.confmode = ZT_CONF_CONFMON | ZT_CONF_LISTENER;
else if (confflags & CONFFLAG_TALKER)
@@ -1775,6 +1797,7 @@
int empty = 0, empty_no_pin = 0;
int always_prompt = 0;
char *notdata, *info, *inflags = NULL, *inpin = NULL, the_pin[AST_MAX_EXTENSION] = "";
+ char *optargs[OPT_ARG_ARRAY_SIZE] = { NULL, };
LOCAL_USER_ADD(u);
@@ -1805,7 +1828,7 @@
ast_copy_string(the_pin, inpin, sizeof(the_pin));
if (inflags) {
- ast_app_parse_options(meetme_opts, &confflags, NULL, inflags);
+ ast_app_parse_options(meetme_opts, &confflags, optargs, inflags);
dynamic = ast_test_flag(&confflags, CONFFLAG_DYNAMIC | CONFFLAG_DYNAMICPIN);
if (ast_test_flag(&confflags, CONFFLAG_DYNAMICPIN) && !inpin)
strcpy(the_pin, "q");
@@ -1962,12 +1985,14 @@
if (!ast_strlen_zero(cnf->pinadmin) && !strcasecmp(pin, cnf->pinadmin))
ast_set_flag(&confflags, CONFFLAG_ADMIN);
/* Run the conference */
- res = conf_run(chan, cnf, confflags.flags);
+ res = conf_run(chan, cnf, confflags.flags, optargs);
break;
} else {
/* Pin invalid */
- if (!ast_streamfile(chan, "conf-invalidpin", chan->language))
+ if (!ast_streamfile(chan, "conf-invalidpin", chan->language)) {
res = ast_waitstream(chan, AST_DIGIT_ANY);
+ ast_stopstream(chan);
+ }
else {
ast_log(LOG_WARNING, "Couldn't play invalid pin msg!\n");
break;
@@ -2003,7 +2028,7 @@
allowretry = 0;
/* Run the conference */
- res = conf_run(chan, cnf, confflags.flags);
+ res = conf_run(chan, cnf, confflags.flags, optargs);
}
}
}
Modified: team/oej/jitterbuffer-1.2/apps/app_mixmonitor.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_mixmonitor.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_mixmonitor.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_mixmonitor.c Tue Oct 31 03:16:12 2006
@@ -109,23 +109,6 @@
AST_APP_OPTION_ARG('W', MUXFLAG_VOLUME, OPT_ARG_VOLUME),
});
-static void stopmon(struct ast_channel_spy *spy)
-{
- struct ast_channel *chan = spy->chan;
-
- /* If our status has changed to DONE, then the channel we're spying on is gone....
- DON'T TOUCH IT!!! RUN AWAY!!! */
- if (spy->status == CHANSPY_DONE)
- return;
-
- if (!chan)
- return;
-
- ast_mutex_lock(&chan->lock);
- ast_channel_spy_remove(chan, spy);
- ast_mutex_unlock(&chan->lock);
-}
-
static int startmon(struct ast_channel *chan, struct ast_channel_spy *spy)
{
struct ast_channel *peer;
@@ -164,9 +147,8 @@
ast_channel_spy_trigger_wait(&mixmonitor->spy);
- if (!mixmonitor->spy.chan || mixmonitor->spy.status != CHANSPY_RUNNING) {
+ if (!mixmonitor->spy.chan || mixmonitor->spy.status != CHANSPY_RUNNING)
break;
- }
while (1) {
if (!(f = ast_channel_spy_read_frame(&mixmonitor->spy, SAMPLES_PER_FRAME)))
@@ -189,7 +171,7 @@
ast_mutex_unlock(&mixmonitor->spy.lock);
- stopmon(&mixmonitor->spy);
+ ast_channel_spy_free(&mixmonitor->spy);
if (option_verbose > 1)
ast_verbose(VERBOSE_PREFIX_2 "End MixMonitor Recording %s\n", mixmonitor->name);
@@ -199,8 +181,6 @@
ast_verbose(VERBOSE_PREFIX_2 "Executing [%s]\n", mixmonitor->post_process);
ast_safe_system(mixmonitor->post_process);
}
-
- ast_mutex_destroy(&mixmonitor->spy.lock);
ast_closestream(mixmonitor->fs);
Modified: team/oej/jitterbuffer-1.2/apps/app_page.c
URL: http://svn.digium.com/view/asterisk/team/oej/jitterbuffer-1.2/apps/app_page.c?rev=46605&r1=46604&r2=46605&view=diff
==============================================================================
--- team/oej/jitterbuffer-1.2/apps/app_page.c (original)
+++ team/oej/jitterbuffer-1.2/apps/app_page.c Tue Oct 31 03:16:12 2006
@@ -179,7 +179,7 @@
if (options)
ast_app_parse_options(page_opts, &flags, NULL, options);
- snprintf(meetmeopts, sizeof(meetmeopts), "%ud|%sqxdw", confid, ast_test_flag(&flags, PAGE_DUPLEX) ? "" : "m");
[... 17355 lines stripped ...]
More information about the asterisk-commits
mailing list