[asterisk-commits] pabelanger: branch pabelanger/issue18183 r298172 - in /team/pabelanger/issue1...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sun Dec 12 11:10:00 CST 2010
Author: pabelanger
Date: Sun Dec 12 11:09:28 2010
New Revision: 298172
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=298172
Log:
Resync and automerge
Added:
team/pabelanger/issue18183/contrib/init.d/org.asterisk.muted.plist
- copied unchanged from r298099, branches/1.8/contrib/init.d/org.asterisk.muted.plist
team/pabelanger/issue18183/doc/README.txt
- copied unchanged from r298099, branches/1.8/doc/README.txt
team/pabelanger/issue18183/tests/test_expr.c
- copied unchanged from r298099, branches/1.8/tests/test_expr.c
Removed:
team/pabelanger/issue18183/doc/CCSS_architecture.pdf
team/pabelanger/issue18183/doc/CODING-GUIDELINES
team/pabelanger/issue18183/doc/HOWTO_collect_debug_information.txt
team/pabelanger/issue18183/doc/India-CID.txt
team/pabelanger/issue18183/doc/PEERING
team/pabelanger/issue18183/doc/advice_of_charge.txt
team/pabelanger/issue18183/doc/asterisk-mib.txt
team/pabelanger/issue18183/doc/backtrace.txt
team/pabelanger/issue18183/doc/building_queues.txt
team/pabelanger/issue18183/doc/callfiles.txt
team/pabelanger/issue18183/doc/chan_sip-perf-testing.txt
team/pabelanger/issue18183/doc/cli.txt
team/pabelanger/issue18183/doc/codec-64bit.txt
team/pabelanger/issue18183/doc/database_transactions.txt
team/pabelanger/issue18183/doc/datastores.txt
team/pabelanger/issue18183/doc/digium-mib.txt
team/pabelanger/issue18183/doc/distributed_devstate-XMPP.txt
team/pabelanger/issue18183/doc/distributed_devstate.txt
team/pabelanger/issue18183/doc/externalivr.txt
team/pabelanger/issue18183/doc/followme.txt
team/pabelanger/issue18183/doc/google-soc2009-ideas.txt
team/pabelanger/issue18183/doc/hoard.txt
team/pabelanger/issue18183/doc/jabber.txt
team/pabelanger/issue18183/doc/janitor-projects.txt
team/pabelanger/issue18183/doc/jingle.txt
team/pabelanger/issue18183/doc/ldap.txt
team/pabelanger/issue18183/doc/macroexclusive.txt
team/pabelanger/issue18183/doc/manager_1_1.txt
team/pabelanger/issue18183/doc/modules.txt
team/pabelanger/issue18183/doc/osp.txt
team/pabelanger/issue18183/doc/queue.txt
team/pabelanger/issue18183/doc/realtimetext.txt
team/pabelanger/issue18183/doc/res_config_sqlite.txt
team/pabelanger/issue18183/doc/rtp-packetization.txt
team/pabelanger/issue18183/doc/sip-retransmit.txt
team/pabelanger/issue18183/doc/siptls.txt
team/pabelanger/issue18183/doc/smdi.txt
team/pabelanger/issue18183/doc/sms.txt
team/pabelanger/issue18183/doc/snmp.txt
team/pabelanger/issue18183/doc/speechrec.txt
team/pabelanger/issue18183/doc/ss7.txt
team/pabelanger/issue18183/doc/tex/
team/pabelanger/issue18183/doc/timing.txt
team/pabelanger/issue18183/doc/unistim.txt
team/pabelanger/issue18183/doc/valgrind.txt
team/pabelanger/issue18183/doc/video.txt
team/pabelanger/issue18183/doc/video_console.txt
team/pabelanger/issue18183/doc/voicemail_odbc_postgresql.txt
Modified:
team/pabelanger/issue18183/ (props changed)
team/pabelanger/issue18183/Makefile
team/pabelanger/issue18183/UPGRADE.txt
team/pabelanger/issue18183/addons/ooh323c/src/ooGkClient.c
team/pabelanger/issue18183/apps/app_dial.c
team/pabelanger/issue18183/apps/app_followme.c
team/pabelanger/issue18183/apps/app_macro.c
team/pabelanger/issue18183/apps/app_meetme.c
team/pabelanger/issue18183/apps/app_queue.c
team/pabelanger/issue18183/apps/app_voicemail.c
team/pabelanger/issue18183/build_tools/prep_tarball
team/pabelanger/issue18183/channels/chan_console.c
team/pabelanger/issue18183/channels/chan_dahdi.c
team/pabelanger/issue18183/channels/chan_gtalk.c
team/pabelanger/issue18183/channels/chan_iax2.c
team/pabelanger/issue18183/channels/chan_misdn.c
team/pabelanger/issue18183/channels/chan_sip.c
team/pabelanger/issue18183/channels/misdn/isdn_msg_parser.c
team/pabelanger/issue18183/channels/sig_analog.c
team/pabelanger/issue18183/channels/sig_analog.h
team/pabelanger/issue18183/channels/sig_pri.c
team/pabelanger/issue18183/channels/sig_pri.h
team/pabelanger/issue18183/codecs/codec_dahdi.c
team/pabelanger/issue18183/configs/calendar.conf.sample
team/pabelanger/issue18183/configs/chan_dahdi.conf.sample
team/pabelanger/issue18183/configs/extensions.conf.sample
team/pabelanger/issue18183/configs/res_curl.conf.sample
team/pabelanger/issue18183/configs/sip_notify.conf.sample
team/pabelanger/issue18183/configure
team/pabelanger/issue18183/configure.ac
team/pabelanger/issue18183/contrib/init.d/org.asterisk.asterisk.plist
team/pabelanger/issue18183/contrib/scripts/ast_tls_cert
team/pabelanger/issue18183/contrib/scripts/install_prereq
team/pabelanger/issue18183/funcs/func_curl.c
team/pabelanger/issue18183/include/asterisk.h
team/pabelanger/issue18183/include/asterisk/autoconfig.h.in
team/pabelanger/issue18183/include/asterisk/channel.h
team/pabelanger/issue18183/include/asterisk/event.h
team/pabelanger/issue18183/include/asterisk/frame.h
team/pabelanger/issue18183/include/asterisk/jabber.h
team/pabelanger/issue18183/include/asterisk/res_fax.h
team/pabelanger/issue18183/include/asterisk/rtp_engine.h
team/pabelanger/issue18183/include/asterisk/timing.h
team/pabelanger/issue18183/main/abstract_jb.c
team/pabelanger/issue18183/main/asterisk.c
team/pabelanger/issue18183/main/channel.c
team/pabelanger/issue18183/main/devicestate.c
team/pabelanger/issue18183/main/event.c
team/pabelanger/issue18183/main/features.c
team/pabelanger/issue18183/main/manager.c
team/pabelanger/issue18183/main/netsock.c
team/pabelanger/issue18183/main/pbx.c
team/pabelanger/issue18183/main/rtp_engine.c
team/pabelanger/issue18183/main/say.c
team/pabelanger/issue18183/main/timing.c
team/pabelanger/issue18183/pbx/pbx_spool.c
team/pabelanger/issue18183/res/ais/clm.c
team/pabelanger/issue18183/res/ais/evt.c
team/pabelanger/issue18183/res/res_calendar.c
team/pabelanger/issue18183/res/res_fax.c
team/pabelanger/issue18183/res/res_jabber.c
team/pabelanger/issue18183/res/res_timing_timerfd.c
team/pabelanger/issue18183/utils/muted.c
Propchange: team/pabelanger/issue18183/
------------------------------------------------------------------------------
automerge = *
Propchange: team/pabelanger/issue18183/
------------------------------------------------------------------------------
--- automerge-email (original)
+++ automerge-email Sun Dec 12 11:09:28 2010
@@ -1,1 +1,1 @@
-paul.belanger at polybeacon.com
+pabelanger at digium.com
Propchange: team/pabelanger/issue18183/
------------------------------------------------------------------------------
Binary property 'branch-1.6.2-merged' - no diff available.
Propchange: team/pabelanger/issue18183/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Sun Dec 12 11:09:28 2010
@@ -1,1 +1,1 @@
-/branches/1.8:1-293494
+/branches/1.8:1-293494,293496-298099
Modified: team/pabelanger/issue18183/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/Makefile?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/Makefile (original)
+++ team/pabelanger/issue18183/Makefile Sun Dec 12 11:09:28 2010
@@ -231,6 +231,9 @@
endif
ifeq ($(OSARCH),FreeBSD)
+ ifeq ($(PROC),i386)
+ _ASTCFLAGS+=-march=i686
+ endif
# -V is understood by BSD Make, not by GNU make.
BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
_ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
@@ -798,8 +801,17 @@
cat contrib/init.d/rc.archlinux.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > contrib/init.d/rc.asterisk.tmp ; \
$(INSTALL) -m 755 contrib/init.d/rc.asterisk.tmp $(DESTDIR)/etc/rc.d/asterisk ; \
rm -f contrib/init.d/rc.asterisk.tmp ; \
- elif [ -d $(DESTDIR)/Library/LaunchDaemons -a ! -f $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist ] ; then \
- $(INSTALL) -m 644 contrib/init.d/org.asterisk.asterisk.plist $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist; \
+ elif [ -d $(DESTDIR)/Library/LaunchDaemons ]; then \
+ if [ ! -f $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist ]; then \
+ sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;' < contrib/init.d/org.asterisk.asterisk.plist > asterisk.plist ; \
+ $(INSTALL) -m 644 asterisk.plist $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist; \
+ rm -f asterisk.plist; \
+ fi; \
+ if [ ! -f $(DESTDIR)/Library/LaunchDaemons/org.asterisk.muted.plist ]; then \
+ sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;' < contrib/init.d/org.asterisk.muted.plist > muted.plist ; \
+ $(INSTALL) -m 644 muted.plist $(DESTDIR)/Library/LaunchDaemons/org.asterisk.muted.plist; \
+ rm -f muted.plist; \
+ fi; \
elif [ -f /etc/slackware-version ]; then \
echo "Slackware is not currently supported, although an init script does exist for it."; \
else \
@@ -922,14 +934,6 @@
@cat sounds/sounds.xml >> $@
@echo "</menu>" >> $@
-pdf: asterisk.pdf
-asterisk.pdf:
- $(MAKE) -C doc/tex asterisk.pdf
-
-txt: asterisk.txt
-asterisk.txt:
- $(MAKE) -C doc/tex asterisk.txt
-
.PHONY: menuselect
.PHONY: main
.PHONY: sounds
@@ -942,7 +946,6 @@
.PHONY: uninstall
.PHONY: _uninstall
.PHONY: uninstall-all
-.PHONY: pdf
.PHONY: dont-optimize
.PHONY: badshell
.PHONY: installdirs
Modified: team/pabelanger/issue18183/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/UPGRADE.txt?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/UPGRADE.txt (original)
+++ team/pabelanger/issue18183/UPGRADE.txt Sun Dec 12 11:09:28 2010
@@ -19,6 +19,10 @@
===========================================================
From 1.6.2 to 1.8:
+
+* A couple of CLI commands in res_ais were changed back to their original form:
+ "ais show clm members" --> "ais clm show members"
+ "ais show evt event channels" --> "ais evt show event channels"
* The default value for 'autofill' and 'shared_lastcall' in queues.conf has
been changed to 'yes'.
Modified: team/pabelanger/issue18183/addons/ooh323c/src/ooGkClient.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/addons/ooh323c/src/ooGkClient.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/addons/ooh323c/src/ooGkClient.c (original)
+++ team/pabelanger/issue18183/addons/ooh323c/src/ooGkClient.c Sun Dec 12 11:09:28 2010
@@ -823,10 +823,9 @@
sizeof(ASN116BITCHAR)* pGkClient->gkId.nchars);
}
else{
- OOTRACEERR1("ERROR:No Gatekeeper ID present in received GKConfirmed "
+ OOTRACEINFO1("ERROR:No Gatekeeper ID present in received GKConfirmed "
"message\n");
- OOTRACEINFO1("Ignoring message and will retransmit GRQ after timeout\n");
- return OO_FAILED;
+ pGkClient->gkId.nchars = 0;
}
/* Extract Gatekeeper's RAS address */
@@ -1018,21 +1017,23 @@
return OO_FAILED;
}
- pRegReq->m.gatekeeperIdentifierPresent=TRUE;
- pRegReq->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
- pRegReq->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc
+ if (pGkClient->gkId.nchars) {
+ pRegReq->m.gatekeeperIdentifierPresent=TRUE;
+ pRegReq->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
+ pRegReq->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc
(pctxt, pGkClient->gkId.nchars*sizeof(ASN116BITCHAR));
- if(!pRegReq->gatekeeperIdentifier.data)
- {
+ if(!pRegReq->gatekeeperIdentifier.data)
+ {
OOTRACEERR1("Error: Failed to allocate memory for GKIdentifier in RRQ "
"message.\n");
memReset(pctxt);
pGkClient->state = GkClientFailed;
ast_mutex_unlock(&pGkClient->Lock);
return OO_FAILED;
- }
- memcpy(pRegReq->gatekeeperIdentifier.data, pGkClient->gkId.data,
+ }
+ memcpy(pRegReq->gatekeeperIdentifier.data, pGkClient->gkId.data,
pGkClient->gkId.nchars*sizeof(ASN116BITCHAR));
+ }
ooGkClientFillVendor(pGkClient, &pRegReq->endpointVendor);
@@ -1149,7 +1150,26 @@
memcpy(pGkClient->endpointId.data,
pRegistrationConfirm->endpointIdentifier.data,
sizeof(ASN116BITCHAR)*pGkClient->endpointId.nchars);
-
+
+ /* Extract GK Identifier */
+
+ if(pRegistrationConfirm->m.gatekeeperIdentifierPresent && pGkClient->gkId.nchars == 0)
+ {
+ pGkClient->gkId.nchars = pRegistrationConfirm->gatekeeperIdentifier.nchars;
+ pGkClient->gkId.data = (ASN116BITCHAR*)memAlloc(&pGkClient->ctxt,
+ sizeof(ASN116BITCHAR)*pGkClient->gkId.nchars);
+ if(!pGkClient->gkId.data)
+ {
+ OOTRACEERR1("Error:Failed to allocate memory for GK ID data\n");
+ pGkClient->state = GkClientFailed;
+ return OO_FAILED;
+ }
+
+ memcpy(pGkClient->gkId.data,
+ pRegistrationConfirm->gatekeeperIdentifier.data,
+ sizeof(ASN116BITCHAR)* pGkClient->gkId.nchars);
+ }
+
/* Extract CallSignalling Address */
for(i=0; i<(int)pRegistrationConfirm->callSignalAddress.count; i++)
{
@@ -1437,21 +1457,23 @@
sizeof(ASN116BITCHAR)*pGkClient->endpointId.nchars);
/* Populate gatekeeper identifier */
- pUnregReq->m.gatekeeperIdentifierPresent = TRUE;
- pUnregReq->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
- pUnregReq->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc(pctxt,
+ if (pGkClient->gkId.nchars) {
+ pUnregReq->m.gatekeeperIdentifierPresent = TRUE;
+ pUnregReq->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
+ pUnregReq->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc(pctxt,
sizeof(ASN116BITCHAR)*pGkClient->gkId.nchars);
- if(!pUnregReq->gatekeeperIdentifier.data)
- {
+ if(!pUnregReq->gatekeeperIdentifier.data)
+ {
OOTRACEERR1("Error:Failed to allocate memory for GKID of URQ message\n");
memReset(pctxt);
pGkClient->state = GkClientFailed;
ast_mutex_unlock(&pGkClient->Lock);
return OO_FAILED;
- }
- memcpy((void*)pUnregReq->gatekeeperIdentifier.data,
+ }
+ memcpy((void*)pUnregReq->gatekeeperIdentifier.data,
(void*)pGkClient->gkId.data,
sizeof(ASN116BITCHAR)*pGkClient->gkId.nchars);
+ }
/* Check whether specific aliases are to be unregistered*/
if(aliases)
@@ -1766,21 +1788,23 @@
sizeof(H225CallIdentifier));
/* Populate Gatekeeper Id */
- pAdmReq->m.gatekeeperIdentifierPresent = TRUE;
- pAdmReq->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
- pAdmReq->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc(pctxt,
+ if (pGkClient->gkId.nchars) {
+ pAdmReq->m.gatekeeperIdentifierPresent = TRUE;
+ pAdmReq->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
+ pAdmReq->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc(pctxt,
sizeof(ASN116BITCHAR)*pGkClient->gkId.nchars);
- if(!pAdmReq->gatekeeperIdentifier.data)
- {
+ if(!pAdmReq->gatekeeperIdentifier.data)
+ {
OOTRACEERR1("Error:Failed to allocate memory for GKID of ARQ message\n");
memReset(pctxt);
pGkClient->state = GkClientFailed;
ast_mutex_unlock(&pGkClient->Lock);
return OO_FAILED;
- }
- memcpy((void*)pAdmReq->gatekeeperIdentifier.data,
+ }
+ memcpy((void*)pAdmReq->gatekeeperIdentifier.data,
(void*)pGkClient->gkId.data,
sizeof(ASN116BITCHAR)*pGkClient->gkId.nchars);
+ }
pAdmReq->m.willSupplyUUIEsPresent = 1;
pAdmReq->willSupplyUUIEs = FALSE;
@@ -2416,20 +2440,22 @@
pDRQ->m.callIdentifierPresent = 1;
memcpy((void*)&pDRQ->callIdentifier, (void*)&call->callIdentifier,
sizeof(H225CallIdentifier));
- pDRQ->m.gatekeeperIdentifierPresent = 1;
- pDRQ->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
- pDRQ->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc
+ if (pGkClient->gkId.nchars) {
+ pDRQ->m.gatekeeperIdentifierPresent = 1;
+ pDRQ->gatekeeperIdentifier.nchars = pGkClient->gkId.nchars;
+ pDRQ->gatekeeperIdentifier.data = (ASN116BITCHAR*)memAlloc
(pctxt, pGkClient->gkId.nchars*sizeof(ASN116BITCHAR));
- if(!pDRQ->gatekeeperIdentifier.data)
- {
+ if(!pDRQ->gatekeeperIdentifier.data)
+ {
OOTRACEERR1("Error:Failed to allocate memory for GKId in DRQ.\n");
memReset(pctxt);
pGkClient->state = GkClientFailed;
ast_mutex_unlock(&pGkClient->Lock);
return OO_FAILED;
- }
- memcpy(pDRQ->gatekeeperIdentifier.data, pGkClient->gkId.data,
+ }
+ memcpy(pDRQ->gatekeeperIdentifier.data, pGkClient->gkId.data,
pGkClient->gkId.nchars*sizeof(ASN116BITCHAR));
+ }
pDRQ->m.terminationCausePresent = 1;
pDRQ->terminationCause.t = T_H225CallTerminationCause_releaseCompleteCauseIE;
Modified: team/pabelanger/issue18183/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/apps/app_dial.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/apps/app_dial.c (original)
+++ team/pabelanger/issue18183/apps/app_dial.c Sun Dec 12 11:09:28 2010
@@ -984,7 +984,16 @@
ast_deactivate_generator(in);
/* If we are calling a single channel, and not providing ringback or music, */
/* then, make them compatible for in-band tone purpose */
- ast_channel_make_compatible(outgoing->chan, in);
+ if (ast_channel_make_compatible(outgoing->chan, in) < 0) {
+ /* If these channels can not be made compatible,
+ * there is no point in continuing. The bridge
+ * will just fail if it gets that far.
+ */
+ *to = -1;
+ strcpy(pa->status, "CONGESTION");
+ ast_cdr_failed(in->cdr);
+ return NULL;
+ }
}
if (!ast_test_flag64(peerflags, OPT_IGNORE_CONNECTEDLINE) && !ast_test_flag64(outgoing, DIAL_CALLERID_ABSENT)) {
Modified: team/pabelanger/issue18183/apps/app_followme.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/apps/app_followme.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/apps/app_followme.c (original)
+++ team/pabelanger/issue18183/apps/app_followme.c Sun Dec 12 11:09:28 2010
@@ -811,7 +811,6 @@
break;
while (nm) {
-
ast_debug(2, "Number %s timeout %ld\n", nm->number,nm->timeout);
number = ast_strdupa(nm->number);
@@ -823,6 +822,14 @@
rest++;
}
+ /* We check if that context exists, before creating the ast_channel struct needed */
+ if (!ast_exists_extension(caller, tpargs->context, number, 1, S_COR(caller->caller.id.number.valid, caller->caller.id.number.str, NULL))) {
+ /* XXX Should probably restructure to simply skip this item, instead of returning. XXX */
+ ast_log(LOG_ERROR, "Extension '%s@%s' doesn't exist\n", number, tpargs->context);
+ free(findme_user_list);
+ return;
+ }
+
if (!strcmp(tpargs->context, ""))
snprintf(dialarg, sizeof(dialarg), "%s", number);
else
@@ -830,7 +837,6 @@
tmpuser = ast_calloc(1, sizeof(*tmpuser));
if (!tmpuser) {
- ast_log(LOG_WARNING, "Out of memory!\n");
ast_free(findme_user_list);
return;
}
Modified: team/pabelanger/issue18183/apps/app_macro.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/apps/app_macro.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/apps/app_macro.c (original)
+++ team/pabelanger/issue18183/apps/app_macro.c Sun Dec 12 11:09:28 2010
@@ -539,22 +539,20 @@
}
if (!strcasecmp(chan->context, fullmacro)) {
+ const char *offsets;
+
/* If we're leaving the macro normally, restore original information */
chan->priority = oldpriority;
ast_copy_string(chan->context, oldcontext, sizeof(chan->context));
- if (!(ast_check_hangup(chan) & AST_SOFTHANGUP_ASYNCGOTO)) {
- /* Copy the extension, so long as we're not in softhangup, where we could be given an asyncgoto */
- const char *offsets;
- ast_copy_string(chan->exten, oldexten, sizeof(chan->exten));
- if ((offsets = pbx_builtin_getvar_helper(chan, "MACRO_OFFSET"))) {
- /* Handle macro offset if it's set by checking the availability of step n + offset + 1, otherwise continue
- normally if there is any problem */
- if (sscanf(offsets, "%30d", &offset) == 1) {
- if (ast_exists_extension(chan, chan->context, chan->exten,
- chan->priority + offset + 1,
- S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
- chan->priority += offset;
- }
+ ast_copy_string(chan->exten, oldexten, sizeof(chan->exten));
+ if ((offsets = pbx_builtin_getvar_helper(chan, "MACRO_OFFSET"))) {
+ /* Handle macro offset if it's set by checking the availability of step n + offset + 1, otherwise continue
+ normally if there is any problem */
+ if (sscanf(offsets, "%30d", &offset) == 1) {
+ if (ast_exists_extension(chan, chan->context, chan->exten,
+ chan->priority + offset + 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
+ chan->priority += offset;
}
}
}
Modified: team/pabelanger/issue18183/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/apps/app_meetme.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/apps/app_meetme.c (original)
+++ team/pabelanger/issue18183/apps/app_meetme.c Sun Dec 12 11:09:28 2010
@@ -492,7 +492,7 @@
</synopsis>
<syntax>
<xi:include xpointer="xpointer(/docs/manager[@name='Login']/syntax/parameter[@name='ActionID'])" />
- <parameter name="Conference" required="true">
+ <parameter name="Conference" required="false">
<para>Conference number.</para>
</parameter>
</syntax>
@@ -1215,9 +1215,9 @@
/* if we are creating a conference for a unit test, it is not neccesary
* to open a pseudo channel, so, if we fail continue creating
* the conference. */
- ast_test_status_update(test, "Unable to open pseudo device\n");
+ ast_test_status_update(test, "Unable to open DAHDI pseudo device\n");
} else {
- ast_log(LOG_WARNING, "Unable to open pseudo device\n");
+ ast_log(LOG_WARNING, "Unable to open DAHDI pseudo device\n");
if (cnf->fd >= 0)
close(cnf->fd);
ast_free(cnf);
@@ -2571,7 +2571,7 @@
/* open pseudo in non-blocking mode */
fd = open("/dev/dahdi/pseudo", O_RDWR | O_NONBLOCK);
if (fd < 0) {
- ast_log(LOG_WARNING, "Unable to open pseudo channel: %s\n", strerror(errno));
+ ast_log(LOG_WARNING, "Unable to open DAHDI pseudo channel: %s\n", strerror(errno));
goto outrun;
}
using_pseudo = 1;
@@ -3783,8 +3783,8 @@
struct timeval now;
char recordingfilename[256] = "";
char recordingformat[11] = "";
- char currenttime[19] = "";
- char eatime[19] = "";
+ char currenttime[32] = "";
+ char eatime[32] = "";
char bookid[51] = "";
char recordingtmp[AST_MAX_EXTENSION] = "";
char useropts[OPTIONS_LEN + 1]; /* Used for RealTime conferences */
Modified: team/pabelanger/issue18183/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/apps/app_queue.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/apps/app_queue.c (original)
+++ team/pabelanger/issue18183/apps/app_queue.c Sun Dec 12 11:09:28 2010
@@ -1134,6 +1134,8 @@
char interfacevar[256]="";
float sl = 0;
+ ao2_lock(q);
+
if (q->setqueuevar) {
sl = 0;
if (q->callscompleted > 0)
@@ -1142,8 +1144,12 @@
snprintf(interfacevar, sizeof(interfacevar),
"QUEUENAME=%s,QUEUEMAX=%d,QUEUESTRATEGY=%s,QUEUECALLS=%d,QUEUEHOLDTIME=%d,QUEUETALKTIME=%d,QUEUECOMPLETED=%d,QUEUEABANDONED=%d,QUEUESRVLEVEL=%d,QUEUESRVLEVELPERF=%2.1f",
q->name, q->maxlen, int2strat(q->strategy), q->count, q->holdtime, q->talktime, q->callscompleted, q->callsabandoned, q->servicelevel, sl);
+
+ ao2_unlock(q);
pbx_builtin_setvar_multiple(chan, interfacevar);
+ } else {
+ ao2_unlock(q);
}
}
@@ -3173,8 +3179,8 @@
/*! \brief Record that a caller gave up on waiting in queue */
static void record_abandoned(struct queue_ent *qe)
{
+ set_queue_variables(qe->parent, qe->chan);
ao2_lock(qe->parent);
- set_queue_variables(qe->parent, qe->chan);
manager_event(EVENT_FLAG_AGENT, "QueueCallerAbandon",
"Queue: %s\r\n"
"Uniqueid: %s\r\n"
@@ -4096,9 +4102,7 @@
struct ast_channel *chan = qeb->chan;
if (ao2_ref(qeb, -1) == 1) {
- ao2_lock(q);
set_queue_variables(q, chan);
- ao2_unlock(q);
/* This unrefs the reference we made in try_calling when we allocated qeb */
queue_t_unref(q, "Expire bridge_config reference");
}
@@ -4568,10 +4572,11 @@
pbx_builtin_setvar_multiple(peer, interfacevar);
}
+ ao2_unlock(qe->parent);
+
/* try to set queue variables if configured to do so*/
set_queue_variables(qe->parent, qe->chan);
set_queue_variables(qe->parent, peer);
- ao2_unlock(qe->parent);
ast_channel_lock(qe->chan);
if ((monitorfilename = pbx_builtin_getvar_helper(qe->chan, "MONITOR_FILENAME"))) {
Modified: team/pabelanger/issue18183/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/apps/app_voicemail.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/apps/app_voicemail.c (original)
+++ team/pabelanger/issue18183/apps/app_voicemail.c Sun Dec 12 11:09:28 2010
@@ -2623,6 +2623,7 @@
ast_log(LOG_WARNING, "The code expects the old messages to be checked first, fix the code.\n");
}
if (vm_allocate_dh(vms, vmu, box == 0 ? vms->vmArrayIndex + vms->oldmessages : vms->lastmsg)) {
+ ast_mutex_unlock(&vms->lock);
return -1;
}
@@ -7228,6 +7229,16 @@
#endif
}
DISPOSE(dir, curmsg);
+#ifndef IMAP_STORAGE
+ if (cmd) { /* assuming hangup, cleanup backup file */
+ make_file(msgfile, sizeof(msgfile), dir, curmsg);
+ strcpy(textfile, msgfile);
+ strcpy(backup_textfile, msgfile);
+ strncat(textfile, ".txt", sizeof(textfile) - strlen(textfile) - 1);
+ strncat(backup_textfile, "-bak.txt", sizeof(backup_textfile) - strlen(backup_textfile) - 1);
+ rename(backup_textfile, textfile);
+ }
+#endif
}
/* If anything failed above, we still have this list to free */
@@ -7703,14 +7714,14 @@
if (vm_lock_path(vms->curdir)) {
ast_log(AST_LOG_ERROR, "Could not open mailbox %s: mailbox is locked\n", vms->curdir);
- return -1;
+ return ERROR_LOCK_PATH;
}
/* for local storage, checks directory for messages up to maxmsg limit */
last_msg = last_message_index(vmu, vms->curdir);
ast_unlock_path(vms->curdir);
- if (last_msg < 0) {
+ if (last_msg < -1) {
return last_msg;
} else if (vms->lastmsg != last_msg) {
ast_log(LOG_NOTICE, "Mailbox: %s, expected %d but found %d message(s) in box with max threshold of %d.\n", vms->curdir, last_msg + 1, vms->lastmsg + 1, vmu->maxmsg);
Modified: team/pabelanger/issue18183/build_tools/prep_tarball
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/build_tools/prep_tarball?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/build_tools/prep_tarball (original)
+++ team/pabelanger/issue18183/build_tools/prep_tarball Sun Dec 12 11:09:28 2010
@@ -8,18 +8,27 @@
make -C sounds MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-GSM MENUSELECT_MOH=MOH-OPSOUND-WAV WGET=wget DOWNLOAD=wget all
make AWK=awk GREP=grep menuselect-tree
-make_tex_docs() {
- # make backup of asterisk.tex because we are going to alter it
- cp asterisk.tex asterisk.tex.orig
- sed -e "s/ASTERISKVERSION/${VERSION}/" asterisk.tex > asterisk_local.tex
- mv asterisk_local.tex asterisk.tex
- rubber --pdf asterisk.tex
- latex2html asterisk.tex
- latex asterisk.tex
- catdvi -e 1 -U asterisk.dvi | sed -re "s/\[U\+2022\]/*/g" | sed -re "s/\[U\+02C6\]/^/g" | sed -re "s/([^^[:space:]])\s+/\1 /g" > asterisk.txt
- # restore backup of asterisk.tex
- mv asterisk.tex.orig asterisk.tex
-}
+if ! which wikiexport.py 2>&1 > /dev/null ; then
+ echo
+ echo "wikiexport.py not found in \${PATH}."
+ echo
+ echo "Please add repotools into PATH."
+ echo " $ svn co http://svn.asterisk.org/svn/repotools"
+ echo
+ exit 1
+fi
-VERSION=`cat .version`
-cd doc/tex && make_tex_docs
+if ! which pdftotext 2>&1 > /dev/null ; then
+ echo
+ echo "pdftotext not found. Please install it."
+ echo
+ echo "On Debian/Ubuntu/Fedora/CentOS, install the poppler-utils package."
+ echo
+ exit 1
+fi
+
+cd doc
+echo "Exporting Asterisk wiki to a PDF (this will take a minute) ..."
+wikiexport.py
+echo "Converting wiki export PDF to plain text ..."
+pdftotext AST.pdf
Modified: team/pabelanger/issue18183/channels/chan_console.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/channels/chan_console.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/channels/chan_console.c (original)
+++ team/pabelanger/issue18183/channels/chan_console.c Sun Dec 12 11:09:28 2010
@@ -1155,7 +1155,7 @@
switch (cmd) {
case CLI_INIT:
- e->command = "console {set|show} active [<device>]";
+ e->command = "console {set|show} active";
e->usage =
"Usage: console {set|show} active [<device>]\n"
" Set or show the active console device for the Asterisk CLI.\n";
Modified: team/pabelanger/issue18183/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/pabelanger/issue18183/channels/chan_dahdi.c?view=diff&rev=298172&r1=298171&r2=298172
==============================================================================
--- team/pabelanger/issue18183/channels/chan_dahdi.c (original)
+++ team/pabelanger/issue18183/channels/chan_dahdi.c Sun Dec 12 11:09:28 2010
@@ -492,11 +492,12 @@
#define MASK_AVAIL (1 << 0) /*!< Channel available for PRI use */
#define MASK_INUSE (1 << 1) /*!< Channel currently in use */
-#define CALLWAITING_SILENT_SAMPLES ( (300 * 8) / READ_SIZE) /*!< 300 ms */
-#define CALLWAITING_REPEAT_SAMPLES ( (10000 * 8) / READ_SIZE) /*!< 10,000 ms */
-#define CIDCW_EXPIRE_SAMPLES ( (500 * 8) / READ_SIZE) /*!< 500 ms */
-#define MIN_MS_SINCE_FLASH ( (2000) ) /*!< 2000 ms */
-#define DEFAULT_RINGT ( (8000 * 8) / READ_SIZE) /*!< 8,000 ms */
+#define CALLWAITING_SILENT_SAMPLES ((300 * 8) / READ_SIZE) /*!< 300 ms */
+#define CALLWAITING_REPEAT_SAMPLES ((10000 * 8) / READ_SIZE) /*!< 10,000 ms */
+#define CALLWAITING_SUPPRESS_SAMPLES ((100 * 8) / READ_SIZE) /*!< 100 ms */
+#define CIDCW_EXPIRE_SAMPLES ((500 * 8) / READ_SIZE) /*!< 500 ms */
+#define MIN_MS_SINCE_FLASH ((2000) ) /*!< 2000 ms */
+#define DEFAULT_RINGT ((8000 * 8) / READ_SIZE) /*!< 8,000 ms */
struct dahdi_pvt;
@@ -955,7 +956,7 @@
*/
unsigned int use_smdi:1;
struct mwisend_info mwisend_data;
- /*! \brief The serial port to listen for SMDI data on */
+ /*! \brief The SMDI interface to get SMDI messages from. */
struct ast_smdi_interface *smdi_iface;
/*! \brief Distinctive Ring data */
@@ -1053,7 +1054,8 @@
struct timeval dtmfcid_delay; /*!< Time value used for allow line to settle */
int callingpres; /*!< The value of calling presentation that we're going to use when placing a PRI call */
int callwaitingrepeat; /*!< How many samples to wait before repeating call waiting */
- int cidcwexpire; /*!< When to expire our muting for CID/CW */
+ int cidcwexpire; /*!< When to stop waiting for CID/CW CAS response (In samples) */
+ int cid_suppress_expire; /*!< How many samples to suppress after a CID spill. */
/*! \brief Analog caller ID waveform sample buffer */
unsigned char *cidspill;
/*! \brief Position in the cidspill buffer to send out next. */
@@ -1074,7 +1076,12 @@
* characters are processed.
*/
int stripmsd;
- /*! \brief BOOLEAN. XXX Meaning what?? */
+ /*!
+ * \brief TRUE if Call Waiting (CW) CPE Alert Signal (CAS) is being sent.
+ * \note
+ * After CAS is sent, the call waiting caller id will be sent if the phone
+ * gives a positive reply.
+ */
int callwaitcas;
/*! \brief Number of call waiting rings. */
int callwaitrings;
@@ -1839,18 +1846,19 @@
return 0;
}
-static int send_callerid(struct dahdi_pvt *p);
-
static int my_stop_callwait(void *pvt)
{
struct dahdi_pvt *p = pvt;
p->callwaitingrepeat = 0;
p->cidcwexpire = 0;
+ p->cid_suppress_expire = 0;
return 0;
}
+static int send_callerid(struct dahdi_pvt *p);
static int save_conference(struct dahdi_pvt *p);
+static int restore_conference(struct dahdi_pvt *p);
static int my_callwait(void *pvt)
{
@@ -1860,6 +1868,11 @@
ast_log(LOG_WARNING, "Spill already exists?!?\n");
ast_free(p->cidspill);
}
+
+ /*
+ * SAS: Subscriber Alert Signal, 440Hz for 300ms
+ * CAS: CPE Alert Signal, 2130Hz * 2750Hz sine waves
+ */
if (!(p->cidspill = ast_malloc(2400 /* SAS */ + 680 /* CAS */ + READ_SIZE * 4)))
return -1;
save_conference(p);
@@ -1898,6 +1911,8 @@
caller->id.number.str,
AST_LAW(p));
} else {
+ ast_verb(3, "CPE supports Call Waiting Caller*ID. Sending '%s/%s'\n",
+ caller->id.name.str, caller->id.number.str);
p->callwaitcas = 0;
p->cidcwexpire = 0;
p->cidlen = ast_callerid_callwaiting_generate(p->cidspill,
@@ -1907,6 +1922,7 @@
p->cidlen += READ_SIZE * 4;
}
p->cidpos = 0;
+ p->cid_suppress_expire = 0;
send_callerid(p);
}
return 0;
@@ -1978,68 +1994,72 @@
static inline int dahdi_confmute(struct dahdi_pvt *p, int muted);
-static void my_handle_dtmfup(void *pvt, struct ast_channel *ast, enum analog_sub analog_index, struct ast_frame **dest)
+static void my_handle_dtmf(void *pvt, struct ast_channel *ast, enum analog_sub analog_index, struct ast_frame **dest)
{
struct ast_frame *f = *dest;
struct dahdi_pvt *p = pvt;
int idx = analogsub_to_dahdisub(analog_index);
- ast_debug(1, "DTMF digit: %c on %s\n", f->subclass.integer, ast->name);
+ ast_debug(1, "%s DTMF digit: 0x%02X '%c' on %s\n",
+ f->frametype == AST_FRAME_DTMF_BEGIN ? "Begin" : "End",
+ f->subclass.integer, f->subclass.integer, ast->name);
if (f->subclass.integer == 'f') {
- /* Fax tone -- Handle and return NULL */
- if ((p->callprogress & CALLPROGRESS_FAX) && !p->faxhandled) {
- /* If faxbuffers are configured, use them for the fax transmission */
- if (p->usefaxbuffers && !p->bufferoverrideinuse) {
- struct dahdi_bufferinfo bi = {
- .txbufpolicy = p->faxbuf_policy,
- .bufsize = p->bufsize,
- .numbufs = p->faxbuf_no
- };
- int res;
-
- if ((res = ioctl(p->subs[idx].dfd, DAHDI_SET_BUFINFO, &bi)) < 0) {
- ast_log(LOG_WARNING, "Channel '%s' unable to set buffer policy, reason: %s\n", ast->name, strerror(errno));
+ if (f->frametype == AST_FRAME_DTMF_END) {
+ /* Fax tone -- Handle and return NULL */
+ if ((p->callprogress & CALLPROGRESS_FAX) && !p->faxhandled) {
+ /* If faxbuffers are configured, use them for the fax transmission */
+ if (p->usefaxbuffers && !p->bufferoverrideinuse) {
+ struct dahdi_bufferinfo bi = {
+ .txbufpolicy = p->faxbuf_policy,
+ .bufsize = p->bufsize,
+ .numbufs = p->faxbuf_no
+ };
+ int res;
+
+ if ((res = ioctl(p->subs[idx].dfd, DAHDI_SET_BUFINFO, &bi)) < 0) {
+ ast_log(LOG_WARNING, "Channel '%s' unable to set buffer policy, reason: %s\n", ast->name, strerror(errno));
+ } else {
+ p->bufferoverrideinuse = 1;
+ }
+ }
+ p->faxhandled = 1;
+ if (p->dsp) {
+ p->dsp_features &= ~DSP_FEATURE_FAX_DETECT;
+ ast_dsp_set_features(p->dsp, p->dsp_features);
+ ast_debug(1, "Disabling FAX tone detection on %s after tone received\n", ast->name);
+ }
+ if (strcmp(ast->exten, "fax")) {
+ const char *target_context = S_OR(ast->macrocontext, ast->context);
+
+ /* We need to unlock 'ast' here because ast_exists_extension has the
+ * potential to start autoservice on the channel. Such action is prone
+ * to deadlock.
+ */
+ ast_mutex_unlock(&p->lock);
+ ast_channel_unlock(ast);
+ if (ast_exists_extension(ast, target_context, "fax", 1,
+ S_COR(ast->caller.id.number.valid, ast->caller.id.number.str, NULL))) {
+ ast_channel_lock(ast);
+ ast_mutex_lock(&p->lock);
+ ast_verb(3, "Redirecting %s to fax extension\n", ast->name);
+ /* Save the DID/DNIS when we transfer the fax call to a "fax" extension */
+ pbx_builtin_setvar_helper(ast, "FAXEXTEN", ast->exten);
+ if (ast_async_goto(ast, target_context, "fax", 1))
+ ast_log(LOG_WARNING, "Failed to async goto '%s' into fax of '%s'\n", ast->name, target_context);
+ } else {
+ ast_channel_lock(ast);
+ ast_mutex_lock(&p->lock);
+ ast_log(LOG_NOTICE, "Fax detected, but no fax extension\n");
+ }
} else {
- p->bufferoverrideinuse = 1;
- }
- }
- p->faxhandled = 1;
- if (p->dsp) {
- p->dsp_features &= ~DSP_FEATURE_FAX_DETECT;
- ast_dsp_set_features(p->dsp, p->dsp_features);
- ast_debug(1, "Disabling FAX tone detection on %s after tone received\n", ast->name);
- }
- if (strcmp(ast->exten, "fax")) {
- const char *target_context = S_OR(ast->macrocontext, ast->context);
-
- /* We need to unlock 'ast' here because ast_exists_extension has the
- * potential to start autoservice on the channel. Such action is prone
- * to deadlock.
- */
- ast_mutex_unlock(&p->lock);
- ast_channel_unlock(ast);
- if (ast_exists_extension(ast, target_context, "fax", 1,
- S_COR(ast->caller.id.number.valid, ast->caller.id.number.str, NULL))) {
- ast_channel_lock(ast);
- ast_mutex_lock(&p->lock);
- ast_verb(3, "Redirecting %s to fax extension\n", ast->name);
- /* Save the DID/DNIS when we transfer the fax call to a "fax" extension */
- pbx_builtin_setvar_helper(ast, "FAXEXTEN", ast->exten);
- if (ast_async_goto(ast, target_context, "fax", 1))
- ast_log(LOG_WARNING, "Failed to async goto '%s' into fax of '%s'\n", ast->name, target_context);
- } else {
- ast_channel_lock(ast);
- ast_mutex_lock(&p->lock);
- ast_log(LOG_NOTICE, "Fax detected, but no fax extension\n");
+ ast_debug(1, "Already in a fax extension, not redirecting\n");
}
} else {
- ast_debug(1, "Already in a fax extension, not redirecting\n");
- }
- } else {
- ast_debug(1, "Fax already handled\n");
- }
- dahdi_confmute(p, 0);
+ ast_debug(1, "Fax already handled\n");
+ }
+ dahdi_confmute(p, 0);
+ }
p->subs[idx].f.frametype = AST_FRAME_NULL;
p->subs[idx].f.subclass.integer = 0;
*dest = &p->subs[idx].f;
@@ -2068,17 +2088,24 @@
/* linear_mode = 0 - turn linear mode off, >0 - turn linear mode on
* returns the last value of the linear setting
*/
[... 8914 lines stripped ...]
More information about the asterisk-commits
mailing list