]> git.ipfire.org Git - thirdparty/asterisk.git/log
thirdparty/asterisk.git
10 years agores_pjsip_outbound_registration.c: Misc code cleanups. 83/683/1
Richard Mudgett [Fri, 12 Jun 2015 18:33:38 +0000 (13:33 -0500)] 
res_pjsip_outbound_registration.c: Misc code cleanups.

* Break some long lines.

* Fix doxygen comment.

Change-Id: I8f12ba6822f84d5e7bb575280270cd7e2fefb305

10 years agochan_sip: Destroy peers without holding peers container lock. 73/673/1
Joshua Colp [Sun, 21 Jun 2015 00:38:02 +0000 (21:38 -0300)] 
chan_sip: Destroy peers without holding peers container lock.

Due to the use of stasis_unsubscribe_and_join in the peer destructor
it is possible for a deadlock to occur when an event callback is
occurring at the same time.

This happens because the peer may be destroyed while holding the
peers container lock. If this occurs the event callback will never
be able to acquire the container lock and the unsubscribe will
never complete.

This change makes it so the peers that have been removed from the
peers container are not destroyed with the container lock held.

ASTERISK-25163 #close

Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33

10 years agoResolve race conditions involving Stasis bridges. 71/671/2
Mark Michelson [Thu, 18 Jun 2015 18:16:29 +0000 (13:16 -0500)] 
Resolve race conditions involving Stasis bridges.

This resolves two observed race conditions.

First, a bit of background on what the Stasis application does:

1a Creates a stasis_app_control structure. This structure is linked into
   a global container and can be looked up using a channel's unique ID.
2a Puts the channel in an event loop. The event loop can exit either
   because the stasis_app_control structure has been marked done, or
   because of some other factor, such as a hangup. In the event loop, the
   stasis_app_control determines if any specific ARI commands need to be
   run on the channel and will run them from this thread.
3a Checks if the channel is bridged. If the channel is bridged, then
   ast_bridge_depart() is called since channels that are added to Stasis
   bridges are always imparted as departable.
4a Unlink the stasis_app_control from the container.

When an ARI command is received by Asterisk, the following occurs
1b A thread is spawned to handle the HTTP request
2b The stasis_app_control(s) that corresponds to the channel(s) in the
   request is/are retrieved. If the stasis_app_control cannot be
   retrieved, then it is assumed that the channel in question has exited
   the Stasis app or perhaps was never in Stasis in the first place.
3b A command is queued onto the stasis_app_control, and the channel's
   event loop thread is signaled to run the command.
4b While most ARI commands do nothing further, some, such as adding or
   removing channels from a bridge, will block until the command they
   issued has been completed by the channel's event loop.

The first race condition that is solved by this patch involves a crash
that can occur due to faulty detection of the channel's bridged status
in step 3a. What can happen is that in step 2a, the event loop may run
the ast_bridge_impart() function to asynchronously place the channel
into a bridge, then immediately exit the event loop because the channel
has hung up. In step 3a, we would detect that the channel was not
bridged and would not call ast_bridge_depart(). The reason that the
channel did not appear to be bridged was that the depart_thread that is
spawned by ast_bridge_impart() had not yet started. That is the thread
where the channel is marked as being bridged. Since we did not call
ast_bridge_depart(), the Stasis application would exit, and then the
channel would be destroyed Then the depart_thread would start up and
try to manipulate the destroyed channel, causing a crash.

The fix for this is to switch from using ast_channel_is_bridged() to
checking the NULLity of ast_channel_internal_bridge_channel() to
determine if ast_bridge_depart() needs to be called. The channel's
internal bridge_channel is set when ast_bridge_impart() is called and
is NULLed by the call to ast_bridge_depart(). If the channel's internal
bridge_channel is non-NULL, then the channel must have been imparted
into the bridge and needs to be departed, even if the actual bridging
operation has not yet started. By departing the channel when necessary,
the thread that is running the Stasis application will block until the
bridge gives the okay that the depart_thread has exited.

The second race condition that is solved by this patch involves a leak
of HTTP handler threads. The problem was that step 2b would successfully
retrieve a stasis_app_control structure. Then step 2a would exit the
channel from the event loop due to a hangup. Steps 3a and 4a would
execute, and then finally steps 3b and 4b would. The problem is that at
step 4b, when attempting to add a channel to a bridge, the thread would
block forever since the channel would never execute the queued command
since it was finished with the event loop. This meant that the HTTP
handling thread would be leaked, along with any references that thread
may have owned (in my case, I was seeing bridges leaked).

The fix for this is to hone in better on when the channel has exited the
event loop. The stasis_app_control structure has an is_done field that
is now set at each point where the channel may exit the event loop. If
step 2b retrieves a valid stasis_app_control structure but the control
is marked as done, then the attempted operation exits immediately since
there will be nothing to service the attempted command.

ASTERISK-25091 #close
Reported by Ilya Trikoz

Change-Id: If66265b73b4c9f8f58599124d777fedc54576628

10 years agoParking: Add documentation for AMI ParkedCallSwap event. 66/666/2
Mark Michelson [Tue, 16 Jun 2015 16:13:20 +0000 (11:13 -0500)] 
Parking: Add documentation for AMI ParkedCallSwap event.

This event was added some time ago in order to clarify when a channel
took the place of another channel in a parking lot. However, there was
no XML documentation added for the event. This patch adds the XML
documentation.

ASTERISK-24900 #close
Reported by Rusty Newton

Change-Id: I4cfe7777c4b94bbff91c9221c6096a7a02a92eac

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

10 years agofunc_pjsip_aor: Fix leaked contact from iterator. 61/661/1
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

10 years agores_pjsip: Add option to force G.726 to be treated as AAL2 packed. 51/651/2
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

10 years agomain/cdr: Carry over the disable flag when 'disable all' is specified 57/657/2
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

10 years agomain/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines 52/652/1
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

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

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

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

10 years agochan_sip.c: Update dialog fromtag after request with auth 31/631/5
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
fromtag.

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
Card).

* 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
  INVITE.

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

Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e

10 years agochan_pjsip: Set the context and extension on the channel when created 46/646/3
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
Stasis.

ASTERISK-25156 #close
Reported by: cloos

Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e

10 years agobridge: When performing a blonde transfer update connected line information. 41/641/2
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
redundant.

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

10 years agoapp_directory: Fix crash when using the alias option 'a'. 38/638/1
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:
<mailbox>=[<password>[,<full-name>[,<email>[,<pager>[,<options>]]]]]
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

10 years agoMerge "res_pjsip.h: Fix some doxygen comments." into 13
Mark Michelson [Wed, 10 Jun 2015 20:53:35 +0000 (15:53 -0500)] 
Merge "res_pjsip.h: Fix some doxygen comments." into 13

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

Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976

10 years agotaskprocessor.c: Remove extra unref from off-nominal path. 28/628/1
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

10 years agochan_iax2: Prevent deadlock between hangup and sending lagrq/ping 21/621/1
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

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

10 years agores_pjsip_transport_websocket: Fix use-after-free bugs. 19/619/1
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

10 years agoweakref attribute detection broken with gcc 4.6 and higher 15/615/2
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:
http://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Function-Attributes.html

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

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

10 years agoMerge "AMI: Escape string values." into 13
Matt Jordan [Mon, 8 Jun 2015 18:16:13 +0000 (13:16 -0500)] 
Merge "AMI: Escape string values." into 13

10 years agoFix unsafe uses of ast_context pointers. 03/603/1
Corey Farrell [Mon, 8 Jun 2015 15:09:22 +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

10 years agoMerge "Fixes for OS X" into 13
Joshua Colp [Fri, 5 Jun 2015 18:20:38 +0000 (13:20 -0500)] 
Merge "Fixes for OS X" into 13

10 years agoCLI: Cosmetic issue - core show uptime 93/593/1
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

10 years agores_pjsip: Prevent access of NULL channels. 82/582/1
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

10 years agoAMI: Escape string values. 60/560/3
Kevin Harwell [Mon, 1 Jun 2015 16:45:30 +0000 (11:45 -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

10 years agores_pjsip/location: Fix ref leak in contact_apply_handler 77/577/1
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.

ASTERISK-25141

Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40
Reported-by: Corey Farrell
10 years agoFixes for OS X 72/572/1
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]: http://bit.ly/1SUbEYx
 [same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd

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

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

10 years agopjsip_configuration: Fix leak in persistent_endpoint_update_state. 52/552/2
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.

ASTERISK-25141

Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08

10 years agoFix buffer overflow in slin sample frames generation. 55/555/1
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

10 years agores_pjsip/location: Fix memory leak in permanent_uri_handler 47/547/2
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

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

This reverts commit 35c699086ae2fd81b2473307ccb2ae79ad32375a.

Change-Id: Ia98c2b4820cf579a5b9bb75e9e05d7a233205fb7

10 years agoendpoint/stasis: Eliminate duplicate events on endpoint status change 41/541/3
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 <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c

10 years agores_pjsip_session: Fix in-dialog authentication. 35/535/2
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
calls.

ASTERISK-25131 #close
Reported by: Richard Mudgett

Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0

10 years agores_pjsip: Add AMI events for chan_pjsip contact lifecycle changes 18/518/4
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:
Created
Removed
Reachable
Unreachable
Unknown

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 <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
10 years agoMerge "Astobj2: Correctly treat hash_fn returning INT_MIN" into 13
Joshua Colp [Tue, 26 May 2015 21:07:13 +0000 (16:07 -0500)] 
Merge "Astobj2: Correctly treat hash_fn returning INT_MIN" into 13

10 years agosorcery: Fix cache creation callback. 33/533/1
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

10 years agoAstobj2: Correctly treat hash_fn returning INT_MIN 31/531/4
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 0.0.0.128 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

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

10 years agores_pjsip_transport_websocket: Fix crash on receiving large SIP packets 29/529/1
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

10 years agoStasis: Fix unsafe use of stasis_unsubscribe in modules. 26/526/1
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

10 years agoMerge "res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS...
Matt Jordan [Fri, 22 May 2015 17:28:18 +0000 (12:28 -0500)] 
Merge "res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS" into 13

10 years agoMerge "res/res_pjsip_exten_state: Fix confusing NOTICE message" into 13
Matt Jordan [Fri, 22 May 2015 17:25:05 +0000 (12:25 -0500)] 
Merge "res/res_pjsip_exten_state: Fix confusing NOTICE message" into 13

10 years agores/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS 23/523/1
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

10 years agores/res_pjsip_exten_state: Fix confusing NOTICE message 21/521/1
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

10 years agoMerge "res/ari: Register Stasis application on WebSocket attempt" into 13
Matt Jordan [Fri, 22 May 2015 16:19:50 +0000 (11:19 -0500)] 
Merge "res/ari: Register Stasis application on WebSocket attempt" into 13

10 years agores/ari: Register Stasis application on WebSocket attempt 86/486/4
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
   connection.

ASTERISK-24988 #close
Reported by: Joshua Colp

Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636

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

10 years agoMerge "res_pjsip_outbound_registration: Check request URI for line." into 13
Matt Jordan [Fri, 22 May 2015 15:38:26 +0000 (10:38 -0500)] 
Merge "res_pjsip_outbound_registration: Check request URI for line." into 13

10 years agores_pjsip: Refactor endpt_send_transaction (qualify_timeout) 92/492/4
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 <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
10 years agores_pjsip_outbound_registration: Check request URI for line. 82/482/6
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

10 years agores_mwi_external_ami: Use module version of AMI registration. 12/512/2
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

10 years agoARI: Update version to 1.7.0 06/506/1
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

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

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

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

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

10 years agoLogger: Reset defaults before processing config. 03/503/1
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

10 years agoapp_playback: Suppress warnings on playback if channel hung up 00/500/1
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 <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
10 years agoaudiohook.c: Difference in read/write rates caused continuous buffer resets 63/463/6
Kevin Harwell [Thu, 14 May 2015 20:21:23 +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

10 years agoMerge "Fix potential crash after unload of func_periodic_hook or test_message." into 13
Matt Jordan [Wed, 20 May 2015 20:22:58 +0000 (15:22 -0500)] 
Merge "Fix potential crash after unload of func_periodic_hook or test_message." into 13

10 years agomain/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits 91/491/1
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

10 years agores/res_http_websocket: Add a pre-session established callback 85/485/2
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
  server
* 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.

ASTERISK-24988
Reported by: Joshua Colp

Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2

10 years agochan_pjsip: Fix crash during off-nominal when no endpoint specified. 76/476/8
snuffy [Fri, 15 May 2015 03:05:52 +0000 (13:05 +1000)] 
chan_pjsip: Fix crash during off-nominal when no endpoint specified.

Add missing return -1 when no endpoint name is specified.

ASTERISK-25086 #close
Reported by: snuffy

Change-Id: I9de76c2935a1f4e3f0cffe97a670106f5605e89e

10 years agores_pjsip_config_wizard/config: Fix template processing 73/473/4
George Joseph [Thu, 14 May 2015 23:01:56 +0000 (17:01 -0600)] 
res_pjsip_config_wizard/config: Fix template processing

The config wizard was always pulling the first occurrence of
a variable from an ast_variable list but this gets the template
value from the list instead of any overridden value.  This patch
creates ast_variable_find_last_in_list() in config.c and updates
res_pjsip_config_wizard to use it instead of
ast_variable_find_in_list.  Now the overridden values, where they
exist, are used instead of template variables.

Updated test_config to test the new API.

ASTERISK-25089 #close

Reported-by: George Joseph <george.joseph@fairview5.com>
Tested-by: George Joseph <george.joseph@fairview5.com>
Change-Id: Ifa7ddefc956a463923ee6839dd1ebe021c299de4

10 years agocdr: Fix 'core show channel' CDR variable truncation. 78/478/4
snuffy [Fri, 15 May 2015 06:54:26 +0000 (16:54 +1000)] 
cdr: Fix 'core show channel' CDR variable truncation.

When the new Bridging API was implemented, the workspace variable
changed to a malloc'd string, causing sizeof() to always be 8 (char).

Revert back to stored on stack string for workspace.

ASTERISK-25090 #close

Change-Id: I51e610ae87371df771ce7693a955510efb90f8f7

10 years agoMerge "sorcery: Add API to insert/remove a wizard to/from an object type's list"...
Joshua Colp [Thu, 14 May 2015 20:20:25 +0000 (15:20 -0500)] 
Merge "sorcery: Add API to insert/remove a wizard to/from an object type's list" into 13

10 years agoMerge "Message.c: Clear message channel frames on cleanup" into 13
Joshua Colp [Thu, 14 May 2015 20:19:55 +0000 (15:19 -0500)] 
Merge "Message.c: Clear message channel frames on cleanup" into 13

10 years agoFix potential crash after unload of func_periodic_hook or test_message. 67/467/2
Corey Farrell [Thu, 14 May 2015 05:06:53 +0000 (01:06 -0400)] 
Fix potential crash after unload of func_periodic_hook or test_message.

These modules save a pointer to the context they create on load, and
use that pointer to destroy the context at unload.  It is not safe
to save this pointer, it is replaced during load of pbx_config,
pbx_lua or pbx_ael.

This change causes the modules to pass NULL to ast_context_destroy,
a safer way to perform the unregistration since it does not use
a pointer that could become invalid.

ASTERISK-25085 #close
Reported by: Corey Farrell

Change-Id: I6a00ec8e38046058f97dc703e1adcde9bf517835

10 years agoMerge "main/manager.c: Bugfix sort action_manager by alphabetically" into 13
Joshua Colp [Thu, 14 May 2015 10:02:51 +0000 (05:02 -0500)] 
Merge "main/manager.c: Bugfix sort action_manager by alphabetically" into 13

10 years agoMessage.c: Clear message channel frames on cleanup 66/466/2
Jonathan Rose [Wed, 13 May 2015 20:41:07 +0000 (15:41 -0500)] 
Message.c: Clear message channel frames on cleanup

The message channel is a special channel that doesn't actually process frames.
However, certain actions can cause frames to be placed in the channel's read
queue including the Hangup application which is called on the channel after
each message is processed. Since the channel will continually be reused for
many messages, it's necessary to flush these frames at some point.

ASTERISK-25083 #close
Reported by: Jonathan Rose

Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f

10 years agoMerge "app_voicemail: fix moving when old messages full" into 13
Joshua Colp [Wed, 13 May 2015 20:44:39 +0000 (15:44 -0500)] 
Merge "app_voicemail: fix moving when old messages full" into 13

10 years agoapp_voicemail: fix moving when old messages full 61/461/2
Jonathan Rose [Tue, 12 May 2015 22:45:09 +0000 (17:45 -0500)] 
app_voicemail: fix moving when old messages full

When completing voicemail playback of a message in the 'INBOX', the
message gets moved to the 'Old' messages folder. Without this patch, if
the 'Old' folder is already at its set limit, then the 'INBOX' message will
simply be deleted. With this patch, the flag to delete the message will be
removed if the save_to_folder function indicates that the message could
not be moved due to a full folder.

ASTERISK-25082 #close
Reported by: Jonathan Rose
Review: https://gerrit.asterisk.org/#/c/448/

Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f

10 years agoMerge "General: Fix recent menuselect-related cross compile regression" into 13
Joshua Colp [Wed, 13 May 2015 19:20:42 +0000 (14:20 -0500)] 
Merge "General: Fix recent menuselect-related cross compile regression" into 13

10 years agoMerge "res_config_mysql: Fix broken column type checking" into 13
Joshua Colp [Wed, 13 May 2015 17:26:11 +0000 (12:26 -0500)] 
Merge "res_config_mysql: Fix broken column type checking" into 13

10 years agoMerge "chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision." into 13
Joshua Colp [Wed, 13 May 2015 17:24:32 +0000 (12:24 -0500)] 
Merge "chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision." into 13

10 years agomain/manager.c: Bugfix sort action_manager by alphabetically 59/459/1
Rodrigo Ramírez Norambuena [Tue, 5 May 2015 01:11:56 +0000 (21:11 -0400)] 
main/manager.c: Bugfix sort action_manager by alphabetically

Fix the alphabetic order added on ast_manager_register_struct. The order
for struct manager_action added is not working, this change fixes the
problem.

Change-Id: I149da0cd06c3c4445d7516cc303358e9f26f8b4b

10 years agores_config_mysql: Fix broken column type checking 56/456/1
Alexandre Fournier [Fri, 8 May 2015 23:01:26 +0000 (01:01 +0200)] 
res_config_mysql: Fix broken column type checking

MySQL configuration engine contains a bug in require_mysql(). This
function is used for column type checking in tables. This bug only
affects DATETIME, DATE and FLOAT types.

It came from mixing the first condition (switch-case-like
if/then/else), to check the expected column type, with the second
condition, to check the actual column type against the expected column
type. Both conditions must be checked separately in order to avoid the
execution of the wrong block.

ASTERISK-18252 #comment This patch might fix the issue
Reported by: Gareth Blades

ASTERISK-25041 #close
Reported by: Alexandre Fournier
Tested by: Alexandre Fournier

Change-Id: I0b8bf7e68ab938be8e6525a249260cb648cb0bfa

10 years agores_rtp_asterisk: Correction for the limit which detects that a packet is DTLS. 51/451/1
Yousf Ateya [Sun, 10 May 2015 12:37:54 +0000 (14:37 +0200)] 
res_rtp_asterisk: Correction for the limit which detects that a packet is DTLS.

First byte of DTLS packet shall be in range 20-63, not 20-64. Refer to RFC
https://tools.ietf.org/html/rfc5764#section-5.1.2 for correct values.

Change-Id: Iae6fa0d72b37c36a27fe40686e0ae6fba3afec31

10 years agoMerge "cdr_pgsql: Use PQescapeStringConn for escaping names." into 13
Joshua Colp [Wed, 13 May 2015 09:35:17 +0000 (04:35 -0500)] 
Merge "cdr_pgsql: Use PQescapeStringConn for escaping names." into 13

10 years agochan_dahdi/sig_pri: Fix crash on ISDN call hangup collision. 46/446/1
Richard Mudgett [Tue, 12 May 2015 22:34:45 +0000 (17:34 -0500)] 
chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision.

If an ISDN call is hungup by both sides at the same time a crash could
happen.

* Added missing NULL checks for the owner channel after calling
pri_queue_pvt_cause_data() in two places.  Code after those calls need to
check the owner channel pointer for NULL before use because
pri_queue_pvt_cause_data() needs to do deadlock avoidance to lock the
owner and the owner may get hung up.

ASTERISK-21893 #close
Reported by:  Alexandr Gordeev

Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a

10 years agoGeneral: Fix recent menuselect-related cross compile regression 43/443/1
Sebastian Kemper [Sun, 10 May 2015 07:26:30 +0000 (09:26 +0200)] 
General: Fix recent menuselect-related cross compile regression

MAKE_MENUSELECT currently sets CC to CC, which is the compiler for the
target platform. But menuselect is to be run on the build system, so
BUILD_CC needs to be used instead - like it was in the past, before the
recent changes (https://reviewboard.asterisk.org/r/4370/). This is the
patch for ASTERISK-25074.

ASTERISK-25074 #close
Reported by: Sebastian Kemper
Tested by: Sebastian Kemper

Change-Id: I8a2b1fc5deb6ad2b80f49baca35b1b13d468ebf8

10 years agosorcery: Add API to insert/remove a wizard to/from an object type's list 94/394/7
George Joseph [Tue, 5 May 2015 20:32:08 +0000 (14:32 -0600)] 
sorcery: Add API to insert/remove a wizard to/from an object type's list

Currently you can 'apply' a wizard to an object type but the wizard
always goes at the end of the object type's wizard list.  This patch
adds a new ast_sorcery_insert_wizard_mapping function that allows
you to insert a wizard anyplace in the list.  I.E.  You could
add a caching wizard to an object type and place it before all
wizards.

ast_sorcery_get_wizard_mapping_count and
ast_sorcery_get_wizard_mapping were added to allow examination
of the mapping list.

ast_sorcery_remove_mapping was added to remove a mapping by name.

As part of this patch, the object type's wizard list was converted
from an ao2_container to an AST_VECTOR_RW.

A new test was added to test_sorcery for this capability.

ASTERISK-25044 #close

Change-Id: I9d2469a9296b2698082c0989e25e6848dc403b57

10 years agoFix processing of asterisk.conf debug=yes. 38/438/2
Corey Farrell [Tue, 12 May 2015 06:31:58 +0000 (02:31 -0400)] 
Fix processing of asterisk.conf debug=yes.

The code which reads asterisk.conf supports processing the debug
option with ast_true, but ast_true returns -1.  This causes debug
to still be off, convert to 1 so debug will be on as requested.

ASTERISK-25042
Reported by: Corey Farrell

Change-Id: I3c898b7d082d914b057e111b9357fde46bad9ed6

10 years agocdr_pgsql: Use PQescapeStringConn for escaping names. 41/441/1
Rodrigo Ramírez Norambuena [Sat, 2 May 2015 04:43:22 +0000 (00:43 -0400)] 
cdr_pgsql: Use PQescapeStringConn for escaping names.

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

Change-Id: I6709165e2d00463e9c813d24f17830ad4910b599

10 years agoMerge "vector: Add REMOVE, ADD_SORTED and RESET macros" into 13
Joshua Colp [Tue, 12 May 2015 10:38:57 +0000 (05:38 -0500)] 
Merge "vector:  Add REMOVE, ADD_SORTED and RESET macros" into 13

10 years agovector: Add REMOVE, ADD_SORTED and RESET macros 21/421/8
George Joseph [Sat, 9 May 2015 21:58:46 +0000 (15:58 -0600)] 
vector:  Add REMOVE, ADD_SORTED and RESET macros

Based on feedback from Corey Farrell and Y Ateya, a few new
macros have been added...

AST_VECTOR_REMOVE which takes a parameter to indicate if
order should be preserved.

AST_VECTOR_ADD_SORTED which adds an element to
a sorted vector.

AST_VECTOR_RESET which cleans all elements from the vector
leaving the storage intact.

Change-Id: I41d32dbdf7137e0557134efeff9f9f1064b58d14

10 years agopbx/pbx_spool: Fix issue when call files were executed too early 33/433/2
Ivan Poddubny [Mon, 11 May 2015 12:07:31 +0000 (12:07 +0000)] 
pbx/pbx_spool: Fix issue when call files were executed too early

pbx_spool used to delete/move the call file upon successful outgoing
call completion, but did not delete it from in-memory list of files
(dirlist, used only when compiled with inotify/kqueue support).
That resulted in an extra attempt to process that filename after
retrytime seconds.
Then, if a new file with the same name appears that is scheduled
in future further than the completed one plus its retrytime,
then it gets executed earlier than expected.

This patch fixes remove_from_queue function to also remove the entry
from the dirlist.

ASTERISK-17069 #close
Reported by: Jeremy Kister

ASTERISK-24442 #close
Reported by: tootai

Change-Id: If9ec9b88073661ce485d6b008fd0b2612e49a28b

10 years agoconfigs/basic-pbx: Modified main IVR to play new Allison prompt. 19/419/1
Rusty Newton [Fri, 8 May 2015 19:47:51 +0000 (14:47 -0500)] 
configs/basic-pbx: Modified main IVR to play new Allison prompt.

The main IVR was playing demo-congrats. I've switched it over to the
basic-pbx-ivr-main file that we added in core sounds 1.4.27. This prompt
has Allison prompting the user with the actual IVR menu.

ASTERISK-24892 #close

Change-Id: Ifb749616ff8e156a1031ddaddfcc9244767a095d

10 years agoMerge "tcptls: Avoiding ERR_remove_state in OpenSSL." into 13
Matt Jordan [Fri, 8 May 2015 20:55:46 +0000 (15:55 -0500)] 
Merge "tcptls: Avoiding ERR_remove_state in OpenSSL." into 13

10 years agores_rtp_asterisk: Issue ERROR if res_srtp is not found. 10/410/4
Sean Bright [Fri, 8 May 2015 15:39:42 +0000 (15:39 +0000)] 
res_rtp_asterisk: Issue ERROR if res_srtp is not found.

While trying to get WebRTC working with chan_pjsip, I was running
into the following error:

    Attempted to set an invalid DTLS-SRTP configuration on RTP
    instance...

Josh helpfully pointed out that res_srtp.so might not be loaded, and
sure enough, it wasn't. This patch adds a ERROR indiciating as much
to hopefully help others having a similar problem.

Change-Id: I13aa477b47b299876728a21b130998a0ea6cd19f

10 years agosounds: Add Swedish sounds to Makefile and XML 14/414/1
Rusty Newton [Thu, 7 May 2015 22:49:07 +0000 (17:49 -0500)] 
sounds: Add Swedish sounds to Makefile and XML

Added the necessary lines to the Makefile and sounds.xml so we'll have the
Swedish sounds in all available formats in menuselect.

See also: Swedish sounds were added into the core sounds release 1.4.27.

ASTERISK-24744 #close

Reported by: Tove Hjelm
Tested by: Rusty Newton

Change-Id: Ib6f4fd177afd1667b2402735034001d4d055a908

10 years agoMerge "doc: Make progdocs play nice with git" into 13
Joshua Colp [Fri, 8 May 2015 14:54:47 +0000 (09:54 -0500)] 
Merge "doc: Make progdocs play nice with git" into 13

10 years agotcptls: Avoiding ERR_remove_state in OpenSSL. 05/405/1
Alexander Traud [Tue, 5 May 2015 16:35:16 +0000 (18:35 +0200)] 
tcptls: Avoiding ERR_remove_state in OpenSSL.

ERR_remove_state was deprecated with OpenSSL 1.0.0 and was replaced by
ERR_remove_thread_state. ERR_load_SSL_strings and ERR_load_BIO_strings were
called by SSL_load_error_strings already and got removed. These changes allow
OpenSSL forks like BoringSSL to be used with Asterisk.

ASTERISK-25043 #close
Reported by: Alexander Traud
patches:
  asterisk_with_BoringSSL.patch uploaded by Alexander Traud (License 6520)

Change-Id: If1c0871ece21a7e0763fafbd2fa023ae49d4d629
(cherry picked from commit 247fef66537b59649e7571d64e2c574a106dbd65)