[asterisk-commits] branch group/new_loader_completion r25907 - in
/team/group/new_loader_complet...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue May 9 01:02:35 MST 2006
Author: kpfleming
Date: Tue May 9 03:02:34 2006
New Revision: 25907
URL: http://svn.digium.com/view/asterisk?rev=25907&view=rev
Log:
update to trunk and re-enable automerge
Added:
team/group/new_loader_completion/aclocal.m4
- copied unchanged from r25894, trunk/aclocal.m4
team/group/new_loader_completion/configure
- copied unchanged from r25894, trunk/configure
team/group/new_loader_completion/include/autoconfig.h.in
- copied unchanged from r25894, trunk/include/autoconfig.h.in
team/group/new_loader_completion/install-sh
- copied unchanged from r25894, trunk/install-sh
team/group/new_loader_completion/missing
- copied unchanged from r25894, trunk/missing
team/group/new_loader_completion/mkinstalldirs
- copied unchanged from r25894, trunk/mkinstalldirs
Modified:
team/group/new_loader_completion/ (props changed)
team/group/new_loader_completion/Makefile
team/group/new_loader_completion/apps/app_festival.c
team/group/new_loader_completion/apps/app_queue.c
team/group/new_loader_completion/apps/app_voicemail.c
team/group/new_loader_completion/build_tools/Makefile
team/group/new_loader_completion/channel.c
team/group/new_loader_completion/channels/chan_sip.c
team/group/new_loader_completion/cli.c
team/group/new_loader_completion/configs/sip.conf.sample
team/group/new_loader_completion/configure.ac
team/group/new_loader_completion/include/ (props changed)
team/group/new_loader_completion/include/asterisk/ael_structs.h
team/group/new_loader_completion/indications.c
team/group/new_loader_completion/makeopts.in
team/group/new_loader_completion/manager.c
team/group/new_loader_completion/pbx.c
team/group/new_loader_completion/res/res_monitor.c
team/group/new_loader_completion/utils/Makefile
Propchange: team/group/new_loader_completion/
------------------------------------------------------------------------------
automerge = *
Propchange: team/group/new_loader_completion/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.
Propchange: team/group/new_loader_completion/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue May 9 03:02:34 2006
@@ -19,9 +19,4 @@
config.status
config.log
makeopts.xml
-install-sh
-configure
-mkinstalldirs
autom4te.cache
-missing
-aclocal.m4
Propchange: team/group/new_loader_completion/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue May 9 03:02:34 2006
@@ -1,1 +1,1 @@
-/trunk:1-25568
+/trunk:1-25894
Modified: team/group/new_loader_completion/Makefile
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/Makefile?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/Makefile (original)
+++ team/group/new_loader_completion/Makefile Tue May 9 03:02:34 2006
@@ -365,9 +365,9 @@
endif
ifeq ($(OSARCH),Linux)
- LIBS+=-ldl -lpthread -lncurses -lm -lresolv #-lnjamd
+ LIBS+=-ldl -lpthread $(EDITLINE_LIBS) -lm -lresolv #-lnjamd
else
- LIBS+=-lncurses -lm
+ LIBS+=$(EDITLINE_LIBS) -lm
endif
ifeq ($(OSARCH),Darwin)
@@ -395,22 +395,23 @@
endif
ifeq ($(OSARCH),NetBSD)
- LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib -lncurses
+ LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib $(EDITLINE_LIBS)
endif
ifeq ($(OSARCH),OpenBSD)
- LIBS+=-lcrypto -lpthread -lm -lncurses
+ LIBS+=-lcrypto -lpthread -lm $(EDITLINE_LIBS)
endif
ifeq ($(OSARCH),SunOS)
LIBS+=-lpthread -ldl -lnsl -lsocket -lresolv -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
OBJS+=strcompat.o
+ MENUSELECT_OBJS+=strcompat.o
ASTLINK=
SOLINK=-shared -fpic -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
endif
ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
- CFLAGS+=$(ASTCFLAGS) $(TOPDIR_CFLAGS)
+ CFLAGS+=$(TOPDIR_CFLAGS) $(ASTCFLAGS)
endif
# This is used when generating the doxygen documentation
@@ -431,12 +432,12 @@
@echo " + make install +"
@echo " +-------------------------------------------+"
-all: include/autoconfig.h menuselect.makeopts cleantest depend asterisk subdirs
+all: config.status menuselect.makeopts cleantest depend asterisk subdirs
configure:
- at ./bootstrap.sh
-include/autoconfig.h: configure
+config.status: configure
@CFLAGS="" ./configure
@echo "****"
@echo "**** The configure script was just executed, so 'make' needs to be"
@@ -528,7 +529,7 @@
rm -f $@.tmp
stdtime/libtime.a:
- CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C stdtime libtime.a
+ CFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" $(MAKE) -C stdtime libtime.a
asterisk: editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
build_tools/make_build_h > include/asterisk/build.h.tmp
@@ -543,16 +544,16 @@
$(CC) $(AUDIO_LIBS) -o muted muted.o
subdirs:
- for x in $(MOD_SUBDIRS); do CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C $$x || exit 1 ; done
- CFLAGS="$(ASTCFLAGS) $(OTHER_SUBDIR_CFLAGS)" $(MAKE) -C utils
- CFLAGS="$(ASTCFLAGS) $(OTHER_SUBDIR_CFLAGS)" $(MAKE) -C agi
+ @for x in $(MOD_SUBDIRS); do CFLAGS="$(MOD_SUBDIR_CFLAGS) $(ASTCFLAGS)" $(MAKE) -C $$x || exit 1 ; done
+ @CFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" $(MAKE) -C utils
+ @CFLAGS="$(OTHER_SUBDIR_CFLAGS) $(ASTCFLAGS)" $(MAKE) -C agi
clean-depend:
- for x in $(SUBDIRS); do $(MAKE) -C $$x clean-depend || exit 1 ; done
+ @for x in $(SUBDIRS); do $(MAKE) -C $$x clean-depend || exit 1 ; done
rm -f .depend .tags-depend
clean: clean-depend
- for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
+ @for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
rm -f *.o *.so asterisk
rm -f defaults.h
rm -f include/asterisk/build.h
@@ -708,7 +709,7 @@
if [ -f mpg123-0.59r/mpg123 ]; then $(MAKE) -C mpg123-0.59r install; fi
install-subdirs:
- for x in $(SUBDIRS); do $(MAKE) -C $$x install || exit 1 ; done
+ @for x in $(SUBDIRS); do $(MAKE) -C $$x install || exit 1 ; done
NEWMODS=$(notdir $(wildcard */*.so))
OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
@@ -914,7 +915,7 @@
valgrind: dont-optimize
depend: include/asterisk/version.h .depend defaults.h
- for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
+ @for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
.depend: include/asterisk/version.h defaults.h
build_tools/mkdep $(CFLAGS) $(wildcard *.c)
@@ -999,7 +1000,7 @@
menuselect: build_tools/menuselect makeopts.xml
- at build_tools/menuselect ${GLOBAL_MAKEOPTS} ${USER_MAKEOPTS} menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!"
-build_tools/menuselect: build_tools/menuselect.c build_tools/menuselect_curses.c build_tools/menuselect.h include/autoconfig.h strcompat.o mxml/libmxml.a
+build_tools/menuselect: build_tools/menuselect.c build_tools/menuselect_curses.c build_tools/menuselect.h include/autoconfig.h mxml/libmxml.a $(MENUSELECT_OBJS)
$(MAKE) -C build_tools menuselect
mxml/libmxml.a:
Modified: team/group/new_loader_completion/apps/app_festival.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/apps/app_festival.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/apps/app_festival.c (original)
+++ team/group/new_loader_completion/apps/app_festival.c Tue May 9 03:02:34 2006
@@ -304,6 +304,7 @@
char *data;
char *intstr;
struct ast_config *cfg;
+ char *newfestivalcommand;
if (ast_strlen_zero(vdata)) {
ast_log(LOG_WARNING, "festival requires an argument (text)\n");
@@ -336,6 +337,22 @@
}
if (!(festivalcommand = ast_variable_retrieve(cfg, "general", "festivalcommand"))) {
festivalcommand = "(tts_textasterisk \"%s\" 'file)(quit)\n";
+ } else { /* This else parses the festivalcommand that we're sent from the config file for \n's, etc */
+ int i, j;
+ newfestivalcommand = alloca(strlen(festivalcommand) + 1);
+
+ for (i = 0, j = 0; i < strlen(festivalcommand); i++) {
+ if (festivalcommand[i] == '\\' && festivalcommand[i + 1] == 'n') {
+ newfestivalcommand[j++] = '\n';
+ i++;
+ } else if (festivalcommand[i] == '\\') {
+ newfestivalcommand[j++] = festivalcommand[i + 1];
+ i++;
+ } else
+ newfestivalcommand[j++] = festivalcommand[i];
+ }
+ newfestivalcommand[j] = '\0';
+ festivalcommand = newfestivalcommand;
}
if (!(data = ast_strdupa(vdata))) {
Modified: team/group/new_loader_completion/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/apps/app_queue.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/apps/app_queue.c (original)
+++ team/group/new_loader_completion/apps/app_queue.c Tue May 9 03:02:34 2006
@@ -93,12 +93,14 @@
#include "asterisk/devicestate.h"
#include "asterisk/stringfields.h"
-#define QUEUE_STRATEGY_RINGALL 0
-#define QUEUE_STRATEGY_ROUNDROBIN 1
-#define QUEUE_STRATEGY_LEASTRECENT 2
-#define QUEUE_STRATEGY_FEWESTCALLS 3
-#define QUEUE_STRATEGY_RANDOM 4
-#define QUEUE_STRATEGY_RRMEMORY 5
+enum {
+ QUEUE_STRATEGY_RINGALL = 0,
+ QUEUE_STRATEGY_ROUNDROBIN,
+ QUEUE_STRATEGY_LEASTRECENT,
+ QUEUE_STRATEGY_FEWESTCALLS,
+ QUEUE_STRATEGY_RANDOM,
+ QUEUE_STRATEGY_RRMEMORY
+};
static struct strategy {
int strategy;
@@ -731,7 +733,7 @@
if (q->strategy < 0) {
ast_log(LOG_WARNING, "'%s' isn't a valid strategy for queue '%s', using ringall instead\n",
val, q->name);
- q->strategy = 0;
+ q->strategy = QUEUE_STRATEGY_RINGALL;
}
} else if (!strcasecmp(param, "joinempty")) {
if (!strcasecmp(val, "strict"))
@@ -1525,7 +1527,7 @@
ast_log(LOG_DEBUG, "Nobody left to try ringing in queue\n");
break;
}
- if (!qe->parent->strategy) {
+ if (qe->parent->strategy == QUEUE_STRATEGY_RINGALL) {
struct callattempt *cur;
/* Ring everyone who shares this best metric (for ringall) */
for (cur = outgoing; cur; cur = cur->q_next) {
@@ -1685,7 +1687,7 @@
numlines++;
}
if (pos > 1 /* found */ || !stillgoing /* nobody listening */ ||
- qe->parent->strategy /* ring would not be delivered */)
+ (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) /* ring would not be delivered */)
break;
/* On "ringall" strategy we only move to the next penalty level
when *all* ringing phones are done in the current penalty level */
@@ -1783,7 +1785,7 @@
if (in->cdr)
ast_cdr_busy(in->cdr);
do_hang(o);
- if (qe->parent->strategy) {
+ if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) {
if (qe->parent->timeoutrestart)
*to = orig;
ring_one(qe, outgoing, &numbusies);
@@ -1796,7 +1798,7 @@
if (in->cdr)
ast_cdr_busy(in->cdr);
do_hang(o);
- if (qe->parent->strategy) {
+ if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) {
if (qe->parent->timeoutrestart)
*to = orig;
ring_one(qe, outgoing, &numbusies);
@@ -1823,7 +1825,7 @@
ast_frfree(f);
} else {
do_hang(o);
- if (qe->parent->strategy) {
+ if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) {
if (qe->parent->timeoutrestart)
*to = orig;
ring_one(qe, outgoing, &numbusies);
@@ -1924,7 +1926,7 @@
if (option_debug)
ast_log(LOG_DEBUG, "There are %d available members.\n", avl);
- if (qe->parent->strategy == 1) {
+ if (qe->parent->strategy == QUEUE_STRATEGY_RINGALL) {
if (option_debug)
ast_log(LOG_DEBUG, "Even though there are %d available members, the strategy is ringall so only the head call is allowed in!\n", avl);
avl = 1;
Modified: team/group/new_loader_completion/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/apps/app_voicemail.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/apps/app_voicemail.c (original)
+++ team/group/new_loader_completion/apps/app_voicemail.c Tue May 9 03:02:34 2006
@@ -2046,7 +2046,7 @@
odbc_release_obj(obj);
goto yuck;
}
- snprintf(sql, sizeof(sql), "SELECT COUNT(*) FROM %s WHERE dir LIKE '%%%s/%s/%s'", odbc_table, context, tmp, "INBOX");
+ snprintf(sql, sizeof(sql), "SELECT COUNT(*) FROM %s WHERE dir = '%s%s/%s/%s'", odbc_table, VM_SPOOL_DIR, context, tmp, "INBOX");
res = SQLPrepare(stmt, sql, SQL_NTS);
if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", sql);
@@ -2084,7 +2084,7 @@
odbc_release_obj(obj);
goto yuck;
}
- snprintf(sql, sizeof(sql), "SELECT COUNT(*) FROM %s WHERE dir like '%%%s/%s/%s'", odbc_table, context, tmp, "Old");
+ snprintf(sql, sizeof(sql), "SELECT COUNT(*) FROM %s WHERE dir = '%s%s/%s/%s'", odbc_table, VM_SPOOL_DIR, context, tmp, "Old");
res = SQLPrepare(stmt, sql, SQL_NTS);
if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", sql);
@@ -2157,7 +2157,7 @@
odbc_release_obj(obj);
goto yuck;
}
- snprintf(sql, sizeof(sql), "SELECT COUNT(*) FROM %s WHERE dir like '%%%s/%s/%s'", odbc_table, context, tmp, "INBOX");
+ snprintf(sql, sizeof(sql), "SELECT COUNT(*) FROM %s WHERE dir = '%s%s/%s/%s'", odbc_table, VM_SPOOL_DIR, context, tmp, "INBOX");
res = SQLPrepare(stmt, sql, SQL_NTS);
if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", sql);
@@ -2234,7 +2234,7 @@
context++;
} else
context = "default";
- snprintf(fn, sizeof(fn), "%s/%s/%s/%s", VM_SPOOL_DIR, context, tmp, folder);
+ snprintf(fn, sizeof(fn), "%s%s/%s/%s", VM_SPOOL_DIR, context, tmp, folder);
dir = opendir(fn);
if (!dir)
return 0;
@@ -2292,7 +2292,7 @@
} else
context = "default";
if (newmsgs) {
- snprintf(fn, sizeof(fn), "%s/%s/%s/INBOX", VM_SPOOL_DIR, context, tmp);
+ snprintf(fn, sizeof(fn), "%s%s/%s/INBOX", VM_SPOOL_DIR, context, tmp);
dir = opendir(fn);
if (dir) {
while ((de = readdir(dir))) {
@@ -2305,7 +2305,7 @@
}
}
if (oldmsgs) {
- snprintf(fn, sizeof(fn), "%s/%s/%s/Old", VM_SPOOL_DIR, context, tmp);
+ snprintf(fn, sizeof(fn), "%s%s/%s/Old", VM_SPOOL_DIR, context, tmp);
dir = opendir(fn);
if (dir) {
while ((de = readdir(dir))) {
@@ -3358,7 +3358,11 @@
snprintf(ext_context, sizeof(ext_context), "%s@%s", vmu->mailbox, vmu->context);
if (!ast_strlen_zero(vmu->attachfmt)) {
- fmt = vmu->attachfmt;
+ if (strstr(fmt, vmu->attachfmt)) {
+ fmt = vmu->attachfmt;
+ } else {
+ ast_log(LOG_WARNING, "Attachment format '%s' is not one of the recorded formats '%s'. Falling back to default format for '%s@%s'.\n", vmu->attachfmt, fmt, vmu->mailbox, vmu->context);
+ }
}
/* Attach only the first format */
Modified: team/group/new_loader_completion/build_tools/Makefile
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/build_tools/Makefile?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/build_tools/Makefile (original)
+++ team/group/new_loader_completion/build_tools/Makefile Tue May 9 03:02:34 2006
@@ -1,6 +1,10 @@
MENUSELECT_OBJS=menuselect.o menuselect_curses.o
MENUSELECT_CFLAGS=-g -c -D_GNU_SOURCE -I../ -I../include/
MENUSELECT_LIBS=../mxml/libmxml.a
+
+ifeq ($(OSARCH),SunOS)
+ MENUSELECT_OBJS+=../strcompat.o
+endif
ifneq ($(NCURSES_LIB),)
MENUSELECT_LIBS+=$(NCURSES_LIB)
@@ -11,7 +15,7 @@
endif
menuselect: $(MENUSELECT_OBJS)
- $(CC) -g -o $@ ../strcompat.o $(MENUSELECT_OBJS) $(MENUSELECT_LIBS)
+ $(CC) -g -o $@ $(MENUSELECT_OBJS) $(MENUSELECT_LIBS)
menuselect.o: menuselect.c menuselect.h
$(CC) -o $@ $(MENUSELECT_CFLAGS) $<
Modified: team/group/new_loader_completion/channel.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/channel.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/channel.c (original)
+++ team/group/new_loader_completion/channel.c Tue May 9 03:02:34 2006
@@ -1904,6 +1904,7 @@
chan->readq = f->next;
f->next = NULL;
/* Interpret hangup and return NULL */
+ /* XXX why not the same for frames from the channel ? */
if (f->frametype == AST_FRAME_CONTROL && f->subclass == AST_CONTROL_HANGUP) {
ast_frfree(f);
f = NULL;
@@ -1978,6 +1979,7 @@
queue_frame_to_spies(chan, f, SPY_READ);
if (chan->monitor && chan->monitor->read_stream ) {
+ /* XXX what does this do ? */
#ifndef MONITOR_CONSTANT_DELAY
int jump = chan->outsmpl - chan->insmpl - 4 * f->samples;
if (jump >= 0) {
Modified: team/group/new_loader_completion/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/channels/chan_sip.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/channels/chan_sip.c (original)
+++ team/group/new_loader_completion/channels/chan_sip.c Tue May 9 03:02:34 2006
@@ -5236,7 +5236,7 @@
other end knows and replace the current call with this new call */
if (p->options && p->options->replaces && !ast_strlen_zero(p->options->replaces)) {
add_header(&req, "Replaces", p->options->replaces);
- add_header(&req, "Required", "replaces");
+ add_header(&req, "Require", "replaces");
}
if (p->options && !ast_strlen_zero(p->options->distinctive_ring)) {
@@ -10986,7 +10986,7 @@
}
/* Find out what they require */
- required = get_header(req, "Required");
+ required = get_header(req, "Require");
if (!ast_strlen_zero(required)) {
required_profile = parse_sip_options(NULL, required);
if (required_profile) { /* They require something */
@@ -11808,7 +11808,7 @@
if (!ast_test_flag(req, SIP_PKT_IGNORE) && req->method == SIP_INVITE) {
transmit_response_reliable(p, "481 Call/Transaction Does Not Exist", req);
/* Will cease to exist after ACK */
- } else {
+ } else if (req->method != SIP_ACK) {
transmit_response(p, "481 Call/Transaction Does Not Exist", req);
ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
}
Modified: team/group/new_loader_completion/cli.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/cli.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/cli.c (original)
+++ team/group/new_loader_completion/cli.c Tue May 9 03:02:34 2006
@@ -421,15 +421,21 @@
}
if (concise) {
ast_cli(fd, CONCISE_FORMAT_STRING, c->name, c->context, c->exten, c->priority, ast_state2str(c->_state),
- c->appl ? c->appl : "(None)", c->data ? c->data : "",
+ c->appl ? c->appl : "(None)",
+ S_OR(c->data, ""), /* XXX different from verbose ? */
S_OR(c->cid.cid_num, ""),
- c->accountcode ? c->accountcode : "", c->amaflags,
- durbuf, bc ? bc->name : "(None)");
+ S_OR(c->accountcode, ""),
+ c->amaflags,
+ durbuf,
+ bc ? bc->name : "(None)");
} else if (verbose) {
ast_cli(fd, VERBOSE_FORMAT_STRING, c->name, c->context, c->exten, c->priority, ast_state2str(c->_state),
- c->appl ? c->appl : "(None)", c->data ? S_OR(c->data, "(Empty)" ): "(None)",
- S_OR(c->cid.cid_num, ""), durbuf,
- c->accountcode ? c->accountcode : "", bc ? bc->name : "(None)");
+ c->appl ? c->appl : "(None)",
+ c->data ? S_OR(c->data, "(Empty)" ): "(None)",
+ S_OR(c->cid.cid_num, ""),
+ durbuf,
+ S_OR(c->accountcode, ""),
+ bc ? bc->name : "(None)");
} else {
if (!ast_strlen_zero(c->context) && !ast_strlen_zero(c->exten))
snprintf(locbuf, sizeof(locbuf), "%s@%s:%d", c->exten, c->context, c->priority);
Modified: team/group/new_loader_completion/configs/sip.conf.sample
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/configs/sip.conf.sample?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/configs/sip.conf.sample (original)
+++ team/group/new_loader_completion/configs/sip.conf.sample Tue May 9 03:02:34 2006
@@ -29,6 +29,8 @@
; this can also be set to 'osp'
; if asterisk was compiled with OSP support.)
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
+;allowtransfer=no ; Disable all transfers (unless enabled in peers or users)
+ ; Default is enabled
;realm=mydomain.tld ; Realm for digest authentication
; defaults to "asterisk"
; Realms MUST be globally unique according to RFC 3261
@@ -334,6 +336,7 @@
; restrictcid restrictcid
; allowoverlap allowoverlap
; allowsubscribe allowsubscribe
+; allowtransfer allowtransfer
; subscribecontext subscribecontext
; videosupport videosupport
; maxcallbitrate maxcallbitrate
Modified: team/group/new_loader_completion/configure.ac
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/configure.ac?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/configure.ac (original)
+++ team/group/new_loader_completion/configure.ac Tue May 9 03:02:34 2006
@@ -171,8 +171,25 @@
AST_EXT_LIB([sqlite], [sqlite_exec], [sqlite.h], [SQLITE], [SQLite])
AST_EXT_LIB([ssl], [ssl2_connect], [openssl/ssl.h], [OPENSSL], [OpenSSL], [-lcrypto])
AST_EXT_LIB([tds], [tds_version], [tds.h], [FREETDS], [FreeTDS])
+AST_EXT_LIB([termcap], [tgetent], [], [TERMCAP], [Termcap])
+AST_EXT_LIB([tinfo], [tgetent], [], [TINFO], [Term Info])
AST_EXT_LIB([vorbis], [vorbis_info_init], [vorbis/codec.h], [VORBIS], [Vorbis], [-lm -lvorbisenc])
AST_EXT_LIB([z], [compress], [zlib.h], [ZLIB], [zlib])
+
+EDITLINE_LIBS=""
+if test "x$termcap_LIB" != "x" ; then
+ EDITLINE_LIBS="$termcap_LIB"
+elif test "x$tinfo_LIB" != "x" ; then
+ EDITLINE_LIBS="$tinfo_LIB"
+elif test "x$curses_LIB" != "x" ; then
+ EDITLINE_LIBS="$curses_LIB"
+elif test "x$ncurses_LIB" != "x" ; then
+ EDITLINE_LIBS="$ncurses_LIB"
+else
+ echo "*** termcap support not found"
+ exit 1
+fi
+AC_SUBST(EDITLINE_LIBS)
PBX_LIBossaudio=0
AC_CHECK_HEADER([linux/soundcard.h],
@@ -339,7 +356,7 @@
esac
])
if test "${USE_VPB}" != "no"; then
- echo -n "checking for vpb_open in -lvpb..."
+ echo -n "checking for vpb_open in -lvpb... "
saved_libs="${LIBS}"
saved_cppflags="${CPPFLAGS}"
if test "x${VPB_DIR}" != "x"; then
@@ -401,7 +418,7 @@
PBX_QT=0
if test "${USE_QT}" != "no"; then
- echo -n "checking for QDate in -lqt..."
+ echo -n "checking for QDate in -lqt... "
saved_libs="${LIBS}"
saved_cppflags="${CPPFLAGS}"
if test "x${QT_DIR}" != "x"; then
@@ -487,7 +504,7 @@
PBX_KDE=0
if test "${USE_KDE}" != "no"; then
- echo -n "checking for crashHandler in -lkdecore..."
+ echo -n "checking for crashHandler in -lkdecore... "
saved_ldflags="${LDFLAGS}"
LDFLAGS="-I${KDE_DIR}/include ${LDFLAGS} -L${KDE_DIR}/lib -lkdecore"
AC_LINK_IFELSE(
@@ -566,7 +583,7 @@
esac
])
if test "${USE_PWLIB}" != "no"; then
- echo -n "checking for existence of pwlib..."
+ echo -n "checking for existence of pwlib... "
saved_ldflags="${LDFLAGS}"
LDFLAGS="${LDFLAGS} -L${PWLIB_DIR} -l${PLATFORM_PTLIB}"
@@ -696,7 +713,7 @@
echo "Package configured for: "
echo " OS type : $PBX_OSTYPE"
-echo " host cpu : $host_cpu"
+echo " Host CPU : $host_cpu"
if test "x${crossCompile}" = xYes; then
echo ""
echo " Cross Compilation = YES"
Propchange: team/group/new_loader_completion/include/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue May 9 03:02:34 2006
@@ -1,2 +1,1 @@
autoconfig.h
-autoconfig.h.in
Modified: team/group/new_loader_completion/include/asterisk/ael_structs.h
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/include/asterisk/ael_structs.h?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/include/asterisk/ael_structs.h (original)
+++ team/group/new_loader_completion/include/asterisk/ael_structs.h Tue May 9 03:02:34 2006
@@ -7,10 +7,10 @@
#define quad_t int64_t
#endif
-#ifdef LONG_LONG_MIN
+#if defined(LONG_LONG_MIN) && !defined(QUAD_MIN)
#define QUAD_MIN LONG_LONG_MIN
#endif
-#ifdef LONG_LONG_MAX
+#if defined(LONG_LONG_MAX) && !defined(QUAD_MAX)
#define QUAD_MAX LONG_LONG_MAX
#endif
Modified: team/group/new_loader_completion/indications.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/indications.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/indications.c (original)
+++ team/group/new_loader_completion/indications.c Tue May 9 03:02:34 2006
@@ -382,10 +382,7 @@
if (country == NULL)
return 0; /* not a single country insight */
- if (ast_mutex_lock(&tzlock)) {
- ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
- return 0;
- }
+ ast_mutex_lock(&tzlock);
do {
for (tz=tone_zones; tz; tz=tz->next) {
if (strcasecmp(country,tz->country)==0) {
@@ -419,10 +416,7 @@
if (zone == NULL)
return 0; /* not a single country insight */
- if (ast_mutex_lock(&tzlock)) {
- ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
- return 0;
- }
+ ast_mutex_lock(&tzlock);
for (ts=zone->tones; ts; ts=ts->next) {
if (strcasecmp(indication,ts->name)==0) {
/* found indication! */
@@ -457,10 +451,7 @@
{
struct tone_zone *tz,*pz;
- if (ast_mutex_lock(&tzlock)) {
- ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
- return -1;
- }
+ ast_mutex_lock(&tzlock);
for (pz=NULL,tz=tone_zones; tz; pz=tz,tz=tz->next) {
if (strcasecmp(zone->country,tz->country)==0) {
/* tone_zone already there, replace */
@@ -498,10 +489,7 @@
struct tone_zone *tz, *pz = NULL, *tmp;
int res = -1;
- if (ast_mutex_lock(&tzlock)) {
- ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
- return -1;
- }
+ ast_mutex_lock(&tzlock);
tz = tone_zones;
while (tz) {
if (country==NULL ||
@@ -546,10 +534,7 @@
if (zone->alias[0])
return -1;
- if (ast_mutex_lock(&tzlock)) {
- ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
- return -2;
- }
+ ast_mutex_lock(&tzlock);
for (ps=NULL,ts=zone->tones; ts; ps=ts,ts=ts->next) {
if (strcasecmp(indication,ts->name)==0) {
/* indication already there, replace */
@@ -588,10 +573,7 @@
if (zone->alias[0])
return -1;
- if (ast_mutex_lock(&tzlock)) {
- ast_log(LOG_WARNING, "Unable to lock tone_zones list\n");
- return -1;
- }
+ ast_mutex_lock(&tzlock);
ts = zone->tones;
while (ts) {
if (strcasecmp(indication,ts->name)==0) {
Modified: team/group/new_loader_completion/makeopts.in
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/makeopts.in?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/makeopts.in (original)
+++ team/group/new_loader_completion/makeopts.in Tue May 9 03:02:34 2006
@@ -101,3 +101,6 @@
NCURSES_LIB=@ncurses_LIB@
NCURSES_INCLUDE=@ncurses_INCLUDE@
+
+EDITLINE_LIBS=@EDITLINE_LIBS@
+
Modified: team/group/new_loader_completion/manager.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/manager.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/manager.c (original)
+++ team/group/new_loader_completion/manager.c Tue May 9 03:02:34 2006
@@ -1312,7 +1312,7 @@
/* Tell the manager what happened with the channel */
manager_event(EVENT_FLAG_CALL,
- res ? "OriginateSuccess" : "OriginateFailure",
+ res ? "OriginateFailure" : "OriginateSuccess",
"%s"
"Channel: %s/%s\r\n"
"Context: %s\r\n"
Modified: team/group/new_loader_completion/pbx.c
URL: http://svn.digium.com/view/asterisk/team/group/new_loader_completion/pbx.c?rev=25907&r1=25906&r2=25907&view=diff
==============================================================================
--- team/group/new_loader_completion/pbx.c (original)
+++ team/group/new_loader_completion/pbx.c Tue May 9 03:02:34 2006
@@ -700,23 +700,37 @@
static int matchcid(const char *cidpattern, const char *callerid)
{
- int failresult;
-
/* If the Caller*ID pattern is empty, then we're matching NO Caller*ID, so
failing to get a number should count as a match, otherwise not */
- if (!ast_strlen_zero(cidpattern))
- failresult = 0;
- else
- failresult = 1;
-
- if (!callerid)
- return failresult;
+ if (ast_strlen_zero(callerid))
+ return ast_strlen_zero(cidpattern) ? 1 : 0;
return ast_extension_match(cidpattern, callerid);
}
-static struct ast_exten *pbx_find_extension(struct ast_channel *chan, struct ast_context *bypass, const char *context, const char *exten, int priority, const char *label, const char *callerid, int action, char *incstack[], int *stacklen, int *status, struct ast_switch **swo, char **data, const char **foundcontext)
+/* request and result for pbx_find_extension */
+struct pbx_find_info {
+#if 0
+ const char *context;
+ const char *exten;
+ int priority;
+#endif
+
+ char *incstack[AST_PBX_MAX_STACK]; /* filled during the search */
+ int stacklen; /* modified during the search */
+ int status; /* set on return */
+ struct ast_switch *swo; /* set on return */
+ const char *data; /* set on return */
+ const char *foundcontext; /* set on return */
+};
+
+static struct ast_exten *pbx_find_extension(struct ast_channel *chan,
+ struct ast_context *bypass,
+ const char *context, const char *exten, int priority,
+ const char *label, const char *callerid, int action,
+ char *incstack[], int *stacklen, int *status, struct ast_switch **swo,
+ char **data, const char **foundcontext)
{
int x, res;
struct ast_context *tmp;
@@ -725,6 +739,8 @@
struct ast_sw *sw;
struct ast_switch *asw;
+ struct ast_exten *earlymatch = NULL;
+
/* Initialize status if appropriate */
if (!*stacklen) {
*status = STATUS_NO_CONTEXT;
@@ -741,96 +757,96 @@
if (!strcasecmp(incstack[x], context))
return NULL;
}
- if (bypass)
+ if (bypass) /* bypass means we only look there */
tmp = bypass;
- else
- tmp = contexts;
- for (; tmp; tmp = tmp->next) {
- /* Match context */
- if (bypass || !strcmp(tmp->name, context)) {
- struct ast_exten *earlymatch = NULL;
-
- if (*status < STATUS_NO_EXTENSION)
- *status = STATUS_NO_EXTENSION;
- for (eroot = tmp->root; eroot; eroot = eroot->next) {
- int match = 0;
- /* Match extension */
- if ((((action != HELPER_MATCHMORE) && ast_extension_match(eroot->exten, exten)) ||
- ((action == HELPER_CANMATCH) && (ast_extension_close(eroot->exten, exten, 0))) ||
- ((action == HELPER_MATCHMORE) && (match = ast_extension_close(eroot->exten, exten, 1)))) &&
- (!eroot->matchcid || matchcid(eroot->cidmatch, callerid))) {
-
- if (action == HELPER_MATCHMORE && match == 2 && !earlymatch) {
- /* It matched an extension ending in a '!' wildcard
- So ignore it for now, unless there's a better match */
- earlymatch = eroot;
- } else {
- if (*status < STATUS_NO_PRIORITY)
- *status = STATUS_NO_PRIORITY;
- for (e = eroot; e; e = e->peer) {
- /* Match priority */
- if (action == HELPER_FINDLABEL) {
- if (*status < STATUS_NO_LABEL)
- *status = STATUS_NO_LABEL;
- if (label && e->label && !strcmp(label, e->label)) {
- *status = STATUS_SUCCESS;
- *foundcontext = context;
- return e;
- }
- } else if (e->priority == priority) {
- *status = STATUS_SUCCESS;
- *foundcontext = context;
- return e;
- }
+ else { /* look in contexts */
+ for (tmp = contexts; tmp; tmp = tmp->next) {
+ if (!strcmp(tmp->name, context))
+ break;
+ }
+ if (!tmp)
+ return NULL;
+ }
+
+ if (*status < STATUS_NO_EXTENSION)
+ *status = STATUS_NO_EXTENSION;
+ for (eroot = tmp->root; eroot; eroot = eroot->next) {
+ int match = 0;
+ /* Match extension */
+ if ((((action != HELPER_MATCHMORE) && ast_extension_match(eroot->exten, exten)) ||
+ ((action == HELPER_CANMATCH) && (ast_extension_close(eroot->exten, exten, 0))) ||
+ ((action == HELPER_MATCHMORE) && (match = ast_extension_close(eroot->exten, exten, 1)))) &&
+ (!eroot->matchcid || matchcid(eroot->cidmatch, callerid))) {
+
+ if (action == HELPER_MATCHMORE && match == 2 && !earlymatch) {
+ /* It matched an extension ending in a '!' wildcard
+ So ignore it for now, unless there's a better match */
+ earlymatch = eroot;
+ } else {
+ if (*status < STATUS_NO_PRIORITY)
+ *status = STATUS_NO_PRIORITY;
+ for (e = eroot; e; e = e->peer) {
+ /* Match priority */
+ if (action == HELPER_FINDLABEL) {
+ if (*status < STATUS_NO_LABEL)
+ *status = STATUS_NO_LABEL;
+ if (label && e->label && !strcmp(label, e->label)) {
+ *status = STATUS_SUCCESS;
+ *foundcontext = context;
+ return e;
}
+ } else if (e->priority == priority) {
+ *status = STATUS_SUCCESS;
+ *foundcontext = context;
+ return e;
}
}
}
- if (earlymatch) {
- /* Bizarre logic for HELPER_MATCHMORE. We return zero to break out
- of the loop waiting for more digits, and _then_ match (normally)
- the extension we ended up with. We got an early-matching wildcard
- pattern, so return NULL to break out of the loop. */
+ }
+ }
+ if (earlymatch) {
+ /* Bizarre logic for HELPER_MATCHMORE. We return zero to break out
+ of the loop waiting for more digits, and _then_ match (normally)
+ the extension we ended up with. We got an early-matching wildcard
+ pattern, so return NULL to break out of the loop. */
+ return NULL;
+ }
+ /* Check alternative switches */
+ AST_LIST_TRAVERSE(&tmp->alts, sw, list) {
+ if ((asw = pbx_findswitch(sw->name))) {
+ /* Substitute variables now */
+ if (sw->eval)
+ pbx_substitute_variables_helper(chan, sw->data, sw->tmpdata, SWITCH_DATA_LENGTH - 1);
+ if (action == HELPER_CANMATCH)
+ res = asw->canmatch ? asw->canmatch(chan, context, exten, priority, callerid, sw->eval ? sw->tmpdata : sw->data) : 0;
+ else if (action == HELPER_MATCHMORE)
+ res = asw->matchmore ? asw->matchmore(chan, context, exten, priority, callerid, sw->eval ? sw->tmpdata : sw->data) : 0;
+ else
+ res = asw->exists ? asw->exists(chan, context, exten, priority, callerid, sw->eval ? sw->tmpdata : sw->data) : 0;
+ if (res) {
+ /* Got a match */
+ *swo = asw;
+ *data = sw->eval ? sw->tmpdata : sw->data;
+ *foundcontext = context;
return NULL;
}
- /* Check alternative switches */
- AST_LIST_TRAVERSE(&tmp->alts, sw, list) {
- if ((asw = pbx_findswitch(sw->name))) {
- /* Substitute variables now */
- if (sw->eval)
- pbx_substitute_variables_helper(chan, sw->data, sw->tmpdata, SWITCH_DATA_LENGTH - 1);
- if (action == HELPER_CANMATCH)
- res = asw->canmatch ? asw->canmatch(chan, context, exten, priority, callerid, sw->eval ? sw->tmpdata : sw->data) : 0;
- else if (action == HELPER_MATCHMORE)
- res = asw->matchmore ? asw->matchmore(chan, context, exten, priority, callerid, sw->eval ? sw->tmpdata : sw->data) : 0;
- else
- res = asw->exists ? asw->exists(chan, context, exten, priority, callerid, sw->eval ? sw->tmpdata : sw->data) : 0;
- if (res) {
- /* Got a match */
- *swo = asw;
- *data = sw->eval ? sw->tmpdata : sw->data;
- *foundcontext = context;
- return NULL;
- }
- } else {
- ast_log(LOG_WARNING, "No such switch '%s'\n", sw->name);
- }
- }
- /* Setup the stack */
- incstack[*stacklen] = tmp->name;
- (*stacklen)++;
- /* Now try any includes we have in this context */
- for (i = tmp->includes; i; i = i->next) {
- if (include_valid(i)) {
- if ((e = pbx_find_extension(chan, bypass, i->rname, exten, priority, label, callerid, action, incstack, stacklen, status, swo, data, foundcontext)))
- return e;
- if (*swo)
- return NULL;
- }
- }
- break;
- }
- }
+ } else {
+ ast_log(LOG_WARNING, "No such switch '%s'\n", sw->name);
+ }
+ }
+ /* Setup the stack */
+ incstack[*stacklen] = tmp->name;
+ (*stacklen)++;
+ /* Now try any includes we have in this context */
+ for (i = tmp->includes; i; i = i->next) {
+ if (include_valid(i)) {
+ if ((e = pbx_find_extension(chan, bypass, i->rname, exten, priority, label, callerid, action, incstack, stacklen, status, swo, data, foundcontext)))
+ return e;
+ if (*swo)
+ return NULL;
+ }
+ }
+
return NULL;
}
@@ -878,6 +894,7 @@
ast_copy_string(workspace, value, workspace_len); /* always make a copy */
+ /* Quick check if no need to do anything */
if (offset == 0 && length < 0) /* take the whole string */
return ret;
@@ -1189,58 +1206,51 @@
return 0;
}
-int ast_func_read(struct ast_channel *chan, char *function, char *workspace, size_t len)
-{
- char *args = NULL, *p;
- struct ast_custom_function *acfptr;
-
- if ((args = strchr(function, '('))) {
+/*! \brief return a pointer to the arguments of the function,
+ * and terminates the function name with '\0'
+ */
+static char *func_args(char *function)
+{
+ char *args = strchr(function, '(');
+
+ if (!args)
+ ast_log(LOG_WARNING, "Function doesn't contain parentheses. Assuming null argument.\n");
+ else {
+ char *p;
*args++ = '\0';
- if ((p = strrchr(args, ')')))
+ if ((p = strrchr(args, ')')) )
*p = '\0';
else
ast_log(LOG_WARNING, "Can't find trailing parenthesis?\n");
- } else {
- ast_log(LOG_WARNING, "Function doesn't contain parentheses. Assuming null argument.\n");
- }
-
- if ((acfptr = ast_custom_function_find(function))) {
- /* run the custom function */
- if (acfptr->read)
- return acfptr->read(chan, function, args, workspace, len);
- else
- ast_log(LOG_ERROR, "Function %s cannot be read\n", function);
- } else {
+ }
+ return args;
+}
+
+int ast_func_read(struct ast_channel *chan, char *function, char *workspace, size_t len)
+{
+ char *args = func_args(function);
+ struct ast_custom_function *acfptr = ast_custom_function_find(function);
+
+ if (acfptr == NULL)
ast_log(LOG_ERROR, "Function %s not registered\n", function);
- }
-
+ else if (!acfptr->read)
+ ast_log(LOG_ERROR, "Function %s cannot be read\n", function);
+ else
+ return acfptr->read(chan, function, args, workspace, len);
return -1;
}
int ast_func_write(struct ast_channel *chan, char *function, const char *value)
{
- char *args = NULL, *p;
- struct ast_custom_function *acfptr;
-
- if ((args = strchr(function, '('))) {
- *args++ = '\0';
- if ((p = strrchr(args, ')')))
- *p = '\0';
- else
- ast_log(LOG_WARNING, "Can't find trailing parenthesis?\n");
- } else {
- ast_log(LOG_WARNING, "Function doesn't contain parentheses. Assuming null argument.\n");
- }
-
[... 944 lines stripped ...]
More information about the asterisk-commits
mailing list