Asterisk 1.4.18-rc4 Now Available

Asterisk 1.4.18-rc4 is now available.

This release candidate includes an important fix for a regression related to the
use of codec_g729 that caused decoders to not get properly released. Additional
fixes added today that are included in this release candidate include:

  • fixes for some locking errors in chan_agent
  • a memory leak related to the use of AMI redirect
  • Solaris compatibility fixes
  • a fix related to call recordings from Monitor getting deleted before being mixed if a blind transfer is done from a Queue.

Thanks to everyone that has jumped on to help out with testing of release candidates! It has already been extremely helpful.

This release candidate is published for anyone that is interested in helping to test it for a couple of days before it is officially released. To download the release candidate, use the following svn command:

$ svn co http://svn.digium.com/svn/asterisk/tags/1.4.18 asterisk-1.4.18-rc4

If you would like it in tarball format, use the following commands:

$ svn export http://svn.digium.com/svn/asterisk/tags/1.4.18 asterisk-1.4.18-rc4
$ tar -czvf asterisk-1.4.18-rc4.tar.gz asterisk-1.4.18-rc4/

Thanks!

Asterisk 1.6 Features: TLS for Manager (AMI) and HTTP

I have pointed out this file before, but I’d like to point it out again. If you’re curious what new features have been added for Asterisk 1.6 since 1.4 was released, then check out the CHANGES file. The current version of it can be found here.

There are a lot of cool features in there, so I’ll pull some out from time to time to highlight them.

One of the nice features in this version is native TLS support for the Asterisk manager interface as well as the built-in HTTP server. This was developed by one of our outstanding community developers, Luigi Rizzo. This means that it is easier to make applications that use these interfaces more secure. For example, users of the AsteriskGUI that is bundled with AsteriskNOW will have an easier time setting up secure access to configure Asterisk from a web browser. Previously, the way to do this was to proxy communication with Asterisk through a web server such as Apache or lighttpd.

Turning on this feature is easy. For the manager interface, only two options are required in the [general] section of manager.conf:

sslenable = yes
sslcert = /var/lib/asterisk/asterisk.pem

For the HTTP interface, the exact same two options are required, but for http.conf.

We take security very seriously in the Asterisk project. This has really been demonstrated through our current process for handling security issues that get reported to us. Now, in Asterisk 1.6, with TLS support for SIP signalling, The Asterisk Manager Interface (AMI), as well as the HTTP interface, we’re making it even easier to secure communications with your Asterisk server.

Asterisk 1.4.18-rc3 Now Available

Asterisk 1.4.18-rc3 is now available. The important bug fixes that made it into this RC are a couple of crash fixes for ChanSpy/MixMonitor. A few other less severe bug fixes made it in, as well.

This release candidate is published for anyone that is interested in helping to test it for a couple of days before it is officially released. To download the release candidate, use the following svn command:

$ svn co http://svn.digium.com/svn/asterisk/tags/1.4.18 asterisk-1.4.18-rc3

If you would like it in tarball format, use the following commands:

$ svn export http://svn.digium.com/svn/asterisk/tags/1.4.18 asterisk-1.4.18-rc3
$ tar -czvf asterisk-1.4.18-rc3.tar.gz asterisk-1.4.18-rc3/

Thanks!

Asterisk 1.6.0-beta2 and 1.4.18-rc2 Now Available

The Asterisk development team has released versions 1.6.0-beta2 and and 1.4.18-rc2.

The new beta for 1.6 is available for download from http://downloads.digium.com/.

The release candidate for 1.4.18 is only available via svn. It is available for anyone that would like to help test 1.4.18 over the next couple of days before it gets officially released.

To download the 1.4.18 release candidate:


$ svn co http://svn.digium.com/svn/asterisk/tags/1.4.18 1.4.18-rc2

To make a tarball out of the previous checkout, do:


$ svn export http://svn.digium.com/svn/asterisk/tags/1.4.18 asterisk-1.4.18-rc2
$ tar -czvf asterisk-1.4.18-rc2.tar.gz asterisk-1.4.18-rc2/

Please report any issues to http://bugs.digium.com/.

Thank you for your support!

Digium Relaxes Google AdWord Policy

If you heard anything about the recent policy changes made by Digium in regards to the usage of its trademarks with Google AdWords, then be sure you see the official response from our CEO, Danny Windham, on the Digium blog.

From the response:

Over the past week we have received a number of charged responses regarding the recent change in policy related to the use of Digium trademarked terms in Google AdWords. Some of the responses supported our attempts to better control the use of Digium trademarked terms. Some of the responses disagreed with the policy, but respected Digium’s right to have changed the policy. Others were from individuals who clearly were unhappy with the change and the process by which it was implemented. We have listened carefully to the feedback, and as a result are relaxing our Google AdWord policy.

Asterisk 1.6.0-beta1 released

The Asterisk.org development team has published Asterisk version 1.6.0-beta1. Everyone is encouraged to help test Asterisk 1.6, so that the release may be available soon.

Asterisk 1.6 will be the first major release of Asterisk since 1.4, which was released just over one year ago. This release contains a number of new features, as well as architectural improvements for improved performance.

A list of the new features is available in the CHANGES file:

http://svn.digium.com/view/asterisk/tags/1.6.0-beta1/CHANGES?view=co

Asterisk 1.6 also brings about a new release management style. This release management policies have been changed for Asterisk 1.6 to account for some of the things we have learned while maintaining Asterisk 1.2 and 1.4 in the past. For more information on the new release management policy, see the following thread on the asterisk-dev mailing list:

http://lists.digium.com/pipermail/asterisk-dev/2007-October/030083.html

The support levels for Asterisk 1.2 and 1.4 will not change in the near future. There are no current plans as to when the support of those releases will change. Those decisions will be made as a result of discussions in the developer community when the time comes, and a public announcement will be made
with plenty of advance notice before anything changes.

Thank you for the support, and we look forward to your feedback on this release!

New SIP features for Asterisk 1.6

In the past week, I have merged patches into Asterisk trunk that provide new features for chan_sip. These features will be available in Asterisk 1.6.

TCP and TLS support

The Commit

In the past, Asterisk has only had support for UDP as a transport for SIP signaling. Asterisk 1.6 will have support for both TCP and TLS, as well.

This work was done by Brett Bryant and James Golovich, who were both funded by Digium for their work.

SIP Session Timers (RFC 4028)

The Commit

Asterisk 1.6 will also have support for SIP Session Timers, as defined by RFC 4028. These changes prevent stuck SIP sessions that were not properly torn down due to network or endpoint failures during an established SIP session.

This work was done by Raj Jain. It was funded by John Todd from TalkPlus, Inc., as well as JR Richardson of Ntegrated Solutions.

Both of these features are major steps forward for SIP support in Asterisk!

Zaptel 1.2.23 and 1.4.8 Released

The Asterisk.org development team has released Zaptel versions 1.2.23 and 1.4.8.

These releases contain a number of bug fixes as well as new features, including:

  • New and greatly improved fxotune utility
  • Full support for new Digium cards, AEX2400, TE121, TE122
  • DTMF generator updates to allow tones to be generated at runtime, as well as support for a DTMF “twist”, on a per-zone basis. The tones for Brazil have been updated to include a 2 dB DTMF twist.

These releases are available for immediate download from downloads.digium.com.

Thank you for your support!

JACK interfaces for Asterisk

I just merged a new module that I have been working on into trunk. The module is app_jack. It provides interfaces between Asterisk and JACK (Jack Audio Connection Kit). A description of JACK from their website:

Have you ever wanted to take the audio output of one piece of software and send it to another? How about taking the output of that same program and send it to two others, then record the result in the first program? If so, JACK may be what you’ve been looking for.

JACK is a low-latency audio server, written for POSIX conformant operating systems such as GNU/Linux and Apple’s OS X. It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. Its clients can run in their own processes (ie. as normal applications), or can they can run within the JACK server (ie. as a “plugin”).

I recently learned about PureData, so very quickly I wanted to be able to get phone calls in and out of Pd (PureData). After exploring various options, JACK turned out to be the obvious choice for providing audio transport between Asterisk and Pd. I have been wanting to build some interesting applications in Pd that do audio analysis and manipulation, but I had some infrastructure work to complete first.

So, I wrote app_jack. This module provides two interfaces between Asterisk and JACK. The first is an Asterisk application, JACK(). The second interface is a dialplan function, JACK_HOOK().

JACK() Application

This is the simpler of the two interfaces. When the JACK() application is executed in the Asterisk dialplan, two JACK ports get created. There is an input and output port that acts as the endpoint of a phone call. The audio from the channel goes out of the output port that gets created. Whatever audio that comes in on the input port is what gets sent back to the caller. This would allow for some advanced voice applications that interact with the audio of the call and run as a separate application.

Example:

exten => 1234,1,Answer
exten => 1234,n,JACK()

For more information, see the built in documentation for the application from the Asterisk CLI:

*CLI> core show application JACK

JACK_HOOK() Function

This interface is a little bit more complex, but it is the much more interesting one, in my opinion. The JACK_HOOK function creates an audiohook and attaches it to the channel. In this case, instead of the JACK interface being the endpoint of the phone call, it is simply hooked in to the audio path for a phone call to something else. Audio that comes from a caller gets sent out the JACK output port, and whatever audio that comes back in on the input port gets sent on as the caller’s audio. This allows for cool applications that do analysis and manipulation of the audio in a phone call. One example is that I can now write custom vocoders in Pd.

For more information about the syntax for using JACK_HOOK, see the built in documentation from the Asterisk CLI:

*CLI> core show function JACK_HOOK

Here is a simple example for enabling a JACK_HOOK for a call:

exten => _1NXXNXXXXXX,1,Answer
exten => _1NXXNXXXXXX,n,Set(JACK_HOOK(manipulate)=on)
exten => _1NXXNXXXXXX,n,Dial(IAX2/myprovider/${EXTEN})

This also inspired me to write a new CLI command, “core set chanvar”, which lets you set a channel variable or function from the Asterisk CLI. You can use it to turn on a JACK_HOOK for an existing call from the CLI.

*CLI> core set chanvar SIP/poly1-ab23jadf234 JACK_HOOK(manipulate) on

Another way to enable a JACK_HOOK for an existing call would be by using the manager interface. For example:

Action: SetVar
Channel: SIP/123-f234kjsdfz
Variable: JACK_HOOK(manipulate)
Value: on

Enjoy! Please let me know if you find this interesting or useful. I would also be happy to consider any suggestions for enhancements.