7 years agoMerge "res_pjsip: Add option to force G.726 to be treated as AAL2 packed."
Joshua Colp [Tue, 16 Jun 2015 12:51:30 +0000 (07:51 -0500)]
Merge "res_pjsip: Add option to force G.726 to be treated as AAL2 packed."

7 years agofunc_pjsip_aor: Fix leaked contact from iterator.
Corey Farrell [Mon, 15 Jun 2015 21:40:54 +0000 (17:40 -0400)]
func_pjsip_aor: Fix leaked contact from iterator.

ASTERISK-25162 #close

Change-Id: Id79aa3c6fe490016ee98efc97ac4c1d3f461f97e

7 years agores_pjsip: Add option to force G.726 to be treated as AAL2 packed.
Kevin Harwell [Fri, 12 Jun 2015 21:58:27 +0000 (16:58 -0500)]
res_pjsip: Add option to force G.726 to be treated as AAL2 packed.

Some phones send g.726 audio packed for AAL2, which differs from what is
recommended by RFC 3351. If Asterisk receives audio formatted as such when
negotiating g.726 then it sounds a bit distorted. Added an option to
res_pjsip_endpoint that allows g.726 negotiated audio to be treated as g.726
AAL2 packed.

ASTERISK-25158 #close
Reported by: Steve Pitts

Change-Id: Ie7e21f75493d7fe53e75e12c971e72f5afa33615

7 years agomain/cdr: Carry over the disable flag when 'disable all' is specified
mjordan [Mon, 15 Jun 2015 00:48:26 +0000 (19:48 -0500)]
main/cdr: Carry over the disable flag when 'disable all' is specified

The CDR_PROP function (as well as the NoCDR application) set the
'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This
flag is supposed to be applied to all CDRs that are currently in the
chain, as well as all CDRs that may be created in the future. Currently,
however, the flag is only applied to the existing CDRs in the chain; new
CDRs do not receive the 'disable all' flag. In particular, this affects
parallel dials, which generate new CDRs for each pair of channels in
the dial attempt.

This patch carries over the 'disable all' flag when it is specified on a
CDR and a new CDR is generated for the chain.

ASTERISK-24344 #close

Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e

7 years agomain/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines
Matt Jordan [Fri, 12 Jun 2015 19:28:47 +0000 (14:28 -0500)]
main/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines

When a parallel dial occurs, a new CDR will be created for each dial
attempt that is made. In most circumstances, the act of creating each
CDR in the chain will include a step that updates the Party A snapshot,
which causes the context/extension of the Party A to be copied onto the
CDR object.

However, when the Party A is in a subroutine, we explicitly do *not*
copy the context/extension onto the CDR. This prevents the Macro or
GoSub routine name from blowing away the context/extension that the
channel was originally executing in. For the original CDR, this is not a
problem: the original CDR already recorded the last known 'good' state
of the channel just prior to it going into the subroutine. However, for
newly generated CDRs in a chain, there is no context/extension set on
them. Since we are in a subroutine, we will never set the Party A's
context/extension on the CDR, and we end up with a CDR with no
destination recorded on it.

This patch updates the creation of a chained CDR such that it copies
over the original CDR's context/extension. This is the last known "good"
state of the CDR, and is a reasonable starting point for the newly
generated CDR. In the case where we are not in a subroutine, subsequent
code will update the location of the CDR from the Party A information;
in the case where we are in a subroutine, the context/extension on the
original CDR is the correct information.

ASTERISK-24443 #close

Change-Id: I6a3ef0d6e458d3b9b30572feaec70f2964f3bc2a

7 years agoMerge "bridge: When performing a blonde transfer update connected line information."
Matt Jordan [Sat, 13 Jun 2015 13:36:58 +0000 (08:36 -0500)]
Merge "bridge: When performing a blonde transfer update connected line information."

7 years agoMerge "chan_sip.c: Update dialog fromtag after request with auth"
Mark Michelson [Fri, 12 Jun 2015 21:02:15 +0000 (16:02 -0500)]
Merge "chan_sip.c: Update dialog fromtag after request with auth"

7 years agoMerge "app_directory: Fix crash when using the alias option 'a'."
Mark Michelson [Fri, 12 Jun 2015 21:01:42 +0000 (16:01 -0500)]
Merge "app_directory: Fix crash when using the alias option 'a'."

7 years agochan_sip.c: Update dialog fromtag after request with auth
Damian Ivereigh [Thu, 11 Jun 2015 13:18:48 +0000 (23:18 +1000)]
chan_sip.c: Update dialog fromtag after request with auth

If a client sends and INVITE which is 401 rejected, then subsequently
sends a new INVITE with the auth info and uses a different fromtag
from the first INVITE, Asterisk will accept the new INVITE as part of
the original dialog - match_req_to_dialog() specifically ignores the
fromtag. However it does not update the stored dialog with the new

This results in Asterisk being unable to match future packets that are
part of this dialog (such as the ACK to the OK or the OK to the BYE),
and the call is dropped.

This problem was originally found when using an NEC-i SV8100-GE (NEC SIP

* After a successful match of a packet to the dialog, if the packet is
  not a SIP_RESPONSE, authentication is present and the fromtags are
  different, the stored fromtag is updated with the one from the recent

ASTERISK-25154 #close
Reported by: Damian Ivereigh
Tested by: Damian Ivereigh

Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e

7 years agochan_pjsip: Set the context and extension on the channel when created
Matt Jordan [Thu, 11 Jun 2015 23:52:09 +0000 (18:52 -0500)]
chan_pjsip: Set the context and extension on the channel when created

Prior to this patch, chan_pjsip was failing to pass the endpoint's
context and the desired extension to the ast_channel_alloc_* routine.
This caused a new channel snapshot to be issued without a context and
extension, which can cause some reporting issues for users of AMI, CEL,
and other APIs. The channel driver would later set the context and
extension on the channel such that the channel would start in the
correct location in the dialplan, but the information reported in the
initial event would be incorrect.

This patch modifies the channel driver such that it now passes the
context and extension directly into the allocation routine. This
provides the information in the new channel snapshot published over

ASTERISK-25156 #close
Reported by: cloos

Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e

7 years agoMerge "install_prereq: Check if is installed aptitude otherwise to install."
Matt Jordan [Thu, 11 Jun 2015 23:44:20 +0000 (18:44 -0500)]
Merge "install_prereq: Check if is installed aptitude otherwise to install."

7 years agobridge: When performing a blonde transfer update connected line information.
Joshua Colp [Wed, 10 Jun 2015 23:28:26 +0000 (20:28 -0300)]
bridge: When performing a blonde transfer update connected line information.

When performing a blonde transfer the code uses the old masquerade
mechanism to move a channel around. As a result of this certain information,
such as connected line, is moved between the channels involved. Upon
completion of the move a frame is queued which is supposed to update the
connected line information on the channel. This does not occur as the
code considers it a redundant update since the masquerade operation
updated the channel (but did not inform it of the new connected line
information). The code also does not queue a connected line update
to be handled by the thread handling the channel. Without this any
other channel that may be loosely involved does not know it is
talking to a different caller.

This change does the following to resolve this:

1. The indicated connected line information is cleared upon
completion of the masquerade operation when doing a blonde transfer.
This prevents the connected line update from being considered

2. A connected line update frame is now queued upon the completion
of the masquerade operation so any other channel loosely involved
knows that there is a different caller.

ASTERISK-25157 #close
Reported by: Joshua Colp

Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20

7 years agoapp_directory: Fix crash when using the alias option 'a'.
Richard Mudgett [Thu, 11 Jun 2015 19:39:45 +0000 (14:39 -0500)]
app_directory: Fix crash when using the alias option 'a'.

The voicemail.conf mailbox key/value pair is defined as:
Where all fields in the value including the field values are optional.

Since the parsing code for the mailbox key/value pair is sloppy, this
patch tightens the parsing for the directory information.

* Renamed the 'pos' and 'bufptr' variables to 'name' and 'options'
respectively in search_directory_sub().  Those names make more sense.

* Made sure that search_directory_sub() is dealing with the voicemail.conf
mailbox options field if it even exists when looking for the 'hidefromdir'
and 'alias' options.

* Fix crash if a voicemail.conf mailbox is just
<mailbox>=<password>,<name> when the 'a' option is used.  If there were no
fields after the name then the 'options' pointer was not checked for NULL.

* Fix users.conf alias processing if the 'a' option is used.  The wrong
variable was used.

ASTERISK-25087 #close
Reported by: Chet Stevens

Change-Id: I86052ea77307beddddba5279824d39dc0d593374

7 years agoDNS: Need to use the same serializer for a pjproject SIP transaction.
Richard Mudgett [Fri, 5 Jun 2015 20:37:33 +0000 (15:37 -0500)]
DNS: Need to use the same serializer for a pjproject SIP transaction.

All send/receive processing for a SIP transaction needs to be done under
the same threadpool serializer to prevent reentrancy problems inside
pjproject when using an external DNS resolver to process messages for the

* Add threadpool API call to get the current serializer associated with
the worker thread.

* Pick a serializer from a pool of default serializers if the caller of
res_pjsip.c:ast_sip_push_task() does not provide one.

This is a simple way to ensure that all outgoing SIP request messages are
processed under a serializer.  Otherwise, any place where a pushed task is
done that would result in an outgoing out-of-dialog request would need to
be modified to supply a serializer.  Serializers from the default
serializer pool are picked in a round robin sequence for simplicity.

A side effect is that the default serializer pool will limit the growth of
the thread pool from random tasks.  This is not necessarily a bad thing.

* Made pjsip_resolver.c use the requesting thread's serializer to execute
the async callback.

* Made pjsip_distributor.c save the thread's serializer name on the
outgoing request tdata struct so the response can be processed under the
same serializer.

ASTERISK-25115 #close
Reported by: John Bigelow

Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a

7 years agoDNS: Fix some corner cases.
Richard Mudgett [Fri, 5 Jun 2015 17:16:22 +0000 (12:16 -0500)]
DNS: Fix some corner cases.

* Fix query_set destruction before we are done kicking the queries off.

* Fixed no queries requested handling.

* Add empty queries request unit test.

* Added missing allocation check in ast_dns_query_set_add().

* Made initial pjsip resolving query vector slightly larger.

Reported by: John Bigelow

Change-Id: Ie8be8347d0992e93946d72b6e7b1299727b038f2

7 years agoDNS: Remove trailing newline from summary and descriptions.
Richard Mudgett [Wed, 10 Jun 2015 22:51:22 +0000 (17:51 -0500)]
DNS: Remove trailing newline from summary and descriptions.

Those trailing newlines mess up test formatting.

Change-Id: I5e3f3a55b82c9d7acb9661201d4993d1958f1185

7 years agopjsip_resolver.c: Fix debug code to only execute at acceptable debug level.
Richard Mudgett [Fri, 5 Jun 2015 16:43:35 +0000 (11:43 -0500)]
pjsip_resolver.c: Fix debug code to only execute at acceptable debug level.

Change-Id: I1716c93d6e097ad28128ecb9e806aac7a4180c8a

7 years agoDNS: Fix doxygen comments.
Richard Mudgett [Fri, 5 Jun 2015 16:41:54 +0000 (11:41 -0500)]
DNS: Fix doxygen comments.

Change-Id: Icafea3fb4ea64ac027561b23cbfe2b17997dc549

7 years agores_pjsip.h: Fix some doxygen comments.
Richard Mudgett [Tue, 9 Jun 2015 20:31:25 +0000 (15:31 -0500)]
res_pjsip.h: Fix some doxygen comments.

Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976

7 years agotaskprocessor.c: Remove extra unref from off-nominal path.
Richard Mudgett [Fri, 5 Jun 2015 18:46:25 +0000 (13:46 -0500)]
taskprocessor.c: Remove extra unref from off-nominal path.

Change-Id: Iee3bd8c8a528776056972066698fe735f0f6cf60

7 years agoMerge "chan_iax2: Prevent deadlock between hangup and sending lagrq/ping"
Mark Michelson [Wed, 10 Jun 2015 17:06:02 +0000 (12:06 -0500)]
Merge "chan_iax2: Prevent deadlock between hangup and sending lagrq/ping"

7 years agoMerge "weakref attribute detection broken with gcc 4.6 and higher"
Mark Michelson [Wed, 10 Jun 2015 15:38:34 +0000 (10:38 -0500)]
Merge "weakref attribute detection broken with gcc 4.6 and higher"

7 years agoMerge "res_pjsip_transport_websocket: Fix use-after-free bugs."
Mark Michelson [Wed, 10 Jun 2015 15:38:12 +0000 (10:38 -0500)]
Merge "res_pjsip_transport_websocket: Fix use-after-free bugs."

7 years agores_pjsip_transport_websocket: Fix use-after-free bugs.
Ivan Poddubny [Sun, 31 May 2015 17:37:40 +0000 (20:37 +0300)]
res_pjsip_transport_websocket: Fix use-after-free bugs.

This patch fixes use-after-free bugs caught by AddressSanitizer.

1. PJSIP transport manager may decide to destroy transport on its own.
For example, when the contact registered via websocket has not renewed
its registration in time. The transport was destoyed, but the websocket
listener thread was still active until the socket closes, and then tried
to call transport_shutdown on transport that has been freed.

Also, the transport destructor accessed wstransport->rdata.tp_info.pool
right after freeing memory that contained wstransport itself.

This patch converts transport to an ao2 object, allowing it to be
refcounted, so that it is available until both websocket listener and
pjsip transport manager are finished with it.

2. The websocket listener deletes the last reference on websocket session
when the tcp connection is closed, and it gets destroyed, but
the transport manager may still use it, for example when disconnect
happens in the middle of a SIP transaction.

A new reference to websocket session has been added that is released
with the transport to prevent this.

ASTERISK-25096 #close
Reported by: Josh Kitchens

ASTERISK-24963 #close
Reported by: Badalian Vyacheslav

Change-Id: Idc0b63eb6e459c1ddfb2430127d34b3c4d8d373b

7 years agoweakref attribute detection broken with gcc 4.6 and higher
ibercom [Tue, 9 Jun 2015 18:41:54 +0000 (20:41 +0200)]
weakref attribute detection broken with gcc 4.6 and higher

GCC 4.7 Manual:

weakref ("target")

A weak reference is an alias that does not by itself require a definition
to be given for the target symbol.

ASTERISK-22559 #close
Reported by: Ibercom

Change-Id: I36a136cae947b65187a697533416f9ff9a0b8cdf

7 years agoMerge "Fix unsafe uses of ast_context pointers."
Matt Jordan [Tue, 9 Jun 2015 11:57:53 +0000 (06:57 -0500)]
Merge "Fix unsafe uses of ast_context pointers."

7 years agoFix unsafe uses of ast_context pointers.
Corey Farrell [Mon, 8 Jun 2015 15:09:57 +0000 (11:09 -0400)]
Fix unsafe uses of ast_context pointers.

Although ast_context_find, ast_context_find_or_create and
ast_context_destroy perform locking of the contexts table,
any context pointer can become invalid at any time that the
contexts table is unlocked. This change adds locking around
all complete operations involving these functions.

Places where ast_context_find was followed by ast_context_destroy
have been replaced with calls ast_context_destroy_by_name.

ASTERISK-25094 #close
Reported by: Corey Farrell

Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa

7 years agoAMI: Escape string values.
Kevin Harwell [Mon, 8 Jun 2015 14:44:04 +0000 (09:44 -0500)]
AMI: Escape string values.

So this issue is a bit complicated. Since it is possible to pass values to AMI
that contain a '\r\n' (or other similar sequences) these values need to be
escaped. One way to solve this is to escape the values and then pass the escaped
values to the AMI variable parameter string building function. However, this
puts the onus on the pre-build function to escape all string values. This
potentially requires a fair amount of changes along with a lot of string
allocations/freeing for all values.

Surely there is a way to push this complexity down a level into the string
building function itself? This of course is possible, but ends up requiring a
way to distinguish between strings that need to be escaped and those that don't.
The best way to handle this is by introducing a new format specifier in the
format string. For instance a %s (no escape) and %S (escape). However, that is
a bit weird and unexpected.

So faced with those possibilities this patch implements a limited version of the
first option. Instead of attempting to escape all string values this patch only
escapes those values that make sense. This approach limits the number of changes
and doesn't suffer from the odd format specifier problem.

ASTERISK-24934 #close
Reported by: warren smith

Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0

7 years agoMerge "test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory...
Matt Jordan [Fri, 5 Jun 2015 23:04:24 +0000 (18:04 -0500)]
Merge "test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache."

7 years agoMerge "res_sorcery_memory_cache: Implement expire_on_reload option."
Matt Jordan [Fri, 5 Jun 2015 23:04:17 +0000 (18:04 -0500)]
Merge "res_sorcery_memory_cache: Implement expire_on_reload option."

7 years agoFixes for OS X
David M. Lee [Tue, 2 Jun 2015 20:07:08 +0000 (15:07 -0500)]
Fixes for OS X

 * Add some type casting so tv_usec can really be a long, instead of
   some strange platform specific type.

 * Add some .dylib style files to .gitignore.

 * Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer
   versions of GCC, when compiling the Homebrew formula for Asterisk,
   are not properly passing the -Xlinker options to the linker. Given
   that -Wl, does exactly the [same thing][], and does it properly, this
   patch changes the -Xlinker options to use -Wl, instead.

 [reasons unknown]:
 [same thing]:

Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd

7 years agoCLI: Cosmetic issue - core show uptime
ibercom [Thu, 4 Jun 2015 12:14:13 +0000 (14:14 +0200)]
CLI: Cosmetic issue - core show uptime

Show uptime information ends with an unnecessary space.

Now NEEDCOMMA is better defined.

Change-Id: I11b360504a0703309ff51772ff8f672287f3c5a1

7 years agores_sorcery_memory_cache: Implement expire_on_reload option.
Joshua Colp [Thu, 4 Jun 2015 18:11:44 +0000 (15:11 -0300)]
res_sorcery_memory_cache: Implement expire_on_reload option.

This change implements the expire_on_reload option for memory caches.
If enabled and a reload is performed all objects within the cache
will be expired and the cache emptied.

Reported by: Matt Jordan

Change-Id: Id46aa1957d660556700e689e195eed57c989b85e

7 years agotest_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache.
Joshua Colp [Tue, 2 Jun 2015 15:20:00 +0000 (12:20 -0300)]
test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache.

This change adds a CLI command which can perform memory cache thrashing as well
as unit tests which perform thrashing under the following configurations:

1. Low number of unique objects that go stale after 1 second
2. Low number of unique objects that expire after 1 second
3. Low number of unique objects which are constantly updated
4. Large number of unique objects which exceed a defined cache size
5. Large number of unique objects which exceed a defined cache size
   that also expire and go stale rapidly
6. Large number of unique objects which expire and go stale rapidly
7. Large number of unique objects

For all of the above there are a large number of threads constantly
attempting to retrieve random objects and each test runs for a few

Reported by: Matt Jordan

Change-Id: I8c8ceff977332c80ed4a31f10d694d48552b2f78

7 years agoMerge "res_sorcery_memory_cache: Add test event when a refresh occurs."
Mark Michelson [Thu, 4 Jun 2015 14:48:09 +0000 (09:48 -0500)]
Merge "res_sorcery_memory_cache: Add test event when a refresh occurs."

7 years agoMerge "Remove const cast from leaf functions."
Matt Jordan [Thu, 4 Jun 2015 11:42:30 +0000 (06:42 -0500)]
Merge "Remove const cast from leaf functions."

7 years agores_sorcery_memory_cache: Add test event when a refresh occurs.
Joshua Colp [Thu, 4 Jun 2015 10:33:30 +0000 (07:33 -0300)]
res_sorcery_memory_cache: Add test event when a refresh occurs.

This change adds a testsuite event for when a refresh occurs.
This is useful as it provides a guaranteed mechanism of knowing when
it has occurred instead of waiting an arbitrary amount of time.

Reported by: Matt Jordan

Change-Id: Iaa6b8d2d6bab7f99ee08e1c8908b8272a8987e65

7 years agoinstall_prereq: Check if is installed aptitude otherwise to install.
Rodrigo Ramírez Norambuena [Thu, 4 Jun 2015 01:12:50 +0000 (21:12 -0400)]
install_prereq: Check if is installed aptitude otherwise to install.

If in Debian or system based, dont have aptitude installed the script do
nothing. This patch checked if aptitude  installed, if not installed.

Also, if execute script with all packages installed yet, the script not show
nothing and return exit 1 because the command 'grep' get nothing from pipe from

ASTERISK-25113 #close
Reported By: Rodrigo Ramírez Norambuena <>

Change-Id: Iebdff55805d3917166e5e08e0a1e2176f36ff27f

7 years agores_pjsip: Prevent access of NULL channels.
Mark Michelson [Wed, 3 Jun 2015 22:41:23 +0000 (17:41 -0500)]
res_pjsip: Prevent access of NULL channels.

It is possible to receive incoming requests or responses after the channel
on an ast_sip_session has been destroyed and NULLed out. Handlers of these
sorts of requests or responses need to be prepared for the possibility
that the channel is NULL or else they could cause a crash.

While several places have been amended to deal with NULL channels, there
were still a couple of places that needed updating.

res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to
return early if there is no channel on the session.

res_pjsip_session.c: When handling a 302 response, we need to stop the
redirecting attempt if there is no channel on the session.

ASTERISK-25148 #close
reported by Mark Michelson

Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9

7 years agores_pjsip/location: Fix ref leak in contact_apply_handler
George Joseph [Wed, 3 Jun 2015 18:17:58 +0000 (12:17 -0600)]
res_pjsip/location: Fix ref leak in contact_apply_handler

contact_apply_handler calls ast_res_pjsip_find_or_create_contact_status
to force the creation of a contact_status object whenever a new
contact is added but it didn't unref the returned object.

Added an ao2_cleanup(status) to plug the leak.


Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40
Reported-by: Corey Farrell

7 years agores_pjsip: Remove outgoing authentication code no longer needed.
Richard Mudgett [Tue, 2 Jun 2015 18:02:26 +0000 (13:02 -0500)]
res_pjsip: Remove outgoing authentication code no longer needed.

Associated with ASTERISK-25131

Change-Id: Iefa3b2066cfd8b108a90d2dd4a64d92c3a195d33

7 years agores_pjsip_session: Fix cherry pick to master compile error.
Richard Mudgett [Tue, 2 Jun 2015 17:55:57 +0000 (12:55 -0500)]
res_pjsip_session: Fix cherry pick to master compile error.

Reported by: Richard Mudgett

Change-Id: I87c9c96ae4a8fe2bc8a0ddea6958a2ad9cefd8e3

7 years agoRemove const cast from leaf functions.
Joerg Sonnenberger [Tue, 2 Jun 2015 17:27:28 +0000 (19:27 +0200)]
Remove const cast from leaf functions.

app_control_register_rule and app_control_unregister_rule lock/unlock
the queue, which is a mutating operation according to the
ao2_lock/_unlock prototype. Depending on the specific (implicit) casts
in SCOPED_LOCK and RAII_VAR, the compiler may warn or not. As the only
callers of those functions do not have the const, get consistent results
by just dropping it.

Change-Id: Ib9e6296155a39bc5d627142a3828180c3cfe8fbb

7 years agoMerge "tcptls.c: Don't use OpenSSL functions when no SSL support is present."
Matt Jordan [Tue, 2 Jun 2015 17:04:16 +0000 (12:04 -0500)]
Merge "tcptls.c: Don't use OpenSSL functions when no SSL support is present."

7 years agoMerge "cdr/cdr_csv.c: Set file name for csv master to the module when (re)loaded."
Matt Jordan [Tue, 2 Jun 2015 17:02:01 +0000 (12:02 -0500)]
Merge "cdr/cdr_csv.c: Set file name for csv master to the module when (re)loaded."

7 years agotcptls.c: Don't use OpenSSL functions when no SSL support is present.
Joerg Sonnenberger [Tue, 2 Jun 2015 16:35:39 +0000 (18:35 +0200)]
tcptls.c: Don't use OpenSSL functions when no SSL support is present.

Change-Id: I68a85a7fcbdb282140ff333c6274b6763d5f82a3

7 years agoMerge "res_pjsip_session: Fix in-dialog authentication."
Matt Jordan [Tue, 2 Jun 2015 14:29:46 +0000 (09:29 -0500)]
Merge "res_pjsip_session: Fix in-dialog authentication."

7 years agoMerge "Fix buffer overflow in slin sample frames generation."
Mark Michelson [Mon, 1 Jun 2015 21:08:30 +0000 (16:08 -0500)]
Merge "Fix buffer overflow in slin sample frames generation."

7 years agocdr/cdr_csv.c: Set file name for csv master to the module when (re)loaded.
Rodrigo Ramírez Norambuena [Mon, 1 Jun 2015 17:08:22 +0000 (13:08 -0400)]
cdr/cdr_csv.c: Set file name for csv master to the module when (re)loaded.

Compute the location for the csv master file when the module is
loaded or reload.  Before it was calculated every time a log
entry was written.

Change-Id: I3ed9f6a8f965308099db70b71128f43d4d3f5585

7 years agoMerge "res_sorcery_memory_cache: Add CLI commands and AMI actions."
Mark Michelson [Mon, 1 Jun 2015 18:04:10 +0000 (13:04 -0500)]
Merge "res_sorcery_memory_cache: Add CLI commands and AMI actions."

7 years agoMerge "res_sorcery_memory_cache: Add support for refreshing stale objects."
Joshua Colp [Mon, 1 Jun 2015 18:01:17 +0000 (13:01 -0500)]
Merge "res_sorcery_memory_cache: Add support for refreshing stale objects."

7 years agores_pjsip_session: Fix in-dialog authentication.
Richard Mudgett [Tue, 26 May 2015 18:56:42 +0000 (13:56 -0500)]
res_pjsip_session: Fix in-dialog authentication.

When the remote peer requires authentication for in-dialog requests then
re-INVITEs to the peer cause the call to be disconnected and other
in-dialog requests to the peer like MESSAGE just don't go through.

* Made session_inv_on_tsx_state_changed() handle in-dialog authentication
for re-INVITEs and other methods.  Initial INVITEs cannot be handled here
because the INVITE transaction must be restarted earlier.

* Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in
preparation for removing the file.  The generic outbound authentication
code did not work as well as anticipated.

* Created outbound_invite_auth() to only handle initial outbound INVITEs.
Re-INVITEs cannot be handled here.  The re-INVITE transaction is still in
progress and the PJSIP library cannot handle the overlapping INVITE
transactions.  Other method types should not be handled here as this code
only works on outgoing calls and we need to handle incoming and outgoing

ASTERISK-25131 #close
Reported by: Richard Mudgett

Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0

7 years agopjsip_configuration: Fix leak in persistent_endpoint_update_state.
Corey Farrell [Sun, 31 May 2015 01:22:00 +0000 (21:22 -0400)]
pjsip_configuration: Fix leak in persistent_endpoint_update_state.

The loop to find the first available contact of an endpoint grabbed
contact from the iterator, then checked for offline state.  This
caused the first contact after the state was found to leak a reference.


Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08

7 years agoFix buffer overflow in slin sample frames generation.
Ivan Poddubny [Sun, 31 May 2015 16:33:37 +0000 (19:33 +0300)]
Fix buffer overflow in slin sample frames generation.

The length of frames retured by sample functions was twice as large as
real, what caused global buffer overflow caught by AddressSanitizer.

ASTERISK-24717 #close
Reported by: Badalian Vyacheslav

Change-Id: Iec2fe682aef13e556684912f906bedf7c18229c6

7 years agores_pjsip/location: Fix memory leak in permanent_uri_handler
George Joseph [Fri, 29 May 2015 21:19:26 +0000 (15:19 -0600)]
res_pjsip/location:  Fix memory leak in permanent_uri_handler

When permanent_uri_handler was creating the contact status
object for each contact, it wasn't unreffing it at the
end of the loop.

ASTERISK-25141 #close
Reported-by: Corey Farrell

Change-Id: I7bb127994677bb3d459f87952f8425c9b9967b12

7 years agoMerge "Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change""
Joshua Colp [Fri, 29 May 2015 19:55:22 +0000 (14:55 -0500)]
Merge "Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change""

7 years agoRevert "endpoint/stasis: Eliminate duplicate events on endpoint status change"
George Joseph [Fri, 29 May 2015 19:52:41 +0000 (14:52 -0500)]
Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change"

This reverts commit 6fca75bb628dfff2ab112e80b0228cf3ac0b8a05.

Change-Id: Ifee026cc63e22c5ac5717c37867a9f036373ae5a

7 years agores_sorcery_memory_cache: Add CLI commands and AMI actions.
Joshua Colp [Tue, 26 May 2015 12:34:47 +0000 (09:34 -0300)]
res_sorcery_memory_cache: Add CLI commands and AMI actions.

This change adds the following CLI commands and AMI actions:

sorcery memory cache show
sorcery memory cache dump
sorcery memory cache expire
sorcery memory cache stale


These allow both examination and manipulation of sorcery memory
caches from external sources.

Cached objects can be explicitly expired from a cache or marked
as stale. If expired they are immediately removed. If marked as
stale they will be background refreshed when next retrieved.

Reported by Matt Jordan

Change-Id: I68e03cfd8c34b5e07f4b6ee4fd93a3f4a00a3d9e

7 years agoMerge "res/res_config_pgsql.c: Use PQescapeStringConn for escaping names."
Matt Jordan [Fri, 29 May 2015 09:41:45 +0000 (04:41 -0500)]
Merge "res/res_config_pgsql.c: Use PQescapeStringConn for escaping names."

7 years agoendpoint/stasis: Eliminate duplicate events on endpoint status change
George Joseph [Wed, 27 May 2015 18:22:39 +0000 (12:22 -0600)]
endpoint/stasis: Eliminate duplicate events on endpoint status change

When an endpoint was created, it's messages were being forwarded to
both the tech endpoint topic and the all endpoints topic.  Since
the tech topic was also forwarded to all, this was resulting in
duplicate messages whenever an endpoint published.  This patch
causes the endpoint to only forward to the tech topic and lets
the tech topic forward to all.

To accomplish this, the existing stasis_cp_single_create function
(which both creates and forwards) was cloned and split into 2
functions, one that creates the topic and one that sets up the
forwarding.  This allows endpoint_internal_create to create
the topic from the endpoint_all cache without forwarding it there,
then allows it to do the forward to the tech's topic.

ASTERISK-25137 #close
Reported-by: Vitezslav Novy
ASTERISK-25116 #close
Reported-by: George Joseph <>
Tested-by: George Joseph <>

Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c

7 years agores_sorcery_memory_cache: Add support for refreshing stale objects.
Mark Michelson [Tue, 26 May 2015 18:01:24 +0000 (13:01 -0500)]
res_sorcery_memory_cache: Add support for refreshing stale objects.

This change introduces a check of object_lifetime_stale when retrieving
cached objects. If the amount of time the object has been in the cache
exceeds the lifetime, then a task is scheduled to update the cached
object based on an object retrieved from other sorcery wizards instead.

To prevent the cached object from being retrieved during a refresh,
thread-local storage is used to mark the thread as being a stale object
update. This results in the cache returning no object, leading to
sorcery querying other wizards for the object instead.

A test has been added for stale objects as well. This test ensures that
stale objects are retrieved the same as freshly-cached objects. The test
also ensures that after an object is stale, changes in the backend are
reflected in the cache, to include if the object has been deleted from
the backend.

Reported by Matt Jordan

Change-Id: I9bd7c049adf6939bfe2899f393c2bfbbf412d217

7 years agores_pjsip: Add AMI events for chan_pjsip contact lifecycle changes
George Joseph [Thu, 21 May 2015 22:21:01 +0000 (16:21 -0600)]
res_pjsip: Add AMI events for chan_pjsip contact lifecycle changes

Add a new ContactStatus AMI event.
Publish the following status/state changes:

Contact URI, new status/state, aor and endpoint names, and the
last qualify rtt result are included in the event.

ASTERISK-25114 #close

Change-Id: Id25aae5f7122facba183273efb3e8f36c20fb61e
Reported-by: George Joseph <>
Tested-by: George Joseph <>

7 years agoMerge "Astobj2: Correctly treat hash_fn returning INT_MIN"
Joshua Colp [Tue, 26 May 2015 21:07:21 +0000 (16:07 -0500)]
Merge "Astobj2: Correctly treat hash_fn returning INT_MIN"

7 years agores/res_config_pgsql.c: Use PQescapeStringConn for escaping names.
Rodrigo Ramírez Norambuena [Thu, 7 May 2015 16:18:34 +0000 (12:18 -0400)]
res/res_config_pgsql.c: Use PQescapeStringConn for escaping names.

Use function PQescapeStringConn for escaping the name of the table and
schema instead of doing it manually.

ASTERISK-25132 #close
Reported By: Rodrigo Ramírez Norambuena <>

Change-Id: I302a263f7210d20925f14716b508b081998b7608

7 years agosorcery: Fix cache creation callback.
Joshua Colp [Tue, 26 May 2015 12:44:18 +0000 (09:44 -0300)]
sorcery: Fix cache creation callback.

The cache creation callback function expects to receive a sorcery_details
structure and not just a standalone object.

Change-Id: I3e4a5a137cb25292eb52d7a14cbb6daa09213450

7 years agoAstobj2: Correctly treat hash_fn returning INT_MIN
Ivan Poddubny [Sun, 24 May 2015 18:47:16 +0000 (21:47 +0300)]
Astobj2: Correctly treat hash_fn returning INT_MIN

The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0.
However, abs(INT_MIN) = INT_MIN and is still negative, as well as
abs(INT_MIN) % num_buckets, and as a result this led to a crash.

One way to trigger the bug is using host=::80 or in peer
configuration section in chan_sip or chan_iax.

This patch takes the remainder before applying abs, so that bucket
number is always in range.

ASTERISK-25100 #close
Reported by: Mark Petersen

Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899

7 years agoMerge "Stasis: Fix unsafe use of stasis_unsubscribe in modules."
Matt Jordan [Sun, 24 May 2015 18:56:20 +0000 (13:56 -0500)]
Merge "Stasis: Fix unsafe use of stasis_unsubscribe in modules."

7 years agoMerge "res_pjsip_transport_websocket: Fix crash on receiving large SIP packets"
Matt Jordan [Sun, 24 May 2015 18:55:34 +0000 (13:55 -0500)]
Merge "res_pjsip_transport_websocket: Fix crash on receiving large SIP packets"

7 years agores_pjsip_transport_websocket: Fix crash on receiving large SIP packets
Ivan Poddubny [Sat, 23 May 2015 09:36:18 +0000 (12:36 +0300)]
res_pjsip_transport_websocket: Fix crash on receiving large SIP packets

Incoming SIP packets larger than PJSIP_MAX_PKT_LEN were themselves
truncated before passing to pjsip_tpmgr_receive_packet, but the length
was passed unaltered, thus causing memory corruption and segfault.

ASTERISK-25122 #close

Change-Id: I608a6b6b7f229eacc33a0a7d771d18e27e5b08ab

7 years agoStasis: Fix unsafe use of stasis_unsubscribe in modules.
Corey Farrell [Sat, 23 May 2015 02:50:43 +0000 (22:50 -0400)]
Stasis: Fix unsafe use of stasis_unsubscribe in modules.

Many uses of stasis_unsubscribe in modules can be reached through unload.
These have been switched to stasis_unsubscribe_and_join.

Some subscription callbacks do nothing, for these I've created a noop
callback function in stasis.c.  This is used by some modules that monitor
MWI topics in order to enable cache, since the callback does not become
invalid after dlclose it is safe to use stasis_unsubscribe on these, even
during module unload.

ASTERISK-25121 #close

Change-Id: Ifc2549fbd8eef7d703c222978e8f452e2972189c

7 years agoAstobj2: Run weakproxy subscription callbacks in reverse order.
Corey Farrell [Fri, 22 May 2015 21:52:29 +0000 (17:52 -0400)]
Astobj2: Run weakproxy subscription callbacks in reverse order.

Modify ao2_weakproxy_subscribe so each new subscription is added
to the head of the list.  This ensures that when other objects
are allocated and use a subscription to the weakproxy for cleanup,
cleanup will occur in the correct order.

ASTERISK-25120 #close

Change-Id: Ie0476f08ec21330de1b3f5a2dd3d9eb683df3d3d

7 years agores/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS
Matt Jordan [Fri, 22 May 2015 17:22:39 +0000 (12:22 -0500)]
res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS

In addition to specifying lists of 'presence' and 'message-summary',
users can also create lists of type 'dialog'. These should be treated in
the same fashion as 'presence'.

Change-Id: I583bb69cd9f88b0b29bf09ddaddeac4e84189f6e

7 years agores/res_pjsip_exten_state: Fix confusing NOTICE message
Matt Jordan [Fri, 22 May 2015 17:18:31 +0000 (12:18 -0500)]
res/res_pjsip_exten_state: Fix confusing NOTICE message

When a SUBSCRIBE request is made to a dialplan hint that doesn't exist,
the current NOTICE message informing users of this swaps the context and
extension parameters. This can cause a bit of confusion.

Thanks to CptBurger in #asterisk for helping to point this out.

Change-Id: Ie584d1a58ae217385c87a450ca25b55ca0e36e43

7 years agoMerge "res_sorcery_memory_cache: Add support for object_lifetime_maximum."
Mark Michelson [Fri, 22 May 2015 16:55:24 +0000 (11:55 -0500)]
Merge "res_sorcery_memory_cache: Add support for object_lifetime_maximum."

7 years agores/ari: Register Stasis application on WebSocket attempt
Matt Jordan [Mon, 18 May 2015 01:36:41 +0000 (20:36 -0500)]
res/ari: Register Stasis application on WebSocket attempt

Prior to this patch, when a WebSocket connection is made, ARI would not
be informed of the connection until after the WebSocket layer had
accepted the connection. This created a brief race condition where the
ARI client would be notified that it was connected, a channel would be
sent into the Stasis dialplan application, but ARI would not yet have
registered the Stasis application presented in the HTTP request that
established the WebSocket.

This patch resolves this issue by doing the following:
 * When a WebSocket attempt is made, a callback is made into the ARI
   application layer, which verifies and registers the apps presented in
   the HTTP request. Because we do not yet have a WebSocket, we cannot
   have an event session for the corresponding applications. Some
   defensive checks were thus added to make the application objects
   tolerant to a NULL event session.
 * When a WebSocket connection is made, the registered application is
   updated with the newly created event session that wraps the WebSocket

ASTERISK-24988 #close
Reported by: Joshua Colp

Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636

7 years agoMerge "res_sorcery_memory_cache: Add support for maximum_objects."
Matt Jordan [Fri, 22 May 2015 15:57:03 +0000 (10:57 -0500)]
Merge "res_sorcery_memory_cache: Add support for maximum_objects."

7 years agoMerge "res_pjsip: Refactor endpt_send_transaction (qualify_timeout)"
Joshua Colp [Fri, 22 May 2015 15:40:54 +0000 (10:40 -0500)]
Merge "res_pjsip: Refactor endpt_send_transaction (qualify_timeout)"

7 years agoMerge "res_pjsip_outbound_registration: Check request URI for line."
Mark Michelson [Fri, 22 May 2015 15:38:19 +0000 (10:38 -0500)]
Merge "res_pjsip_outbound_registration: Check request URI for line."

7 years agores_pjsip: Refactor endpt_send_transaction (qualify_timeout)
George Joseph [Wed, 20 May 2015 16:11:20 +0000 (10:11 -0600)]
res_pjsip: Refactor endpt_send_transaction (qualify_timeout)

This patch refactors the transaction timeout processing to eliminate
calling the lower level public pjsip functions and reverts to calling
pjsip_endpt_send_request again.  This is the result of me noticing
a possible incompatibility with pjproject-2.4 which was causing
contact status flapping.

The original version of this feature used the lower level calls to
get access to the tsx structure in order to cancel the transaction
when our own timer expires. Since we no longer have that access,
if our own timer expires before the pjsip timer, we call the callbacks
and just let the pjsip transaction take it's own course.  When the
transaction ends, it discovers the callbacks have already been run
and just cleans itself up.

A few messages in pjsip_configuration were also added/cleaned up.

ASTERISK-25105 #close

Change-Id: I0810f3999cf63f3a72607bbecac36af0a957f33e
Reported-by: George Joseph <>
Tested-by: George Joseph <>

7 years agores_sorcery_memory_cache: Add support for object_lifetime_maximum.
Joshua Colp [Wed, 20 May 2015 22:35:54 +0000 (19:35 -0300)]
res_sorcery_memory_cache: Add support for object_lifetime_maximum.

This makes the "object_lifetime_maximum" option operational.

On the addition of an object to an empty memory cache a scheduled
task is created which, when invoked, expires objects from the cache
which have exceeded their lifetime. If more objects have been added
the remaining life of the oldest object is used to schedule the
next invocation of the scheduled task.

If the oldest object is removed from the cache before it can be
expired automatically the scheduled task is cancelled, if possible,
and the lifetime of the next oldest is used to schedule the task.

If during these two operations no additional objects exist in the
cache then no task is scheduled.

An additional unit test has been added which verifies this

Reported by: Matt Jordan

Change-Id: I87409674674a508e7717ee20739ca15cec6ba7b6

7 years agores_pjsip_outbound_registration: Check request URI for line.
demon-ru [Wed, 20 May 2015 05:45:13 +0000 (08:45 +0300)]
res_pjsip_outbound_registration: Check request URI for line.

When an inbound call is received the To header is checked
for the "line" option. Some remote servers will place this
in the request URI instead. This adds an additional check for
the option in the request URI.

ASTERISK-25072 #close
Reported by: Dmitriy Serov

Change-Id: Id4e44debbb80baad623b914a88574371575353c8

7 years agores_sorcery_memory_cache: Add support for maximum_objects.
Mark Michelson [Wed, 20 May 2015 20:19:27 +0000 (15:19 -0500)]
res_sorcery_memory_cache: Add support for maximum_objects.

This makes the "maximum_objects" option operational.

A heap has been added alongside the hash table in the cache. When
objects are added to the cache, they are also added to the heap.
Similarly, when objects are removed from the cache, they are removed
from the heap.

The heap's use comes into play when an item is to be added to a "full"
cache. When the cache is full, the oldest item is removed from the
cache, using the heap to determine the oldest item.

A unit test has been added that verifies that the maximum_objects option
works as expected and that the oldest object is removed from the cache
when an object beyond the maximum is added.

ASTERISK-25067 #close
Reported by Matt Jordan

Change-Id: I490658830e9c4cbf0b3051e4cdc4913cf9f1b73a

7 years agores_sorcery_memory_cache: Add basic module implementation.
Joshua Colp [Sat, 16 May 2015 22:02:50 +0000 (19:02 -0300)]
res_sorcery_memory_cache: Add basic module implementation.

This change adds a basic res_sorcery_memory_cache module which implements
configuration option parsing, configuration file parsing for threading,
sorcery interface implementation, and unit tests.

Objects can be added, updated, deleted, and retrieved from the memory
cache. Automatic expiration and stale handling will be added in the

Note that unit tests exist within the module itself in case the
threading done as a result of expiration results in asynchronous
actions (which it likely will). Providing access and a notification
mechanism for an external test module would be complicated and
not worth it.

ASTERISK-25067 #close
Reported by: Matt Jordan

Change-Id: Id8a6a357ef5a83d466f81eee56a67d13eeb118b9

7 years agoMerge "cel, cdr: Assigned separator for column name and values."
Joshua Colp [Fri, 22 May 2015 10:16:30 +0000 (05:16 -0500)]
Merge "cel, cdr: Assigned separator for column name and values."

7 years agores_mwi_external_ami: Use module version of AMI registration.
Corey Farrell [Thu, 21 May 2015 22:51:18 +0000 (18:51 -0400)]
res_mwi_external_ami: Use module version of AMI registration.

Use ast_manager_register_xml for res_mwi_external_ami manager
actions.  This ensures the module is held open while any of
the actions are being run.

ASTERISK-25117 #close
Reported by: Corey Farrell

Change-Id: Iececfdc2da498b2c32b9e09042f5f12292007ac7

7 years agoARI: Update version to 1.7.0
Matt Jordan [Thu, 21 May 2015 18:05:08 +0000 (13:05 -0500)]
ARI: Update version to 1.7.0

This patch updates the version of ARI to 1.7.0 to reflect the backwards
compatible changes that will be introduced in 13.4.0.

Change-Id: I6c36e6144da426412f25828a868e4df916bff60a
(cherry picked from commit 9d8a462356a938eea82e8424242d89a682495b57)

7 years agoMerge "audiohook.c: Difference in read/write rates caused continuous buffer resets"
Matt Jordan [Thu, 21 May 2015 12:22:21 +0000 (07:22 -0500)]
Merge "audiohook.c: Difference in read/write rates caused continuous buffer resets"

7 years agoMerge "Logger: Reset defaults before processing config."
Matt Jordan [Thu, 21 May 2015 12:21:36 +0000 (07:21 -0500)]
Merge "Logger: Reset defaults before processing config."

7 years agoMerge "res/res_http_websocket: Add a pre-session established callback"
Matt Jordan [Thu, 21 May 2015 12:21:04 +0000 (07:21 -0500)]
Merge "res/res_http_websocket: Add a pre-session established callback"

7 years agoMerge "main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits"
Joshua Colp [Thu, 21 May 2015 10:15:41 +0000 (05:15 -0500)]
Merge "main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits"

7 years agoLogger: Reset defaults before processing config.
Corey Farrell [Thu, 21 May 2015 01:53:46 +0000 (21:53 -0400)]
Logger: Reset defaults before processing config.

Reset options to default values before reloading config.  This ensures
that if a setting is removed or commented out of the configuration file
it is unset on reload.

ASTERISK-25112 #close
Reported by: Corey Farrell

Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd

7 years agoapp_playback: Suppress warnings on playback if channel hung up
George Joseph [Thu, 21 May 2015 00:05:20 +0000 (18:05 -0600)]
app_playback: Suppress warnings on playback if channel hung up

If a channel hangs up while an audio file is playing, there's
no need to clutter up the logs with a warning so suppress it
if ast_check_hangup returns true.

Also, change warning to debug/2 in file.c if writing a frame
fails.  Same reasoning.

Change-Id: I2e66191af3c5b6e951c98e8f1c3fe3cf2cf7ed89
Reported-by: George Joseph <>
Tested-by: George Joseph <>

7 years agochan_iax2: Prevent deadlock between hangup and sending lagrq/ping
Yousf Ateya [Mon, 20 Apr 2015 21:00:00 +0000 (23:00 +0200)]
chan_iax2: Prevent deadlock between hangup and sending lagrq/ping

channels/chan_iax.c: Prevent the deadlock between iax2_hangup and send_lagrq/
send_ping. This deadlock happens because the scheduled task send_lagrq(or
send_ping) starts execution after the call hangup procedure starts but before
it deletes the tasks in the scheduler.

The solution is to delete scheduled lagrq (and ping) task asynchronously
(i.e. schedule AST_SCHED_DEL for these tasks); By this, AST_SCHED_DEL will
be called in a new context (doesn't have callno locked).

This commit also cleans up the procedure of sending LAGRQ and PING.

main/sched.c: Do not assert when deleting non existant entry from scheduler.
This assert seems to be the reason for a lot of awkward code to avoid it.

ASTERISK-24983 #close
Reported by: Y Ateya

Change-Id: I03bec1fc8faacb89630269e935fa667c6d6c080c

7 years agoaudiohook.c: Difference in read/write rates caused continuous buffer resets
Kevin Harwell [Thu, 14 May 2015 20:21:30 +0000 (15:21 -0500)]
audiohook.c: Difference in read/write rates caused continuous buffer resets

Currently, everytime a sample rate change occurs (on read or write) the
associated factory buffers are reset. If the requested sample rate on a
read differed from that of a write then the buffers are continually reset
on every read and write. This has the side effect of emptying the buffer,
thus there being no data to read and then write to a file in the case of
call recording.

This patch fixes it so that an audiohook_list's rate always maintains the
maximum sample rate among hooks and formats. Audiohook sample rates are
only overwritten by this value when slin native compatibility is turned on.
Also, the audiohook sample rate can only overwrite the list's sample rate
when its rate is greater than that of the list or if compatibility is
turned off. This keeps the rate from constantly switching/resetting.

ASTERISK-24944 #close
Reported by: Ronald Raikes

Change-Id: Idab4dfef068a7922c09cc631dda27bc920a6c76f

7 years agoMerge "Fix potential crash after unload of func_periodic_hook or test_message."
Matt Jordan [Wed, 20 May 2015 20:23:04 +0000 (15:23 -0500)]
Merge "Fix potential crash after unload of func_periodic_hook or test_message."

7 years agores/res_http_websocket: Add a pre-session established callback
Matt Jordan [Wed, 13 May 2015 14:55:58 +0000 (09:55 -0500)]
res/res_http_websocket: Add a pre-session established callback

This patch updates http_websocket and its corresponding implementation
with a pre-session established callback. This callback allows for
WebSocket server consumers to be notified when a WebSocket connection is
attempted, but before we accept it. Consumers can choose to reject the
connection, if their application specific logic allows for it.

As a result, this patch pulls out the previously private
websocket_protocol struct and makes it public, as
ast_websocket_protocol. In order to preserve backwards compatibility
with existing modules, the existing APIs were left as-is, and new APIs
were added for the creation of the ast_websocket_protocol as well as for
adding a sub-protocol to a WebSocket server.

In particular, the following new API calls were added:
* ast_websocket_add_protocol2 - add a protocol to the core WebSocket
* ast_websocket_server_add_protocol2 - add a protocol to a specific
  WebSocket server
* ast_websocket_sub_protocol_alloc - allocate a sub-protocol object.
  Consumers can populate this with whatever callbacks they wish to
  support, then add it to the core server or a specified server.

Reported by: Joshua Colp

Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2

7 years agores/res_resolver_unbound.c: Add missing include of signal.h
John Bigelow [Wed, 20 May 2015 17:55:40 +0000 (12:55 -0500)]
res/res_resolver_unbound.c: Add missing include of signal.h

ASTERISK-25110 #close
Reported by: John Bigelow

Change-Id: I99a9d93f066f265357b647b8e99a75e45da5a39f

7 years agocel, cdr: Assigned separator for column name and values.
Rodrigo Ramírez Norambuena [Thu, 7 May 2015 02:18:28 +0000 (22:18 -0400)]
cel, cdr: Assigned separator for column name and values.

Use a separator string between column names and values for SQL sentences
instead of evaluating the separator to use each time.

This change adds a space after the comma in constructing SQL sentences.
Before the SQL was created like "INSERT INTO cdr(calldate,clid,dst"
without spaces between column name and values.

The files applied this change are cdr/cdr_adaptive_odbc.c, cdr/cdr_pgsql.c,

ASTERISK-25109 #close
Reported By: Rodrigo Ramírez Norambuena <>

Change-Id: Ia5a1a161f5e26e1643703b30f8cc9cf0860cc7ea

7 years agodoxygen: Fix doxygen errors
Matt Jordan [Sun, 17 May 2015 12:15:15 +0000 (07:15 -0500)]
doxygen: Fix doxygen errors

This patch fixes a number of errors and warning messages in the doxygen
log. Specifically, it addresses:
* A number of files incorrectly places a '\brief' tag immediately after
  a '\file' tag. Doing so emits a warning, as '\file' takes an optional
  argument specifying which file the doxygen comment is for. As '\brief'
  is not a file, doxygen was unamused.
* A grouping of Stasis Topics and Messages in rtp_engine.h was
  incorrectly terminated. We now correctly terminate the grouping, which
  prevents members of rtp_engine.h from showing up in the wrong group.
* Group indicators which are not part of the Stasis Topics and Messages
  group were removed. Group indicators without an \addtogroup or
  \ingroup have no meaning.

Change-Id: Ia1415ffec6767e27233ae1cae5ed5970de5656d4

7 years agomain/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits
Corey Edwards [Tue, 19 May 2015 18:01:36 +0000 (12:01 -0600)]
main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits

ASTERISK-24887 #close
Reported by: Makoto Dei
Tested by: tensai

Change-Id: I6a96f572adb17f76b3acafe503a01c48eb5dd9bf