dect
/
asterisk
Archived
13
0
Fork 0

Merge branch 'master' of 192.168.0.100:/repos/git/asterisk

This commit is contained in:
Patrick McHardy 2011-07-22 16:44:20 +02:00
commit 2b9be10b17
383 changed files with 4806 additions and 1757 deletions

2
BUGS
View File

@ -4,7 +4,7 @@ Asterisk Bug Tracking Information
To learn about and report Asterisk bugs, please visit
the official Asterisk Bug Tracker at:
https://issues.asterisk.org
https://issues.asterisk.org/jira
For more information on using the bug tracker, or to
learn how you can contribute by acting as a bug marshal

27
CHANGES
View File

@ -9,7 +9,7 @@
==============================================================================
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 1.8 to Asterisk 1.10 -----------------
--- Functionality changes from Asterisk 1.8 to Asterisk 10 -------------------
------------------------------------------------------------------------------
Text Messaging
@ -75,6 +75,11 @@ CODECS
--------------------------
* Ability to define custom SILK formats in codecs.conf.
* Addition of speex32 audio format with translation.
* CELT codec pass-through support and ability to define
custom CELT formats in codecs.conf.
* Ability to read raw signed linear files with sample rates
ranging from 8khz - 192khz. The new file extensions introduced
are .sln12, .sln24, .sln32, .sln44, .sln48, .sln96, .sln192.
ConfBridge
--------------------------
@ -82,11 +87,14 @@ ConfBridge
mixing audio at sample rates ranging from 8khz-96khz.
* CONFBRIDGE dialplan function capable of creating dynamic ConfBridge user
and bridge profiles on a channel.
* CONFBRIDGE_INFO dialplan function capable of retreiving information
* CONFBRIDGE_INFO dialplan function capable of retrieving information
about a conference such as locked status and number of parties, admins,
and marked users.
* Addition of video_mode option in confbridge.conf for adding video support
into a bridge profile.
* Addition of the follow_talker video_mode in confbridge.conf. This video
mode dynamically switches the video feed to always display the loudest talker
supplying video in the conference.
Dialplan Variables
------------------
@ -148,7 +156,7 @@ pbx_lua
in the sample extensions.lua file for syntax details.
* Applications that perform jumps in the dialplan such as Goto will now
execute properly. When pbx_lua detects that the context, extension, or
priority we are executing on has changed it will immediatly return control
priority we are executing on has changed it will immediately return control
to the asterisk PBX engine. Currently the engine cannot detect a Goto to
the priority after the currently executing priority.
* An autoservice is now started by default for pbx_lua channels. It can be
@ -188,6 +196,19 @@ Applications
* Added ability to include '@parkinglot' to ParkedCall extension in order to specify
a specific parkinglot on which to search the extension.
Asterisk Database
-----------------
* The internal Asterisk database has been switched from Berkeley DB 1.86 to
SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
utility in the UTILS section of menuselect. If an existing astdb is found and no
astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
convert an existing astdb to the SQLite3 version automatically at runtime.
Asterisk Modules
----------------
* Modules marked as deprecated are no longer marked as building by default. Enabling
these modules is still available via menuselect.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ----------------
------------------------------------------------------------------------------

View File

@ -467,9 +467,9 @@ datafiles: _all doc/core-en_US.xml
# improved a lot. I'll put it here for now.
for x in static-http/*; do \
$(INSTALL) -m 644 $$x "$(DESTDIR)$(ASTDATADIR)/static-http" ; \
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
done
$(INSTALL) -m 644 doc/core-en_US.xml "$(DESTDIR)$(ASTDATADIR)/static-http";
$(INSTALL) -m 644 doc/core-en_US.xml $(DESTDIR)$(ASTDATADIR)/static-http;
if [ -d doc/tex/asterisk ] ; then \
$(INSTALL) -d "$(DESTDIR)$(ASTDATADIR)/static-http/docs" ; \
for n in doc/tex/asterisk/* ; do \
@ -477,7 +477,7 @@ datafiles: _all doc/core-en_US.xml
done \
fi
for x in images/*.jpg; do \
$(INSTALL) -m 644 $$x "$(DESTDIR)$(ASTDATADIR)/images" ; \
$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/images ; \
done
$(MAKE) -C sounds install
@ -576,21 +576,21 @@ bininstall: _all installdirs $(SUBDIRS_INSTALL)
rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
fi
$(INSTALL) -m 644 doc/core-*.xml "$(DESTDIR)$(ASTDATADIR)/documentation"
$(INSTALL) -m 644 doc/appdocsxml.dtd "$(DESTDIR)$(ASTDATADIR)/documentation"
$(INSTALL) -m 644 doc/asterisk.8 "$(DESTDIR)$(ASTMANDIR)/man8"
$(INSTALL) -m 644 contrib/scripts/astgenkey.8 "$(DESTDIR)$(ASTMANDIR)/man8"
$(INSTALL) -m 644 contrib/scripts/autosupport.8 "$(DESTDIR)$(ASTMANDIR)/man8"
$(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 "$(DESTDIR)$(ASTMANDIR)/man8"
$(INSTALL) -m 644 doc/core-*.xml $(DESTDIR)$(ASTDATADIR)/documentation
$(INSTALL) -m 644 doc/appdocsxml.dtd $(DESTDIR)$(ASTDATADIR)/documentation
$(INSTALL) -m 644 doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
$(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
$(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
$(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
$(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin "$(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin"; \
$(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
fi
$(SUBDIRS_INSTALL):
+@DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" $(SUBMAKE) -C $(@:-install=) install
NEWMODS:=$(foreach d,$(MOD_SUBDIRS),$(notdir $(wildcard $(d)/*.so)))
OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard "$(DESTDIR)$(MODULES_DIR)/*.so")))
OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
oldmodcheck:
@if [ -n "$(OLDMODS)" ]; then \
@ -698,33 +698,33 @@ samples: adsi
rm -f $(DESTDIR)$(ASTCONFPATH).tmp ; \
fi ; \
$(INSTALL) -d $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
build_tools/make_sample_voicemail "$(DESTDIR)$(ASTDATADIR)" "$(DESTDIR)$(ASTSPOOLDIR)"
build_tools/make_sample_voicemail $(DESTDIR)/$(ASTDATADIR) $(DESTDIR)/$(ASTSPOOLDIR)
@for x in phoneprov/*; do \
dst="$(DESTDIR)$(ASTDATADIR)/$$x" ; \
if [ -f "$${dst}" ]; then \
if [ -f $${dst} ]; then \
if [ "$(OVERWRITE)" = "y" ]; then \
if cmp -s "$${dst}" $$x ; then \
if cmp -s $${dst} $$x ; then \
echo "Config file $$x is unchanged"; \
continue; \
fi ; \
mv -f "$${dst}" "$${dst}.old" ; \
mv -f $${dst} $${dst}.old ; \
else \
echo "Skipping config file $$x"; \
continue; \
fi ;\
fi ; \
echo "Installing file $$x"; \
$(INSTALL) -m 644 $$x "$${dst}" ;\
$(INSTALL) -m 644 $$x $${dst} ;\
done
webvmail:
@[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
@[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
$(INSTALL) -m 4755 contrib/scripts/vmail.cgi "$(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi"
$(INSTALL) -m 4755 contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
$(INSTALL) -d $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
for x in images/*.gif; do \
$(INSTALL) -m 644 $$x "$(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/"; \
$(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
done
@echo " +--------- Asterisk Web Voicemail ----------+"
@echo " + +"
@ -838,17 +838,18 @@ sounds:
cleantest:
@cmp -s .cleancount .lastclean || $(MAKE) clean
@[ -f "$(DESTDIR)$(ASTDBDIR)/astdb.sqlite3" ] || [ ! -f "$(DESTDIR)$(ASTDBDIR)/astdb" ] || [ ! -f menuselect.makeopts ] || grep -q MENUSELECT_UTILS=.*astdb2sqlite3 menuselect.makeopts || (sed -i.orig -e's/MENUSELECT_UTILS=\(.*\)/MENUSELECT_UTILS=\1 astdb2sqlite3/' menuselect.makeopts && echo "Updating menuselect.makeopts to include astdb2sqlite3" && echo "Original version backed up to menuselect.makeopts.orig")
$(SUBDIRS_UNINSTALL):
+@$(SUBMAKE) -C $(@:-uninstall=) uninstall
_uninstall: $(SUBDIRS_UNINSTALL)
rm -f "$(DESTDIR)$(MODULES_DIR)/*"
rm -f $(DESTDIR)$(MODULES_DIR)/*
rm -f $(DESTDIR)$(ASTSBINDIR)/*asterisk*
rm -f $(DESTDIR)$(ASTSBINDIR)/astgenkey
rm -f $(DESTDIR)$(ASTSBINDIR)/autosupport
rm -rf $(DESTDIR)$(ASTHEADERDIR)
rm -rf "$(DESTDIR)$(ASTDATADIR)/firmware"
rm -rf $(DESTDIR)$(ASTDATADIR)/firmware
rm -f $(DESTDIR)$(ASTMANDIR)/man8/asterisk.8
rm -f $(DESTDIR)$(ASTMANDIR)/man8/astgenkey.8
rm -f $(DESTDIR)$(ASTMANDIR)/man8/autosupport.8
@ -870,12 +871,12 @@ uninstall: _uninstall
@echo " +-------------------------------------------+"
uninstall-all: _uninstall
rm -rf "$(DESTDIR)$(ASTLIBDIR)"
rm -rf "$(DESTDIR)$(ASTVARLIBDIR)"
rm -rf "$(DESTDIR)$(ASTDATADIR)"
rm -rf "$(DESTDIR)$(ASTSPOOLDIR)"
rm -rf "$(DESTDIR)$(ASTETCDIR)"
rm -rf "$(DESTDIR)$(ASTLOGDIR)"
rm -rf $(DESTDIR)$(ASTLIBDIR)
rm -rf $(DESTDIR)$(ASTVARLIBDIR)
rm -rf $(DESTDIR)$(ASTDATADIR)
rm -rf $(DESTDIR)$(ASTSPOOLDIR)
rm -rf $(DESTDIR)$(ASTETCDIR)
rm -rf $(DESTDIR)$(ASTLOGDIR)
menuconfig: menuselect

View File

@ -122,7 +122,7 @@ clean::
install:: all
@echo "Installing modules from `basename $(CURDIR)`..."
@for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x "$(DESTDIR)$(MODULES_DIR)" ; done
@for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
uninstall::

View File

@ -20,6 +20,8 @@
From 1.6.2 to 1.8:
* Asterisk now requires libpri 1.4.11+ for PRI support.
* 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"

81
UPGRADE-10.txt Normal file
View File

@ -0,0 +1,81 @@
===========================================================
===
=== Information for upgrading between Asterisk versions
===
=== These files document all the changes that MUST be taken
=== into account when upgrading between the Asterisk
=== versions listed below. These changes may require that
=== you modify your configuration files, dialplan or (in
=== some cases) source code if you have your own Asterisk
=== modules or patches. These files also include advance
=== notice of any functionality that has been marked as
=== 'deprecated' and may be removed in a future release,
=== along with the suggested replacement functionality.
===
=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2
=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4
=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6
=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8
===
===========================================================
From 1.8 to 10:
cel_pgsql:
- This module now expects an 'extra' column in the database for data added
using the CELGenUserEvent() application.
ConfBridge
- ConfBridge's dialplan arguments have changed and are not
backwards compatible.
File Interpreters
- The format interpreter formats/format_sln16.c for the file extension
'.sln16' has been removed. The '.sln16' file interpreter now exists
in the formats/format_sln.c module along with new support for sln12,
sln24, sln32, sln44, sln48, sln96, and sln192 file extensions.
HTTP:
- A bindaddr must be specified in order for the HTTP server
to run. Previous versions would default to 0.0.0.0 if no
bindaddr was specified.
Gtalk:
- The default value for 'context' and 'parkinglots' in gtalk.conf has
been changed to 'default', previously they were empty.
chan_dahdi:
- The mohinterpret=passthrough setting is deprecated in favor of
moh_signaling=notify.
pbx_lua:
- Execution no longer continues after applications that do dialplan jumps
(such as app.goto). Now when an application such as app.goto() is called,
control is returned back to the pbx engine and the current extension
function stops executing.
- the autoservice now defaults to being on by default
- autoservice_start() and autoservice_start() no longer return a value.
Queue:
- Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members
- QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty.
Asterisk Database:
- The internal Asterisk database has been switched from Berkeley DB 1.86 to
SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
utility in the UTILS section of menuselect. If an existing astdb is found and no
astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
convert an existing astdb to the SQLite3 version automatically at runtime.
Module Support Level
- All modules in the addons, apps, bridge, cdr, cel, channels, codecs,
formats, funcs, pbx, and res have been updated to include MODULEINFO data
that includes <support_level> tags with a value of core, extended, or deprecated.
More information is available on the Asterisk wiki at
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States
Deprecated modules are now marked to not build by default and must be explicitly
enabled in menuselect.
===========================================================
===========================================================

View File

@ -16,10 +16,15 @@
=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4
=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6
=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8
=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10
===
===========================================================
From 1.8 to 1.10:
From 10 to 12:
* No significant changes as of yet.
From 1.8 to 10:
cel_pgsql:
- This module now expects an 'extra' column in the database for data added
@ -29,6 +34,12 @@ ConfBridge
- ConfBridge's dialplan arguments have changed and are not
backwards compatible.
File Interpreters
- The format interpreter formats/format_sln16.c for the file extension
'.sln16' has been removed. The '.sln16' file interpreter now exists
in the formats/format_sln.c module along with new support for sln12,
sln24, sln32, sln44, sln48, sln96, and sln192 file extensions.
HTTP:
- A bindaddr must be specified in order for the HTTP server
to run. Previous versions would default to 0.0.0.0 if no
@ -54,5 +65,22 @@ Queue:
- Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members
- QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty.
Asterisk Database:
- The internal Asterisk database has been switched from Berkeley DB 1.86 to
SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
utility in the UTILS section of menuselect. If an existing astdb is found and no
astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
convert an existing astdb to the SQLite3 version automatically at runtime.
Module Support Level
- All modules in the addons, apps, bridge, cdr, cel, channels, codecs,
formats, funcs, pbx, and res have been updated to include MODULEINFO data
that includes <support_level> tags with a value of core, extended, or deprecated.
More information is available on the Asterisk wiki at
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States
Deprecated modules are now marked to not build by default and must be explicitly
enabled in menuselect.
===========================================================
===========================================================

View File

@ -26,6 +26,8 @@
/*** MODULEINFO
<depend>mysqlclient</depend>
<defaultenabled>no</defaultenabled>
<support_level>deprecated</support_level>
<replacement>func_odbc</replacement>
***/
#include "asterisk.h"

View File

@ -22,6 +22,8 @@
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>deprecated</support_level>
<replacement>say.conf</replacement>
***/
#include "asterisk.h"

View File

@ -36,6 +36,8 @@
/*** MODULEINFO
<depend>mysqlclient</depend>
<defaultenabled>no</defaultenabled>
<support_level>deprecated</support_level>
<replacement>cdr_adaptive_odbc</replacement>
***/
#include "asterisk.h"

View File

@ -28,6 +28,7 @@
/*** MODULEINFO
<depend>bluetooth</depend>
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
***/
#include "asterisk.h"

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,7 @@
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -1211,8 +1211,11 @@ int ooGkClientHandleRegistrationConfirm
if(pGkClient->regTimeout > DEFAULT_TTL_OFFSET)
regTTL = pGkClient->regTimeout - DEFAULT_TTL_OFFSET;
else
regTTL = pGkClient->regTimeout;
else {
regTTL = pGkClient->regTimeout - 1; /* -1 due to some ops expire us few earlier */
if (regTTL <= 0)
regTTL = 1;
}
cbData = (ooGkClientTimerCb*) memAlloc
(&pGkClient->ctxt, sizeof(ooGkClientTimerCb));
@ -1260,7 +1263,6 @@ int ooGkClientHandleRegistrationConfirm
memFreePtr(&pGkClient->ctxt, pTimer->cbData);
ooTimerDelete(&pGkClient->ctxt, &pGkClient->timerList, pTimer);
OOTRACEDBGA1("Deleted RRQ Timer.\n");
break;
}
}
pGkClient->state = GkClientRegistered;
@ -1505,8 +1507,10 @@ int ooGkClientSendURQ(ooGkClient *pGkClient, ooAliases *aliases)
int ooGkClientHandleUnregistrationRequest
(ooGkClient *pGkClient, H225UnregistrationRequest * punregistrationRequest)
{
int iRet=0;
int iRet=0, x;
OOTimer *pTimer = NULL;
DListNode *pNode = NULL;
/* Lets first send unregistration confirm message back to gatekeeper*/
ooGkClientSendUnregistrationConfirm(pGkClient,
punregistrationRequest->requestSeqNum);
@ -1528,6 +1532,24 @@ int ooGkClientHandleUnregistrationRequest
pGkClient->rrqRetries = 0;
pGkClient->state = GkClientDiscovered;
/* delete the corresponding RRQ & REG timers */
pNode = NULL;
for(x=0; x<pGkClient->timerList.count; x++) {
pNode = dListFindByIndex(&pGkClient->timerList, x);
pTimer = (OOTimer*)pNode->data;
if(((ooGkClientTimerCb*)pTimer->cbData)->timerType & OO_RRQ_TIMER) {
memFreePtr(&pGkClient->ctxt, pTimer->cbData);
ooTimerDelete(&pGkClient->ctxt, &pGkClient->timerList, pTimer);
OOTRACEDBGA1("Deleted RRQ Timer.\n");
}
if(((ooGkClientTimerCb*)pTimer->cbData)->timerType & OO_REG_TIMER) {
memFreePtr(&pGkClient->ctxt, pTimer->cbData);
ooTimerDelete(&pGkClient->ctxt, &pGkClient->timerList, pTimer);
OOTRACEDBGA1("Deleted REG Timer.\n");
}
}
iRet = ooGkClientSendRRQ(pGkClient, 0);
if(iRet != OO_OK)
{

View File

@ -25,6 +25,7 @@
/*** MODULEINFO
<depend>mysqlclient</depend>
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -5,6 +5,10 @@
* with no warranty of any kind
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
#define AUDIO_FILENO (STDERR_FILENO + 1)

View File

@ -27,6 +27,7 @@
/*** MODULEINFO
<depend>res_adsi</depend>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -29,6 +29,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -26,6 +26,9 @@
* \author Claude Klimos (claude.klimos@aheeva.com)
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -27,6 +27,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -23,6 +23,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -29,6 +29,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -28,6 +28,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
@ -632,10 +636,10 @@ static int play_prompt_to_channel(struct conference_bridge *conference_bridge, s
return res;
}
static void handle_video_on_join(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
static void handle_video_on_join(struct conference_bridge *conference_bridge, struct ast_channel *chan, int marked)
{
/* only automatically set video source for marked users */
if (!ast_test_flag(&conference_bridge_user->u_profile, USER_OPT_MARKEDUSER)) {
/* Right now, only marked users are automatically set as the single src of video.*/
if (!marked) {
return;
}
@ -645,7 +649,7 @@ static void handle_video_on_join(struct conference_bridge *conference_bridge, st
ao2_lock(conference_bridge);
/* see if anyone is already the video src */
AST_LIST_TRAVERSE(&conference_bridge->users_list, tmp_user, list) {
if (tmp_user == conference_bridge_user) {
if (tmp_user->chan == chan) {
continue;
}
if (ast_bridge_is_video_src(conference_bridge->bridge, tmp_user->chan)) {
@ -655,24 +659,31 @@ static void handle_video_on_join(struct conference_bridge *conference_bridge, st
}
ao2_unlock(conference_bridge);
if (set) {
ast_bridge_set_single_src_video_mode(conference_bridge->bridge, conference_bridge_user->chan);
ast_bridge_set_single_src_video_mode(conference_bridge->bridge, chan);
}
} else if (ast_test_flag(&conference_bridge->b_profile, BRIDGE_OPT_VIDEO_SRC_LAST_MARKED)) {
/* we joined and are video capable, we override anyone else that may have already been the video feed */
ast_bridge_set_single_src_video_mode(conference_bridge->bridge, conference_bridge_user->chan);
ast_bridge_set_single_src_video_mode(conference_bridge->bridge, chan);
}
}
static void handle_video_on_exit(struct conference_bridge *conference_bridge, struct conference_bridge_user *conference_bridge_user)
static void handle_video_on_exit(struct conference_bridge *conference_bridge, struct ast_channel *chan)
{
struct conference_bridge_user *tmp_user = NULL;
/* if this isn't a video source, nothing to update */
if (!ast_bridge_is_video_src(conference_bridge->bridge, conference_bridge_user->chan)) {
if (!ast_bridge_is_video_src(conference_bridge->bridge, chan)) {
return;
}
ast_bridge_remove_video_src(conference_bridge->bridge, conference_bridge_user->chan);
ast_bridge_remove_video_src(conference_bridge->bridge, chan);
/* If in follow talker mode, make sure to restore this mode on the
* bridge when a source is removed. It is possible this channel was
* only set temporarily as a video source by an AMI or DTMF action. */
if (ast_test_flag(&conference_bridge->b_profile, BRIDGE_OPT_VIDEO_SRC_FOLLOW_TALKER)) {
ast_bridge_set_talker_src_video_mode(conference_bridge->bridge);
}
/* if the video_mode isn't set to automatically pick the video source, do nothing on exit. */
if (!ast_test_flag(&conference_bridge->b_profile, BRIDGE_OPT_VIDEO_SRC_FIRST_MARKED) &&
@ -680,10 +691,10 @@ static void handle_video_on_exit(struct conference_bridge *conference_bridge, st
return;
}
/* Make the next avaliable marked user the video src. */
/* Make the next available marked user the video src. */
ao2_lock(conference_bridge);
AST_LIST_TRAVERSE(&conference_bridge->users_list, tmp_user, list) {
if (tmp_user == conference_bridge_user) {
if (tmp_user->chan == chan) {
continue;
}
if (ast_test_flag(&tmp_user->u_profile, USER_OPT_MARKEDUSER)) {
@ -1454,7 +1465,8 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
}
}
handle_video_on_join(conference_bridge, &conference_bridge_user);
/* See if we need to automatically set this user as a video source or not */
handle_video_on_join(conference_bridge, conference_bridge_user.chan, ast_test_flag(&conference_bridge_user.u_profile, USER_OPT_MARKEDUSER));
/* Join our conference bridge for real */
send_join_event(conference_bridge_user.chan, conference_bridge->name);
@ -1465,8 +1477,15 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
&conference_bridge_user.tech_args);
send_leave_event(conference_bridge_user.chan, conference_bridge->name);
/* if we're shutting down, don't attempt to do further processing */
if (ast_shutting_down()) {
leave_conference_bridge(conference_bridge, &conference_bridge_user);
conference_bridge = NULL;
goto confbridge_cleanup;
}
handle_video_on_exit(conference_bridge, &conference_bridge_user);
/* If this user was a video source, we need to clean up and possibly pick a new source. */
handle_video_on_exit(conference_bridge, conference_bridge_user.chan);
/* if this user has a intro, play it when leaving */
if (!quiet && !ast_strlen_zero(conference_bridge_user.name_rec_location)) {
@ -1775,6 +1794,9 @@ static int execute_menu_entry(struct conference_bridge *conference_bridge,
ast_bridge_set_single_src_video_mode(conference_bridge->bridge, bridge_channel->chan);
ao2_unlock(conference_bridge);
break;
case MENU_ACTION_RELEASE_SINGLE_VIDEO_SRC:
handle_video_on_exit(conference_bridge, bridge_channel->chan);
break;
}
}
return res;

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -33,6 +33,9 @@
/*** MODULEINFO
<depend>dahdi</depend>
<defaultenabled>no</defaultenabled>
<support_level>deprecated</support_level>
<replacement>app_chanspy</replacement>
***/
#include "asterisk.h"

View File

@ -27,6 +27,7 @@
/*** MODULEINFO
<depend>dahdi</depend>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -28,6 +28,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -27,6 +27,7 @@
/*** MODULEINFO
<depend>chan_local</depend>
<support_level>core</support_level>
***/
@ -2408,7 +2409,8 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast
* datastore again, causing a crash
*/
ast_channel_lock(chan);
if (!ast_channel_datastore_remove(chan, datastore)) {
datastore = ast_channel_datastore_find(chan, &dialed_interface_info, NULL); /* make sure we weren't cleaned up already */
if (datastore && !ast_channel_datastore_remove(chan, datastore)) {
ast_datastore_free(datastore);
}
ast_channel_unlock(chan);

View File

@ -27,6 +27,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -29,6 +29,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
@ -76,9 +80,11 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<synopsis>
Pickup a ringing channel.
</synopsis>
<syntax>
<parameter name="channel" required="true" />
<parameter name="channel2" multiple="true" />
<syntax >
<parameter name="Technology/Resource" argsep="&amp;" required="true">
<argument name="Technology/Resource" required="true" />
<argument name="Technology2/Resource2" required="false" multiple="true" />
</parameter>
<parameter name="options" required="false">
<optionlist>
<option name="p">

View File

@ -27,6 +27,7 @@
/*** MODULEINFO
<depend>app_voicemail</depend>
<support_level>core</support_level>
***/
#include "asterisk.h"
@ -57,7 +58,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<parameter name="dial-context" required="false">
<para>This is the dialplan context to use when looking for an
extension that the user has selected, or when jumping to the
<literal>o</literal> or <literal>a</literal> extension.</para>
<literal>o</literal> or <literal>a</literal> extension. If not
specified, the current context will be used.</para>
</parameter>
<parameter name="options" required="false">
<optionlist>
@ -246,7 +248,7 @@ static int compare(const char *text, const char *template)
static int goto_exten(struct ast_channel *chan, const char *dialcontext, char *ext)
{
if (!ast_goto_if_exists(chan, dialcontext, ext, 1) ||
if (!ast_goto_if_exists(chan, S_OR(dialcontext, chan->context), ext, 1) ||
(!ast_strlen_zero(chan->macrocontext) &&
!ast_goto_if_exists(chan, chan->macrocontext, ext, 1))) {
return 0;
@ -685,11 +687,11 @@ static int do_directory(struct ast_channel *chan, struct ast_config *vmcfg, stru
int count, i;
char ext[10] = "";
if (digit == '0' && !goto_exten(chan, S_OR(dialcontext, "default"), "o")) {
if (digit == '0' && !goto_exten(chan, dialcontext, "o")) {
return digit;
}
if (digit == '*' && !goto_exten(chan, S_OR(dialcontext, "default"), "a")) {
if (digit == '*' && !goto_exten(chan, dialcontext, "a")) {
return digit;
}

View File

@ -26,6 +26,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -28,6 +28,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -26,6 +26,9 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -31,6 +31,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -16,6 +16,7 @@
<defaultenabled>no</defaultenabled>
<depend>spandsp</depend>
<conflict>res_fax</conflict>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -27,6 +27,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -27,6 +27,7 @@
/*** MODULEINFO
<depend>dahdi</depend>
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -30,6 +30,7 @@
/*** MODULEINFO
<depend>chan_local</depend>
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -26,6 +26,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -26,6 +26,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -24,6 +24,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -27,6 +27,7 @@
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -37,6 +37,7 @@
/*** MODULEINFO
<depend>jack</depend>
<depend>resample</depend>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -25,6 +25,11 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>deprecated</support_level>
<replacement>app_stack (GoSub)</replacement>
*/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -31,6 +31,9 @@
/*** MODULEINFO
<depend>dahdi</depend>
<defaultenabled>no</defaultenabled>
<support_level>deprecated</support_level>
<replacement>app_confbridge</replacement>
***/
#include "asterisk.h"
@ -4416,15 +4419,13 @@ static int conf_exec(struct ast_channel *chan, const char *data)
res = -1;
}
} else {
if (((!ast_strlen_zero(cnf->pin) &&
!ast_test_flag64(&confflags, CONFFLAG_ADMIN)) ||
(!ast_strlen_zero(cnf->pinadmin) &&
ast_test_flag64(&confflags, CONFFLAG_ADMIN)) ||
(!ast_strlen_zero(cnf->pin) &&
ast_strlen_zero(cnf->pinadmin) &&
ast_test_flag64(&confflags, CONFFLAG_ADMIN))) &&
((!(cnf->users == 0 && cnf->isdynamic)) ||
ast_test_flag64(&confflags, CONFFLAG_ALWAYSPROMPT))) {
/* Check to see if the conference requires a pin
* and we ALWAYS prompt or no pin was provided */
if ((!ast_strlen_zero(cnf->pin) ||
(!ast_strlen_zero(cnf->pinadmin) &&
ast_test_flag64(&confflags, CONFFLAG_ADMIN))) &&
(ast_test_flag64(&confflags, CONFFLAG_ALWAYSPROMPT) ||
ast_strlen_zero(args.pin))) {
char pin[MAX_PIN] = "";
int j;

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -141,6 +141,10 @@
* Back: \ref App_minivm
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -33,6 +33,10 @@
* Anthony Minessale II <anthmct@yahoo.com>
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
@ -47,6 +51,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/channel.h"
#include "asterisk/autochan.h"
#include "asterisk/manager.h"
#include "asterisk/mod_format.h"
/*** DOCUMENTATION
<application name="MixMonitor" language="en_US">
@ -225,6 +230,8 @@ struct mixmonitor_ds {
struct ast_filestream *fs_write;
struct ast_audiohook *audiohook;
unsigned int samp_rate;
};
/*!
@ -334,7 +341,7 @@ static void mixmonitor_save_prep(struct mixmonitor *mixmonitor, char *filename,
if (!*fs && !*errflag && !mixmonitor->mixmonitor_ds->fs_quit) {
*oflags = O_CREAT | O_WRONLY;
*oflags |= ast_test_flag(mixmonitor, MUXFLAG_APPEND) ? O_APPEND : O_TRUNC;
last_slash = strrchr(filename, '/');
if ((ext = strrchr(filename, '.')) && (ext > last_slash)) {
@ -346,6 +353,9 @@ static void mixmonitor_save_prep(struct mixmonitor *mixmonitor, char *filename,
if (!(*fs = ast_writefile(filename, ext, NULL, *oflags, 0, 0666))) {
ast_log(LOG_ERROR, "Cannot open %s.%s\n", filename, ext);
*errflag = 1;
} else {
struct ast_filestream *tmp = *fs;
mixmonitor->mixmonitor_ds->samp_rate = MAX(mixmonitor->mixmonitor_ds->samp_rate, ast_format_rate(&tmp->fmt->format));
}
}
}
@ -363,13 +373,22 @@ static void *mixmonitor_thread(void *obj)
int errflag = 0;
struct ast_format format_slin;
ast_format_set(&format_slin, AST_FORMAT_SLINEAR, 0);
ast_verb(2, "Begin MixMonitor Recording %s\n", mixmonitor->name);
fs = &mixmonitor->mixmonitor_ds->fs;
fs_read = &mixmonitor->mixmonitor_ds->fs_read;
fs_write = &mixmonitor->mixmonitor_ds->fs_write;
ast_mutex_lock(&mixmonitor->mixmonitor_ds->lock);
mixmonitor_save_prep(mixmonitor, mixmonitor->filename, fs, &oflags, &errflag);
mixmonitor_save_prep(mixmonitor, mixmonitor->filename_read, fs_read, &oflags, &errflag);
mixmonitor_save_prep(mixmonitor, mixmonitor->filename_write, fs_write, &oflags, &errflag);
ast_format_set(&format_slin, ast_format_slin_by_rate(mixmonitor->mixmonitor_ds->samp_rate), 0);
ast_mutex_unlock(&mixmonitor->mixmonitor_ds->lock);
/* The audiohook must enter and exit the loop locked */
ast_audiohook_lock(&mixmonitor->audiohook);
while (mixmonitor->audiohook.status == AST_AUDIOHOOK_STATUS_RUNNING && !mixmonitor->mixmonitor_ds->fs_quit) {
@ -393,9 +412,6 @@ static void *mixmonitor_thread(void *obj)
if (!ast_test_flag(mixmonitor, MUXFLAG_BRIDGED) || (mixmonitor->autochan->chan && ast_bridged_channel(mixmonitor->autochan->chan))) {
ast_mutex_lock(&mixmonitor->mixmonitor_ds->lock);
mixmonitor_save_prep(mixmonitor, mixmonitor->filename, fs, &oflags, &errflag);
mixmonitor_save_prep(mixmonitor, mixmonitor->filename_read, fs_read, &oflags, &errflag);
mixmonitor_save_prep(mixmonitor, mixmonitor->filename_write, fs_write, &oflags, &errflag);
/* Write out the frame(s) */
if ((*fs_read) && (fr_read)) {
@ -484,6 +500,8 @@ static int setup_mixmonitor_ds(struct mixmonitor *mixmonitor, struct ast_channel
return -1;
}
mixmonitor_ds->samp_rate = 8000;
mixmonitor_ds->audiohook = &mixmonitor->audiohook;
datastore->data = mixmonitor_ds;

View File

@ -24,6 +24,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -27,6 +27,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -24,6 +24,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -32,6 +32,10 @@
* Set options for call files.
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -31,6 +31,7 @@
/*** MODULEINFO
<depend>osptk</depend>
<depend>openssl</depend>
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -28,6 +28,7 @@
/*** MODULEINFO
<depend>dahdi</depend>
<depend>app_meetme</depend>
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -29,6 +29,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -24,7 +24,11 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -58,6 +58,7 @@
/*** MODULEINFO
<use type="module">res_monitor</use>
<support_level>core</support_level>
***/
#include "asterisk.h"
@ -1572,7 +1573,7 @@ static int extensionstate2devicestate(int state)
return state;
}
static int extension_state_cb(char *context, char *exten, enum ast_extension_states state, void *data)
static int extension_state_cb(const char *context, const char *exten, enum ast_extension_states state, void *data)
{
struct ao2_iterator miter, qiter;
struct member *m;

View File

@ -24,6 +24,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -23,6 +23,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -25,6 +25,12 @@
* \ingroup applications
*/
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>deprecated</support_level>
<replacement>func_env (FILE())</replacement>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -24,6 +24,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -155,6 +155,7 @@
<depend>dahdi</depend>
<depend>tonezone</depend>
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
***/
/* Un-comment the following to include support for MDC-1200 digital tone

View File

@ -26,6 +26,7 @@
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>extended</support_level>
***/
/*** DOCUMENTATION

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -24,6 +24,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -26,6 +26,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -24,7 +24,13 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>deprecated</support_level>
<replacement>func_callerid</replacement>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -31,6 +31,7 @@
/*** MODULEINFO
<defaultenabled>no</defaultenabled>
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -34,6 +34,10 @@
* Not fully tested, under development
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$");

View File

@ -27,6 +27,7 @@
/*** MODULEINFO
<use type="module">res_agi</use>
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -24,7 +24,11 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -27,6 +27,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -27,6 +27,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -24,6 +24,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -21,6 +21,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -24,6 +24,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -40,6 +40,7 @@
/*** MODULEINFO
<use type="module">res_adsi</use>
<use type="module">res_smdi</use>
<support_level>core</support_level>
***/
/*** MAKEOPTS
@ -1215,6 +1216,9 @@ static int check_password(struct ast_vm_user *vmu, char *password)
/* check minimum length */
if (strlen(password) < minpassword)
return 1;
/* check that password does not contain '*' character */
if (!ast_strlen_zero(password) && password[0] == '*')
return 1;
if (!ast_strlen_zero(ext_pass_check_cmd)) {
char cmd[255], buf[255];
@ -1294,8 +1298,14 @@ static void apply_options_full(struct ast_vm_user *retval, struct ast_variable *
if (!strcasecmp(var->name, "vmsecret")) {
ast_copy_string(retval->password, var->value, sizeof(retval->password));
} else if (!strcasecmp(var->name, "secret") || !strcasecmp(var->name, "password")) { /* don't overwrite vmsecret if it exists */
if (ast_strlen_zero(retval->password))
ast_copy_string(retval->password, var->value, sizeof(retval->password));
if (ast_strlen_zero(retval->password)) {
if (!ast_strlen_zero(var->value) && var->value[0] == '*') {
ast_log(LOG_WARNING, "Invalid password detected for mailbox %s. The password"
"\n\tmust be reset in voicemail.conf.\n", retval->mailbox);
} else {
ast_copy_string(retval->password, var->value, sizeof(retval->password));
}
}
} else if (!strcasecmp(var->name, "uniqueid")) {
ast_copy_string(retval->uniqueid, var->value, sizeof(retval->uniqueid));
} else if (!strcasecmp(var->name, "pager")) {
@ -9662,10 +9672,12 @@ static int vm_authenticate(struct ast_channel *chan, char *mailbox, int mailbox_
}
} else if (mailbox[0] == '*') {
/* user entered '*' */
ast_verb(4, "Mailbox begins with '*', attempting jump to extension 'a'\n");
if (ast_exists_extension(chan, chan->context, "a", 1,
S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
return -1;
}
ast_verb(4, "Jump to extension 'a' failed; setting mailbox to NULL\n");
mailbox[0] = '\0';
}
@ -9694,12 +9706,16 @@ static int vm_authenticate(struct ast_channel *chan, char *mailbox, int mailbox_
return -1;
} else if (password[0] == '*') {
/* user entered '*' */
ast_verb(4, "Password begins with '*', attempting jump to extension 'a'\n");
if (ast_exists_extension(chan, chan->context, "a", 1,
S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
mailbox[0] = '*';
return -1;
}
ast_verb(4, "Jump to extension 'a' failed; setting mailbox and user to NULL\n");
mailbox[0] = '\0';
/* if the password entered was '*', do not let a user mailbox be created if the extension 'a' is not defined */
vmu = NULL;
}
}
@ -10546,6 +10562,14 @@ static struct ast_vm_user *find_or_create(const char *context, const char *box)
{
struct ast_vm_user *vmu;
if (!ast_strlen_zero(box) && box[0] == '*') {
ast_log(LOG_WARNING, "Mailbox %s in context %s begins with '*' character. The '*' character,"
"\n\twhen it is the first character in a mailbox or password, is used to jump to a"
"\n\tpredefined extension 'a'. A mailbox or password beginning with '*' is not valid"
"\n\tand will be ignored.\n", box, context);
return NULL;
}
AST_LIST_TRAVERSE(&users, vmu, list) {
if (ast_test_flag((&globalflags), VM_SEARCH) && !strcasecmp(box, vmu->mailbox)) {
if (strcasecmp(vmu->context, context)) {
@ -10594,6 +10618,11 @@ static int append_mailbox(const char *context, const char *box, const char *data
stringp = tmp;
if ((s = strsep(&stringp, ","))) {
if (!ast_strlen_zero(s) && s[0] == '*') {
ast_log(LOG_WARNING, "Invalid password detected for mailbox %s. The password"
"\n\tmust be reset in voicemail.conf.\n", box);
}
/* assign password regardless of validity to prevent NULL password from being assigned */
ast_copy_string(vmu->password, s, sizeof(vmu->password));
}
if (stringp && (s = strsep(&stringp, ","))) {

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -38,6 +38,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup applications
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -24,6 +24,10 @@
*
* \ingroup applications
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"

View File

@ -543,6 +543,7 @@ static int add_action_to_menu_entry(struct conf_menu_entry *menu_entry, enum con
case MENU_ACTION_ADMIN_KICK_LAST:
case MENU_ACTION_LEAVE:
case MENU_ACTION_SET_SINGLE_VIDEO_SRC:
case MENU_ACTION_RELEASE_SINGLE_VIDEO_SRC:
break;
case MENU_ACTION_PLAYBACK:
case MENU_ACTION_PLAYBACK_AND_CONTINUE:
@ -660,6 +661,8 @@ static int add_menu_entry(struct conf_menu *menu, const char *dtmf, const char *
res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_LEAVE, NULL);
} else if (!strcasecmp(action, "set_as_single_video_src")) {
res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_SET_SINGLE_VIDEO_SRC, NULL);
} else if (!strcasecmp(action, "release_as_single_video_src")) {
res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_RELEASE_SINGLE_VIDEO_SRC, NULL);
} else if (!strncasecmp(action, "dialplan_exec(", 14)) {
ast_copy_string(buf, action, sizeof(buf));
action_args = buf;
@ -1166,6 +1169,9 @@ static char *handle_cli_confbridge_show_menu(struct ast_cli_entry *e, int cmd, s
case MENU_ACTION_SET_SINGLE_VIDEO_SRC:
ast_cli(a->fd, "set_as_single_video_src");
break;
case MENU_ACTION_RELEASE_SINGLE_VIDEO_SRC:
ast_cli(a->fd, "release_as_single_video_src");
break;
}
action_num++;
}

View File

@ -82,6 +82,7 @@ enum conf_menu_action_id {
MENU_ACTION_LEAVE,
MENU_ACTION_NOOP,
MENU_ACTION_SET_SINGLE_VIDEO_SRC,
MENU_ACTION_RELEASE_SINGLE_VIDEO_SRC,
};
/*! The conference menu action contains both

View File

@ -25,6 +25,10 @@
* \ingroup bridges
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup bridges
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -25,6 +25,10 @@
* \ingroup bridges
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -27,6 +27,10 @@
* \ingroup bridges
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
@ -435,13 +439,30 @@ static void softmix_pass_dtmf(struct ast_bridge *bridge, struct ast_bridge_chann
}
}
static void softmix_pass_video(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame)
static void softmix_pass_video_top_priority(struct ast_bridge *bridge, struct ast_frame *frame)
{
struct ast_bridge_channel *tmp;
AST_LIST_TRAVERSE(&bridge->channels, tmp, entry) {
if (tmp->suspended) {
continue;
}
if (ast_bridge_is_video_src(bridge, tmp->chan) == 1) {
ast_write(tmp->chan, frame);
break;
}
}
}
static void softmix_pass_video_all(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame, int echo)
{
struct ast_bridge_channel *tmp;
AST_LIST_TRAVERSE(&bridge->channels, tmp, entry) {
if (tmp->suspended) {
continue;
}
if ((tmp->chan == bridge_channel->chan) && !echo) {
continue;
}
ast_write(tmp->chan, frame);
}
}
@ -472,20 +493,26 @@ static enum ast_bridge_write_result softmix_bridge_write(struct ast_bridge *brid
/* Determine if this video frame should be distributed or not */
if (frame->frametype == AST_FRAME_VIDEO) {
int num_src = ast_bridge_number_video_src(bridge);
int video_src_priority = ast_bridge_is_video_src(bridge, bridge_channel->chan);
switch (bridge->video_mode.mode) {
case AST_BRIDGE_VIDEO_MODE_NONE:
break;
case AST_BRIDGE_VIDEO_MODE_SINGLE_SRC:
if (ast_bridge_is_video_src(bridge, bridge_channel->chan)) {
softmix_pass_video(bridge, bridge_channel, frame);
if (video_src_priority == 1) {
softmix_pass_video_all(bridge, bridge_channel, frame, 1);
}
break;
case AST_BRIDGE_VIDEO_MODE_TALKER_SRC:
ast_mutex_lock(&sc->lock);
ast_bridge_update_talker_src_video_mode(bridge, bridge_channel->chan, sc->video_talker.energy_average, ast_format_get_video_mark(&frame->subclass.format));
ast_mutex_unlock(&sc->lock);
if (ast_bridge_is_video_src(bridge, bridge_channel->chan)) {
softmix_pass_video(bridge, bridge_channel, frame);
if (video_src_priority == 1) {
int echo = num_src > 1 ? 0 : 1;
softmix_pass_video_all(bridge, bridge_channel, frame, echo);
} else if (video_src_priority == 2) {
softmix_pass_video_top_priority(bridge, frame);
}
break;
}

View File

@ -26,6 +26,7 @@
/*** MODULEINFO
<depend>res_odbc</depend>
<support_level>core</support_level>
***/
#include "asterisk.h"

View File

@ -28,6 +28,10 @@
* \ingroup cdr_drivers
*/
/*** MODULEINFO
<support_level>extended</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

View File

@ -30,6 +30,10 @@
* \ingroup cdr_drivers
*/
/*** MODULEINFO
<support_level>core</support_level>
***/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")

Some files were not shown because too many files have changed in this diff Show More