Macros are now implemented underneath with the Gosub() application.
Heaven Help You if you wrote code depending on any aspect of this!
Previous to 1.6, macros were implemented with the Macro() app, which
provided a nice feature of auto-returning. The compiler will do its
best to insert a Return() app call at the end of your macro if you did
not include it, but really, you should make sure that all execution
paths within your macros end in "return;".
The conf2ael program is 'introduced' in this release; it is in a rather
crude state, but deemed useful for making a first pass at converting
extensions.conf code into AEL. More intelligence will come with time.
AEL upgraded to use the Gosub with Arguments instead
of Macro application, to hopefully reduce the problems
seen with the artificially low stack ceiling that
Macro bumps into. Macros can only call other Macros
to a depth of 7. Tests run using gosub, show depths
limited only by virtual memory. A small test demonstrated
recursive call depths of 100,000 without problems.
-- in addition to this, all apps that allowed a macro
to be called, as in Dial, queues, etc, are now allowing
a gosub call in similar fashion.
AEL now generates LOCAL(argname) declarations when it
Set()'s the each arg name to the value of ${ARG1}, ${ARG2),
etc. That makes the arguments local in scope. The user
can define their own local variables in macros, now,
by saying "local myvar=someval;" or using Set() in this
fashion: Set(LOCAL(myvar)=someval); ("local" is now
an AEL keyword).
utils/conf2ael introduced. Will convert an extensions.conf
file into extensions.ael. Very crude and unfinished, but
will be improved as time goes by. Should be useful for a
first pass at conversion.
aelparse will now read extensions.conf to see if a referenced
macro or context is there before issueing a warning.
AEL parser sets a local channel variable ~~EXTEN~~, to
preserve the value of ${EXTEN} thru switch statements.
New operator in $[...] expressions: the ~~ operator serves
as a concatenation operator. AT THE MOMENT, it is really only
necessary and useful in AEL, especially in if() expressions.
Operation: ${a} ~~ ${b| with force both a and b to strings, strip
any enclosing double-quotes, and evaluate to the value of a
concatenated with the value of b. For example if a is set to
"xyz" and b has the value "abc", then ${a} ~~ ${b| would
evaluate to xyzabc .
API Calls (for modules):
Asterisk 1.6.0 -> Asterisk 1.6.1
The ast_agi_fdprintf() API call has been renamed to ast_agi_send()
to better match what it really does, and the argument order has been
changed to be consistent with other API calls that perform similar
operations.
The ast_agi_register_multiple() and ast_agi_unregister_multiple()
API calls were added in 1.6.0, so that modules that provide multiple
AGI commands could register/unregister them all with a single
step. However, these API calls were not implemented properly, and did
not allow the caller to know whether registration or unregistration
succeeded or failed. They have been redefined to now return success
or failure, but this means any code using these functions will need
be recompiled after upgrading to a version of Asterisk containing
these changes. In addition, the source code using these functions
should be reviewed to ensure it can properly react to failure
of registration or unregistration of its API commands.
CLI:
Asterisk 1.4 -> Asterisk 1.6.0
New CLI command "core show hint" (usage: core show hint )
New CLI command "core show settings"
Added 'core show channels count' CLI command.
Added the ability to set the core debug and verbose values on a per-file basis.
Added 'queue pause member' and 'queue unpause member' CLI commands
Ability to set process limits ("ulimit") without restarting Asterisk
Enhanced "agi debug" to print the channel name as a prefix to the debug
output to make debugging on busy systems much easier.
New CLI commands "dialplan set extenpatternmatching true/false"
New CLI command: "core set chanvar" to set a channel variable from the CLI.
Added an easy way to execute Asterisk CLI commands at startup. Any commands
listed in the startup_commands section of cli.conf will get executed.
Added a CLI command, "devstate change", which allows you to set custom device
states from the func_devstate module that provides the DEVICE_STATE() function
and handling of the "Custom:" devices.
New CLI command: "sip show sched" which shows all ast_sched entries for sip,
sorted into the different possible callbacks, with the number of entries
currently scheduled for each. Gives you a feel for how busy the sip channel
driver is.
Added cli command 'features reload' to reload call features from features.conf
Asterisk 1.6.0 -> Asterisk 1.6.1
New CLI command, "config reload " which reloads any module that
references that particular configuration file. Also added "config list"
which shows which configuration files are in use.
New CLI commands, "pri show version" and "ss7 show version" that will
display which version of libpri and libss7 are being used, respectively.
A new API call was added so trunk will now have to be compiled against
a versions of libpri and libss7 that have them or it will not know that
these libraries exist.
The commands "core show globals", "core set global" and "core set chanvar" has
been deprecated in favor of the more semanticly correct "dialplan show globals",
"dialplan set chanvar" and "dialplan set global".
New CLI command "dialplan show chanvar" to list all variables associated
with a given channel.
'sip show peers' and 'sip show users' display their entries sorted in
alphabetical order, as opposed to the order they were in, in the config
file or database.
Asterisk 1.6.1 -> Asterisk 1.6.2
Added debugging CLI functions to func_odbc, 'odbc read' and 'odbc write'.
The Asterisk CLI has a new command, "channel redirect", which is similar in
operation to the AMI Redirect action.
All deprecated CLI commands are removed from the sourcecode. They are now handled
by the new clialiases module. See cli_aliases.conf.sample file.
The default console now will use colors according to the default background
color, instead of forcing the background color to black. If you are using a
light colored background for your console, you may wish to use the option
flag '-W' to present better color choices for the various messages. However,
if you'd prefer the old method of forcing colors to white text on a black
background, the compatibility option -B is provided for this purpose.
Asterisk 1.6.2 -> Asterisk 1.8
Added support for message body (stored in content variable) to SIP NOTIFY message
accessible via AMI and CLI.
The 'core set debug' and 'core set verbose' commands, in previous versions, could
optionally accept a filename, to apply the setting only to the code generated from
that source file when Asterisk was built. However, there are some modules in Asterisk
that are composed of multiple source files, so this did not result in the behavior
that users expected. In this version, 'core set debug' and 'core set verbose'
can optionally accept
module* names instead (with or without the .so extension),
which applies the setting to the entire module specified, regardless of which source
files it was built from.
New 'manager show settings' command showing the current settings loaded from
manager.conf.
Added 'all' keyword to the CLI command "channel request hangup" so that you can send
the channel hangup request to all channels.
Added a "core reload" CLI command that executes a global reload of Asterisk.
Core:
Asterisk 1.4 -> 1.6.0
The 'languageprefix' option in asterisk.conf is now deprecated, and
the default sound file layout for non-English sounds is the 'new
style' layout introduced in Asterisk 1.4 (and used by the automatic
sound file installer in the Makefile).
The ast_expr2 stuff has been modified to handle floating-point numbers.
Numbers of the format D.D are now acceptable input for the expr parser,
Where D is a string of base-10 digits. All math is now done in "long double",
if it is available on your compiler/architecture. This was half-way between
a bug-fix (because the MATH func returns fp by default), and an enhancement.
Also, for those counting on, or needing, integer operations, a series of
'functions' were also added to the expr language, to allow several styles
of rounding/truncation, along with a set of common floating point operations,
like sin, cos, tan, log, pow, etc. The ability to call external functions
like CDR(), etc. was also added, without having to use the ${...} notation.
The delimiter passed to applications has been changed to the comma (','), as
that is what people are used to using within extensions.conf. If you are
using realtime extensions, you will need to translate your existing dialplan
to use this separator. To use a literal comma, you need merely to escape it
with a backslash ('\'). Another possible side effect is that you may need to
remove the obscene level of backslashing that was necessary for the dialplan
to work correctly in 1.4 and previous versions. This should make writing
dialplans less painful in the future, albeit with the pain of a one-time
conversion. If you would like to avoid this conversion immediately, set
pbx_realtime=1.4 in the [compat] section of asterisk.conf. After
transitioning, set pbx_realtime=1.6 in the same section.
For the same purpose as above, you may set res_agi=1.4 in the [compat]
section of asterisk.conf to continue to use the '|' delimiter in the EXEC
arguments of AGI applications. After converting to use the ',' delimiter,
change this option to res_agi=1.6.
As a side effect of the application delimiter change, many places that used
to need quotes in order to get the proper meaning are no longer required.
You now only need to quote strings in configuration files if you literally
want quotation marks within a string.
The logger.conf option 'rotatetimestamp' has been deprecated in favor of
'rotatestrategy'. This new option supports a 'rotate' strategy that more
closely mimics the system logger in terms of file rotation.
The concise versions of various CLI commands are now deprecated. We recommend
using the manager interface (AMI) for application integration with Asterisk.
Asterisk 1.6.0 -> Asterisk 1.6.1
You can now compile Asterisk against the Hoard Memory Allocator, see doc/hoard.txt
for more information.
The event infrastructure in Asterisk got another big update to help support
distributed events. It currently supports distributed device state and
distributed Voicemail MWI (Message Waiting Indication). A new module has
been merged, res_ais, which facilitates communicating events between servers.
It uses the SAForum AIS (Service Availability Forum Application Interface
Specification) CLM (Cluster Management) and EVT (Event) services to maintain
a cluster of Asterisk servers, and to share events between them. For more
information on setting this up, see doc/distributed_devstate.txt.
The following core commands dealing with dialplan have been deprecated: 'core
show globals', 'core set global' and 'core set chanvar'. Use the equivalent
'dialplan show globals', 'dialplan set global' and 'dialplan set chanvar'
instead.
Asterisk 1.6.1.1 -> Asterisk 1.6.1.2
Beginning with this release, Asterisk's internal methods of
negotiating T.38 (FAX over IP) sessions changed in
non-backwards-compatible ways. Any applications that previously used
AST_CONTROL_T38 control frames will have to be upgraded to use
AST_CONTROL_T38_PARAMETERS control frames instead; app_fax.c is a good
example of how to generate and respond to these frames. These changes
were made to solve significant T.38 interoperability problems between
Asterisk and various SIP/T.38 endpoints identified by many users of
Asterisk.
Asterisk 1.6.1 -> Asterisk 1.6.2
T.38 FAX error correction mode can no longer be configured in udptl.conf;
instead, it is configured on a per-peer (or global) basis in sip.conf, with
the same default as was present in udptl.conf.sample.
T.38 FAX maximum datagram size can no longer be configured in updtl.conf;
instead, it is either supplied by the application servicing the T.38 channel
(for a FAX send or receive) or calculated from the bridged endpoint's
maximum datagram size (for a T.38 FAX passthrough call). In addition, sip.conf
allows for overriding the value supplied by a remote endpoint, which is useful
when T.38 connections are made to gateways that supply incorrectly-calculated
maximum datagram sizes.
Asterisk's internal methods of
negotiating T.38 (FAX over IP) sessions changed in
non-backwards-compatible ways. Any applications that previously used
AST_CONTROL_T38 control frames will have to be upgraded to use
AST_CONTROL_T38_PARAMETERS control frames instead; app_fax.c is a good
example of how to generate and respond to these frames. These changes
were made to solve significant T.38 interoperability problems between
Asterisk and various SIP/T.38 endpoints identified by many users of
Asterisk.
Times within timespecs are now accurate down to the minute. This is a change
from historical Asterisk, which only provided timespecs rounded to the nearest
even (read: evenly divisible by 2) minute mark.
In addition to a time range and date range, timespecs now accept a 5th optional
argument, timezone. This allows you to perform time checks on alternate
timezones, especially if those daylight savings time ranges vary from your
machine's native timezone. See GotoIfTime, ExecIfTime, IFTIME(), and timed
includes.
The Asterisk core now supports ITU G.722.1 and G.722.1C media streams, and
can connect calls in passthrough mode, as well as record and play back files.
ASTVARRUNDIR is now set to $(localstatedir)/run/asterisk by default.
This means the asterisk pid file will now be in /var/run/asterisk/asterisk.pid on LINUX
instead of the /var/run/asterisk.pid where it used to be. This will make
installs as non-root easier to manage.
The res_indications module has been removed. Its functionality was important
enough that most of it has been moved into the Asterisk core.
Two applications previously provided by res_indications, PlayTones and
StopPlayTones, have been moved into a new module, app_playtones.
Language Support Changes:
Asterisk 1.4 -> Asterisk 1.6.0
Brazilian Portuguese (pt-BR) in VM, and say.c was added
Added support for the Hungarian language for saying numbers, dates, and times.
Asterisk 1.6.0 -> Asterisk 1.6.1
Support for Taiwanese was incorrectly supported with the "tw" language code.
In reality, the "tw" language code is reserved for the Twi language, native
to Ghana. If you were previously using the "tw" language code, you should
switch to using either "zh" (for Mandarin Chinese) or "zh_TW" for Taiwan
specific localizations. Additionally, "mx" should be changed to "es_MX",
Georgian was incorrectly specified as "ge" but should be "ka", and Czech is
"cs", not "cz".
Asterisk 1.6.1 -> Asterisk 1.6.2
Support for Taiwanese was incorrectly supported with the "tw" language code.
In reality, the "tw" language code is reserved for the Twi language, native
to Ghana. If you were previously using the "tw" language code, you should
switch to using either "zh" (for Mandarin Chinese) or "zh_TW" for Taiwan
specific localizations. Additionally, "mx" should be changed to "es_MX",
Georgian was incorrectly specified as "ge" but should be "ka", and Czech is
"cs", not "cz".
Miscellaneous:
Asterisk 1.4 -> Asterisk 1.6.0
Ability to use libcap to set high ToS bits when non-root
on Linux. If configure is unable to find libcap then you
can use --with-cap to specify the path.
Added maxfiles option to options section of asterisk.conf which allows you to specify
what Asterisk should set as the maximum number of open files when it loads.
Added the jittertargetextra configuration option.
Added support for setting the CoS for VLAN traffic (802.1p). See the sample
configuration files for the IP channel drivers. The new option is "cos".
This information is also documented in doc/qos.tex, or the IP Quality of Service
section of asterisk.pdf.
When originating a call using AMI or pbx_spool that fails the reason for failure
will now be available in the failed extension using the REASON dialplan variable.
Added support for reading the TOUCH_MONITOR_PREFIX channel variable.
It allows you to configure a prefix for auto-monitor recordings.
A new extension pattern matching algorithm, based on a trie, is introduced
here, that could noticeably speed up mid-sized to large dialplans.
It is NOT used by default, as duplicating the behaviour of the old pattern
matcher is still under development. A config file option, in extensions.conf,
in the [general] section, called "extenpatternmatchingnew", is by default
set to false; setting that to true will force the use of the new algorithm.
Also, the cli commands "dialplan set extenpatternmatchingnew true/false" can
be used to switch the algorithms at run time.
A new option when starting a remote asterisk (rasterisk, asterisk -r) for
specifying which socket to use to connect to the running Asterisk daemon
(-s)
Performance enhancements to the sched facility, which is used in
the channel drivers, etc. Added hashtabs and doubly-linked lists
to speed up deletion; start at the beginning or end of list to
speed up insertion.
Added Doubly-linked lists after the fashion of linkedlists.h. They are in
dlinkedlists.h. Doubly-linked lists feature fast deletion times.
Added regression tests to the tests/ dir, also.
Added a refcount trace feature to astobj2 for those trying to balance
object creation, deletion; work, play; space and time. See the
notes in astobj2.h. Also, see utils/refcounter as well, as a
quick way to find unbalanced refcounts in what could be a sea
of objects that were balanced.
Added logging to 'make update' command. See update.log
Added strictrtp option to rtp.conf. If enabled this will drop RTP packets that
do not come from the remote party.
Added the 'n' option to the SpeechBackground application to tell it to not
answer the channel if it has not already been answered.
Added a compiler flag, CHANNEL_TRACE, which permits channel tracing to be
turned on, via the CHANNEL(trace) dialplan function. Could be useful for
dialplan debugging.
iLBC source code no longer included (see UPGRADE.txt for details)
If compiled with DETECT_DEADLOCKS enabled and if you have glibc, then if
deadlock is detected, a backtrace of the stack which led to the lock calls
will be output to the CLI.
If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing
the "core show locks" CLI command will give lock information output as well
as a backtrace of the stack which led to the lock calls.
users.conf now sports an optional alternateexts property, which permits
allocation of additional extensions which will reach the specified user.
A new option for the configure script, --enable-internal-poll, has been added
for use with systems which may have a buggy implementation of the poll system
call. If you notice odd behavior such as the CLI being unresponsive on remote
consoles, you may want to try using this option. This option is enabled by default
on Darwin systems since it is known that the Darwin poll() implementation has
odd issues.
Asterisk 1.6.1 -> Asterisk 1.6.2
The contrib/scripts/ directory now has a script called sip_nat_settings that will
give you the correct output for an asterisk box behind nat. It will give you the
externhost and localnet settings.
The firmware for the IAXy has been removed from Asterisk. It can be
downloaded from http://downloads.digium.com/pub/iaxy/. To have Asterisk
install the firmware into its proper location, place the firmware in the
contrib/firmware/iax/ directory in the Asterisk source tree before running
"make install".
Asterisk 1.6.2 -> Asterisk 1.8
The transmit_silence_during_record option in asterisk.conf.sample has been removed.
Now, in order to enable transmitting silence during record the transmit_silence
option should be used. transmit_silence_during_record remains a valid option, but
defaults to the behavior of the transmit_silence option.
Addition of the Unit Test Framework API for managing registration and execution
of unit tests with the purpose of verifying the operation of C functions.
Modules.conf has a new option - "require" - that marks a module as critical for
the execution of Asterisk.
If one of the required modules fail to load, Asterisk will exit with a return
code set to 2.
An 'X' option has been added to the asterisk application which enables #exec support.
This allows #exec to be used in asterisk.conf.
A new lockconfdir option has been added to asterisk.conf to protect the
configuration directory (/etc/asterisk by default) during reloads.
The addition of improved translation path building for wideband codecs. Sample
rate changes during translation are now avoided unless absolutely necessary.
The addition of the res_stun_monitor module for monitoring and reacting to network
changes while behind a NAT.
HASH-associated variables now can be inherited across channel creation, by
prefixing the name of the hash at assignment with the appropriate number of
underscores, just like variables.