Commit Graph

4313 Commits

Author SHA1 Message Date
Michael L. Young
130fd15c24 Add IPv6 Support To chan_iax2
This patch adds IPv6 support to chan_iax2.  Yay!

(closes issue ASTERISK-22025)
Patches:
  iax2-ipv6-v5-reviewboard.diff by Michael L. Young (license 5026)

Review: https://reviewboard.asterisk.org/r/2660/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400567 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-04 21:40:33 +00:00
Matthew Jordan
7fc567bd76 ARI: Add subscription support
This patch adds an /applications API to ARI, allowing explicit management of
Stasis applications.

 * GET /applications - list current applications
 * GET /applications/{applicationName} - get details of a specific application
 * POST /applications/{applicationName}/subscription - explicitly subscribe to
   a channel, bridge or endpoint
 * DELETE /applications/{applicationName}/subscription - explicitly unsubscribe
   from a channel, bridge or endpoint

Subscriptions work by a reference counting mechanism: if you subscript to an
event source X number of times, you must unsubscribe X number of times to stop
receiveing events for that event source.

Review: https://reviewboard.asterisk.org/r/2862

(issue ASTERISK-22451)
Reported by: Matt Jordan




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400522 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-04 15:54:57 +00:00
Matthew Jordan
19df630819 Remove publication of a channel snapshot when the technology is set
This patch removes said publication for a few reasons:
(1) It is unnecessary. Association of the channel technology with a specific
channel is an implementation detail that should be assumed to "just happen",
and consumers of Stasis don't need to be informed about it.
(2) Publication of said message can now cause crashes, as the actual creation
of a channel in normal locations now stages its messages. As a result, things
that create dummy channels (such as the SIP RTP QOS unit test) and associate
them with a channel technology were now crashing, as the channel itself was
not known by Stasis.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400460 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-03 21:40:20 +00:00
Joshua Colp
7cfd95ac44 When serializing CDR variables (like for "core show channels") don't output an error if CDRs aren't enabled.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400442 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-03 19:31:43 +00:00
Kinsey Moore
1f9ac47811 Fix security events for AMI invalid password
In r337595, additional security events were added for chan_sip
authentication failures. The new IEs added to the existing invalid
password event were defined as required IEs, but existing users of the
event did not set the new IEs and could not since they didn't apply to
existing uses. They are now marked as optional IEs.

(closes issue ASTERISK-22578)
Reported by: Matt Jordan
........

Merged revisions 400421 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400440 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-03 19:29:49 +00:00
Richard Mudgett
0dd84b2f51 cel: Some whitespace cleanups
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400398 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-03 18:44:10 +00:00
Kinsey Moore
315ec8d7f9 Detect and use xsltCleanupGlobals when available
This introduces usage of an additional libxslt cleanup function,
xsltCleanupGlobals, when the configure script detects that it is
available. Early versions of the library did not include this function.

(closes issue ASTERISK-22570)
Reported by: Corey Farrell
Patches:
    xsltCleanupGlobals.patch uploaded by Corey Farrell (License 5909)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400384 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-03 17:57:49 +00:00
Mark Michelson
23cea9e44b Cache string values of formats on ast_format_cap() to save processing.
Channel snapshots have string representations of the channel's native formats.
Prior to this change, the format strings were re-created on ever channel snapshot
creation. Since channel native formats rarely change, this was very wasteful.
Now, string representations of formats may optionally be stored on the ast_format_cap
for cases where string representations may be requested frequently. When formats
are altered, the string cache is marked as invalid. When strings are requested, the
cache validity is checked. If the cache is valid, then the cached strings are copied.
If the cache is invalid, then the string cache is rebuilt and copied, and the cache
is marked as being valid again.

Review: https://reviewboard.asterisk.org/r/2879



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400356 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-02 22:34:05 +00:00
Mark Michelson
a38ba34d3d Remove unnecessary waits from stasis.
Since caches are updated on publisher threads, there is no need
to wait for the cache updates to occur after a stasis message
is published.

In the case of chan_pjsip device state changes, this set of
changes caused an improvement to performance.

Review: https://reviewboard.asterisk.org/r/2890



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400318 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-02 22:08:49 +00:00
Matthew Jordan
1d5b70a564 Only create Stasis subscriptions when enabled
Subscribing to Stasis isn't free.

As such, this patch makes AMI, CDR, and CEL - the "big 3" - only subscribe
when enabled. Toggling their availability via a .conf file will
unsubscribe/subscribe as appropriate.

Review: https://reviewboard.asterisk.org/r/2888/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400312 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-02 21:25:50 +00:00
Richard Mudgett
d361cd262a Originate: Make setting caller id on outgoing call use either name or number.
Previous code was requiring both name and number to be available.

Also restored a comment block on why caller id is also set on an outgoing
call leg in addition to connected line from earlier versions of Asterisk.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-02 20:30:07 +00:00
Matthew Jordan
3ccb6a9ea5 Fix the CDR CLI command 'cdr show active {channel}'
When the switch from channel names to channel unique IDs happened, the poor
CLI command got left in the dust. This fixes the command so that users can
once again see how Asterisk is messing up your billing information.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400286 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-02 18:57:15 +00:00
Richard Mudgett
1a7783c7f8 MALLOC_DEBUG: Fix some misuses of free() when MALLOC_DEBUG is enabled.
* There were several places in ARI where an external library was mallocing
memory that must always be released with free().  When MALLOC_DEBUG is
enabled, free() is redirected to the MALLOC_DEBUG version.  Since the
external library call still uses the normal malloc(), MALLOC_DEBUG
complains that the freed memory block is not registered and will not free
it.  These cases must use ast_std_free().

* Changed calls to asprintf() and vasprintf() to the equivalent
ast_asprintf() and ast_vasprintf() versions respectively.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400270 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-02 17:11:42 +00:00
Joshua Colp
1dd63fbdfa Reduce channel snapshot creation and publishing by up to 50%.
This change introduces the ability to stage channel snapshot
creation and publishing by suppressing the implicit creation
and publishing that some functions have. Once all operations
are executed the staging is marked as done and a single snapshot
is created and published.

Review: https://reviewboard.asterisk.org/r/2889/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400265 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-02 16:20:25 +00:00
Richard Mudgett
d3f1f5369f Features: Rearm the parking config options have moved warning for each reload.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400227 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-01 16:34:51 +00:00
Matthew Jordan
2efa0948dc Filter out internal channels for bridge leave messages and parked call messages
Granted, if you manage to park a Conference announcer channel, something has
gone horrifically wrong.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400217 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-10-01 15:48:42 +00:00
Matthew Jordan
fa0d221bd3 Remove spurious event raised when CDRs are reloaded
The Reload event is now raised by the module loading core. As such, the Reload
event in the CDR engine was a duplicate and not needed.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400194 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-30 19:44:54 +00:00
David M. Lee
516dbe86a0 Remove dispatch object allocation from Stasis publishing
While looking for areas for performance improvement, I realized that an
unused feature in Stasis was negatively impacting performance.

When a message is sent to a subscriber, a dispatch object is allocated
for the dispatch, containing the topic the message was published to, the
subscriber the message is being sent to, and the message itself.

The topic is actually unused by any subscriber in Asterisk today. And
the subscriber is associated with the taskprocessor the message is being
dispatched to.

First, this patch removes the unused topic parameter from Stasis
subscription callbacks.

Second, this patch introduces the concept of taskprocessor local data,
data that may be set on a taskprocessor and provided along with the data
pointer when a task is pushed using the ast_taskprocessor_push_local()
call. This allows the task to have both data specific to that
taskprocessor, in addition to data specific to that invocation.

With those two changes, the dispatch object can be removed completely,
and the message is simply refcounted and sent directly to the
taskprocessor.

Review: https://reviewboard.asterisk.org/r/2884/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400181 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-30 18:48:57 +00:00
David M. Lee
9d21631aee Optimize how Stasis forwards are dispatched
This patch optimizes how forwards are dispatched in Stasis.

Originally, forwards were dispatched as subscriptions that are invoked
on the publishing thread. This did not account for the vast number of
forwards we would end up having in the system, and the amount of work it
would take to walk though the forward subscriptions.

This patch modifies Stasis so that rather than walking the tree of
forwards on every dispatch, when forwards and subscriptions are changed,
the subscriber list for every topic in the tree is changed.

This has a couple of benefits. First, this reduces the workload of
dispatching messages. It also reduces contention when dispatching to
different topics that happen to forward to the same aggregation topic
(as happens with all of the channel, bridge and endpoint topics).

Since forwards are no longer subscriptions, the bulk of this patch is
simply changing stasis_subscription objects to stasis_forward objects
(which, admittedly, I should have done in the first place.)

Since this required me to yet again put in a growing array, I finally
abstracted that out into a set of ast_vector macros in
asterisk/vector.h.

Review: https://reviewboard.asterisk.org/r/2883/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400180 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-30 18:39:34 +00:00
David M. Lee
e88afe2022 Taskprocessor optimization; switch Stasis to use taskprocessors
This patch optimizes taskprocessor to use a semaphore for signaling,
which the OS can do a better job at managing contention and waiting
that we can with a mutex and condition.

The taskprocessor execution was also slightly optimized to reduce the
number of locks taken.

The only observable difference in the taskprocessor implementation is
that when the final reference to the taskprocessor goes away, it will
execute all tasks to completion instead of discarding the unexecuted
tasks.

For systems where unnamed semaphores are not supported, a really
simple semaphore implementation is provided. (Which gives identical
performance as the original taskprocessor implementation).

The way we ended up implementing Stasis caused the threadpool to be a
burden instead of a boost to performance. This was switched to just
use taskprocessors directly for subscriptions.

Review: https://reviewboard.asterisk.org/r/2881/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400178 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-30 18:26:27 +00:00
David M. Lee
48d90d947d Stasis performance improvements
This patch addresses several performance problems that were found in
the initial performance testing of Asterisk 12.

The Stasis dispatch object was allocated as an AO2 object, even though
it has a very confined lifecycle. This was replaced with a straight
ast_malloc().

The Stasis message router was spending an inordinate amount of time
searching hash tables. In this case, most of our routers had 6 or
fewer routes in them to begin with. This was replaced with an array
that's searched linearly for the route.

We more heavily rely on AO2 objects in Asterisk 12, and the memset()
in ao2_ref() actually became noticeable on the profile. This was
#ifdef'ed to only run when AO2_DEBUG was enabled.

After being misled by an erroneous comment in taskprocessor.c during
profiling, the wrong comment was removed.

Review: https://reviewboard.asterisk.org/r/2873/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400138 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-30 15:24:00 +00:00
Matthew Jordan
0b97ac8e87 CDR: Improve handling of parking; resolve assertion when originating into park
This patch covers two problems:

1) Currently, when a call is transferred into a parking lot from a bridge
   (using either the blind transfer or one touch parking mechanisms), the
   application fails to be set to "Park" in the resulting CDR record for
   the parked channel. This is due to the ParkedCall message arriving before
   the BridgeEnter for the channel entering the parking bridge. The ParkedCall
   message isn't handled as the CDR for the channel has already been finalized
   (due to the channel having left its two party bridge), and the BridgeEnter -
   which creates the new CDR - doesn't have the parking information. This patch
   modifies the behavior so that reception of a ParkedCall message will - if
   not handled by a CDR chain - cause a new CDR to be created and put into the
   Parking state.

2) It fixes a FRACK that occurred when a channel is originated into a parking
   space. The DialedPending state - which occurs for both Dialed and Originated
   channels - assumed that it couldn't handle the parking transitions due to it
   having a Party B; however, Originated channels don't have a Party B. As such,
   the existing CDR needs to transition into the parking state - this patch does
   that.

Review: https://reviewboard.asterisk.org/r/2877/

(closes issue ASTERISK-22482)
Reported by: Richard Mudgett



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400062 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-28 20:54:55 +00:00
Matthew Jordan
a1c1fc3538 manager: Fix crash when appending a manager channel variable
In r399887, a minor performance improvement was introduced by not allocating
the manager variable struct if it wasn't used. Unfortunately, when directly
accessing an ast_channel struct, manager assumed that the struct was always
allocated. Since this was no longer the case, things got a bit crashy.

This fixes that problem by simply bypassing appending variables if the manager
channel variable struct isn't there.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@400058 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-28 20:20:42 +00:00
Richard Mudgett
d865190a7e astobj2: Remove OBJ_CONTINUE support.
OBJ_CONTINUE was a strange feature that came into the world under
suspicious circumstances to support an abuse of the ao2_container by
chan_iax2.  Since chan_iax2 no longer uses OBJ_CONTINUE, it is safe to
remove it.

The simplified code should help performance slightly and make
understanding the code easier.

Review: https://reviewboard.asterisk.org/r/2887/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399937 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-27 17:03:25 +00:00
Kinsey Moore
e087610307 Restore usefulness of the CEL Peer field
This change makes the CEL peer field useful again for BRIDGE_ENTER and
BRIDGE_EXIT events and fills the field with a comma-separated list of
all channels in the bridge other than the channel that is entering or
exiting the bridge.

Review: https://reviewboard.asterisk.org/r/2840/
(closes issue ASTERISK-22393)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399912 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-27 14:01:01 +00:00
David M. Lee
16d449ef38 Minor performance bump by not allocate manager variable struct if we don't need it
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399887 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-26 15:41:47 +00:00
Richard Mudgett
e134fb26d2 astobj2: Made use OBJ_SEARCH_xxx identifiers as field enum values internally.
* Made ao2_unlink to protect itself from stray OBJ_SEARCH_xxx values
passed in.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399749 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-24 22:50:50 +00:00
Matthew Jordan
c0576c7816 Fix a performance problem CDRs
There is a large performance price currently in the CDR engine. We currently
perform two ao2_callback calls on a container that has an entry for every
channel in the system. This is done to create matching pairs between channels
in a bridge.

As such, the portion of the CDR logic that this patch deals with is how we
make pairings when a channel enters a mixing bridge. In general, when a
channel enters such a bridge, we need to do two things:
 (1) Figure out if anyone in the bridge can be this channel's Party B.
 (2) Make pairings with every other channel in the bridge that is not already
     our Party B.

This is a two step process. In the first step, we look through everyone in the
bridge and see if they can be our Party B (single_state_process_bridge_enter).
If they can - yay! We mark our CDR as having gotten a Party B. If not, we keep
searching. If we don't find one, we wait until someone joins who can be our
Party B.

Step 2 is where we changed the logic
(handle_bridge_pairings and bridge_candidate_process). Previously, we would
first find candidates - those channels in the bridge with us - from the
active_cdrs_by_channel container. Because a channel could be a candidate if it
was Party B to an item in the container, the code implemented multiple
ao2_container callbacks to get all the candidates. We also had to store them
in another container with some other meta information. This was rather complex
and costly, particularly if you have 300 Local channels (600 channels!) going
at once.

Luckily, none of it is needed: when a channel enters a bridge (which is when
we're figuring all this stuff out), the bridge snapshot tells us the unique
IDs of everyone already in the bridge. All we need to do is:
 For all channels in the bridge:
   If the channel is us or our Party B that we got in step 1, skip it
   Compare us and the candidate to figure out who is Party A (based on some
       specific rules)
   If we are Party A:
      Make a new CDR for us, append it to our chain, and set the candidate as
          Party B
   If they are Party A:
      If they don't have a Party B:
        Make a new CDR for them, append us to their chain, and us as Party B
      Otherwise:
        Copy us over as Party B on their existing CDR.

This patch does that.

Because we now use channel unique IDs to find the candidates during bridging,
active_cdrs_by_channel now looks up things using uniqueid instead of channel
name. This makes the more complex code simpler; it does, however, have the
drawback that dialplan applications and functions will be slightly slower as
they have to iterate through the container looking for the CDR by name.
That's a small price to pay however as the bridging code will be called a lot
more often.

This patch also does two other minor changes:
 (1) It reduces the container size of the channels in a bridge snapshot to 1.
     In order to be predictable for multi-party bridges, the order of the
     channels in the container must be stable; that is, it must always devolve
     to a linked list.
 (2) CDRs and the multi-party test was updated to show the relationship between
     two dialed channels. You still want to know if they talked - previously,
     dialed channels were always ignored, which is wrong when they have
     managed to get a Party B.

(closes issue ASTERISK-22488)
Reported by: Richard Mudgett

Review: https://reviewboard.asterisk.org/r/2861/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399666 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-24 17:57:09 +00:00
Richard Mudgett
1577e10111 media_index: Fix process_description_file() memory leak of file_id_persist.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-21 01:46:16 +00:00
Richard Mudgett
dd3acf4f57 features_config: Fix config ref leak of parkinglots.
This leak happend for just about every channel created.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399585 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-21 00:55:54 +00:00
Richard Mudgett
f17f1d0073 json: Make it obvious that ast_json_unref() is NULL safe.
It looked like the safety check was done after the NULL pointer was used.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399576 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-21 00:16:18 +00:00
Kinsey Moore
c71782321c Ensure global types in the config framework are initialized
If a config object was allocated but one of its global objects was
never encountered, then the global object's defaults were never
applied. Ensure that global objects are initialized properly upon
allocation instead of on configuration.

Review: https://reviewboard.asterisk.org/r/2866/
........

Merged revisions 399564 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-20 22:41:25 +00:00
Jonathan Rose
cebe08bf53 originate/call forwarding: Fix a crash when forwarding a call from originate
(closes issue ASTERISK-22487)
Reported by: David M. Lee
Review: https://reviewboard.asterisk.org/r/2868/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399553 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-20 22:04:25 +00:00
Kevin Harwell
d7dcb9ce19 Fix memory leak in logger.
Fixed a memory leak discovered in the logger where a temporary string buffer
was not being freed.

(closes issue ASTERISK-22540)
Reported by: John Hardin
........

Merged revisions 399513 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399514 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-20 14:25:32 +00:00
Richard Mudgett
cf9356e189 optional_api: Make always use the standard malloc functions even with MALLOC_DEBUG.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399501 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-19 23:16:31 +00:00
Kinsey Moore
e506165c5a Fix jitter buffer log file creation
This adjusts '/'-to-'#' replacement to replace all instances of '/'
instead of just the first to ensure that the jitter buffer log file
gets the correct name as per Richard Kenner's suggestion.

(closes issue ASTERISK-21036)
Reported by: Richard Kenner
........

Merged revisions 399402 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 399403 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399404 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-18 19:59:24 +00:00
Michael L. Young
474c5df62f Fix Segfault In features-config.c When Application Has No Arguments
Some applications do not require arguments.  Therefore, when parsing application
maps in features.conf, it is possible that app_data will be set to NULL.

* This patch sets app_data to "" if it is NULL.

Review: https://reviewboard.asterisk.org/r/2804


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399294 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-18 00:12:21 +00:00
Kevin Harwell
3f668d3a19 Remote console: more output discrepancies
The remote console continued to have issues with its output.  In this case CLI
command output would either not show up (if verbose level = 0) or would contain
verbose prefixes (if verbose level > 0) once log messages were sent to the
remote console.  The fix now now adds verbose prefix data to all new lines
contained in a verbose log string.

(closes issue ASTERISK-22450)
Reported by: David Brillert
(closes issue AST-1193)
Reported by: Guenther Kelleter
Review: https://reviewboard.asterisk.org/r/2825/
........

Merged revisions 399267 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-17 18:37:43 +00:00
Mark Michelson
9bdbccac14 Fix other timeouts (atxferloopdelay and atxfernoanswertimeout) to use seconds instead of milliseconds.
Thanks to Richard Mudgett for pointing this out.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399247 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-17 17:09:00 +00:00
Mark Michelson
edb351ebf6 Switch transferdigittimeout to be configured as seconds instead of milliseconds.
This was an unintentional consequence of the update of features.conf to use the
config framework in Asterisk 12. Thanks to Marco Signorini on the Asterisk
developers list for pointing out the problem.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399237 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-17 16:09:46 +00:00
Matthew Jordan
5cf1cae533 Filter internal channels out of bridge enter/leave message handling
Some channels exist merely as an implementation detail in Asterisk, such as
ConfBridge's announcer/recorder channels. These channels should never be
exposed to the outside world, or to interfaces that report on Asterisk. We
already filter out such channels in snapshot processing; however, we failed to
filter out bridge related messages that involved these channels.

This patch filters out bridge related messages that are for such channels. This
prevents a spurious WARNING message from being displayed when those channels
move in and out of bridges.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399146 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-16 02:33:23 +00:00
Richard Mudgett
74c9781273 Restore Dial, Queue, and FollowMe 'I' option support.
The Dial, Queue, and FollowMe applications need to inhibit the bridging
initial connected line exchange in order to support the 'I' option.

* Replaced the pass_reference flag on ast_bridge_join() with a flags
parameter to pass other flags defined by enum ast_bridge_join_flags.

* Replaced the independent flag on ast_bridge_impart() with a flags
parameter to pass other flags defined by enum ast_bridge_impart_flags.

* Since the Dial, Queue, and FollowMe applications are now the only
callers of ast_bridge_call() and ast_bridge_call_with_flags(), changed the
calling contract to require the initial COLP exchange to already have been
done by the caller.

* Made all callers of ast_bridge_impart() check the return value.  It is
important.  As a precaution, I also made the compiler complain now if it
is not checked.

* Did some cleanup in parking_tests.c as a result of checking the
ast_bridge_impart() return value.

An independent, but associated change is:
* Reduce stack usage in ast_indicate_data() and add a dropping redundant
connected line verbose message.

(closes issue ASTERISK-22072)
Reported by: Joshua Colp

Review: https://reviewboard.asterisk.org/r/2845/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399136 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-13 22:05:07 +00:00
David M. Lee
fcde3a5320 Don't write to /tmp/refs when REF_DEBUG is not defined.
If MALLOC_DEBUG is enabled, then the debug destructor for the container
is used, which would erroneously write to /tmp/refs. This patch only
uses the debug destructor if ref_debug is used.

(closes issue ASTERISK-22536)
........

Merged revisions 399098 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 399099 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399100 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-13 20:54:27 +00:00
Richard Mudgett
2b9f4fe644 CLI bridge: Fix "bridge destroy <id>" and "bridge kick <id> <chan>" tab completion.
These two commands must deal with the live bridges container for tab
completion and not the stasis cache.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399021 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-12 23:41:25 +00:00
Richard Mudgett
9efc5a8a3f astobj2: Register the bridges container for debug inspection.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399019 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-12 23:34:28 +00:00
Richard Mudgett
be81695a85 core_local: Fix memory corruption race condition.
The masquerade super test is failing on v12 with high fence violations and
crashing.  The fence violations are showing that party id allocated memory
strings are somehow getting corrupted in the
bridge_reconfigured_connected_line_update() function.  The invalid string
values happen to be the freed memory fill pattern.

After much puzzling, I deduced that the
bridge_reconfigured_connected_line_update() is copying a string out of the
source channel's caller party id struct just as another thread is updating
it with a new value.  The copying thread is using the old string pointer
being freed by the updating thread.  A search of the code found the
unreal_colp_redirect_indicate() routine updating the caller party id's
without holding the channel lock.

A latent bug in v1.8 and v11 hatched in v12 because of the bridging and
connected line changes.  :)

(issue ASTERISK-22221)
Reported by: Matt Jordan

Review: https://reviewboard.asterisk.org/r/2839/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@398938 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-12 16:38:07 +00:00
Richard Mudgett
b9f8a74838 Fix incorrect usages of ast_realloc().
There are several locations in the code base where this is done:
buf = ast_realloc(buf, new_size);

This is going to leak the original buf contents if the realloc fails.

Review: https://reviewboard.asterisk.org/r/2832/
........

Merged revisions 398757 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 398758 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@398759 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-10 18:03:45 +00:00
Richard Mudgett
cca2273fd2 MALLOC_DEBUG: Change fence magic number to be completely different from the freed magic number.
Race conditions between freeing a nul terminated string and
ast_strdup()'ing it are more likely to be detected if the fence and freed
magic numbers are completely different.
........

Merged revisions 398703 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 398721 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@398726 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-09 23:23:02 +00:00
David M. Lee
ffd49f6b2d Fix DEBUG_THREADS when lock is acquired in __constructor__
This patch fixes some long-standing bugs in debug threads that were
exacerbated with recent Optional API work in Asterisk 12.

With debug threads enabled, on some systems, there's a lock ordering
problem between our mutex and glibc's mutex protecting its module list
(Ubuntu Lucid, glibc 2.11.1 in this instance). In one thread, the module
list will be locked before acquiring our mutex. In another thread, our
mutex will be locked before locking the module list (which happens in
the depths of calling backtrace()).

This patch fixes this issue by moving backtrace() calls outside of
critical sections that have the mutex acquired. The bigger change was to
reentrancy tracking for ast_cond_{timed,}wait, which wrongly assumed
that waiting on the mutex was equivalent to a single unlock (it actually
suspends all recursive locks on the mutex).

(closes issue ASTERISK-22455)
Review: https://reviewboard.asterisk.org/r/2824/
........

Merged revisions 398648 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 398649 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@398651 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-09 20:12:46 +00:00
Richard Mudgett
83d741f85e cdr: Change the number of container buckets to be similar to the channels container.
* Fix the temporary cdr candidate containers to use a prime number of
buckets.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@398579 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-09-06 21:16:51 +00:00