Commit Graph

22223 Commits

Author SHA1 Message Date
Kinsey Moore
ca256c003b Resolve some build warnings
My newly upgraded compiler caught these usages of uninitialized values.
They weren't actually used.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368533 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-05 15:26:05 +00:00
Kinsey Moore
6c63f45326 Ensure that pages and emails are sent using RFC822-compliant date format
When localization was added to app_voicemail, these headers were altered
when they should have remained in en_US format for RFC compliance. This
reverts the changes to those two lines.

(closes issue ASTERISK-19876)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-05 15:15:57 +00:00
Mark Michelson
503fc9458a Relay proper SIP responses on calling side.
Revision 351130 broke corect HANGUPCAUSE setting
for the 404 case in chan_sip. Other cases were also
potentially broken. This patch fixes the relaying
of causes to be what they used to be.

(closes issue ASTERISK-19914)
Reported by Pavel Troller
Tested by Walter Doekes (via a reviewboard test to be committed later)
Patches:
	chan_sip.diff uploaded by Pavel Troller (license #6302)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368498 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-04 21:56:05 +00:00
Richard Mudgett
c44df31f10 Document BLINDTRANSFER behavior change.
(issue ASTERISK-19322)

(closes issue ASTERISK-19875)
Reported by: call


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-04 21:10:29 +00:00
Richard Mudgett
0db9327800 Fix potential deadlock between masquerade and chan_local.
* Restructure ast_do_masquerade() to not hold channel locks while it calls
ast_indicate().

* Simplify many calls to ast_do_masquerade() since it will never return a
failure now.  If it does fail internally because a channel driver callback
operation failed, the only thing ast_do_masquerade() can do is generate a
warning message about strange things may happen and press on.

* Fixed the call to ast_bridged_channel() in ast_do_masquerade().  This
change fixes half of the deadlock reported in ASTERISK-19801 between
masquerades and chan_iax.

(closes issue ASTERISK-19537)
Reported by: rmudgett
Tested by: rmudgett

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368405 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-04 18:41:18 +00:00
Richard Mudgett
81e1b36378 Fix deadlock when Gosub used with alternate dialplan switches.
Attempting to remove a channel from autoservice with the channel lock held
will result in deadlock.

* Restructured gosub_exec() to not call ast_parseable_goto() and
ast_exists_extension() with the channel lock held.

(closes issue ASTERISK-19764)
Reported by: rmudgett
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368308 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-01 23:21:00 +00:00
Kevin P. Fleming
871cef109a Improve SDP parsing warning messages
* 'Unsupported media type' is only reported when that is in fact the case,
   not when a supported media type is included in an 'm' line that has an
   invalid format.

* All warning messages related to parsing 'm' lines now include the 'm' line contents.

* (minor bugfix) newline added to port-number-zero warning messages.

* Warning messages improved to use RFC-specified terminology for various items.

* Warnings for offers that include more than one port for a single media type now
  include the media type.

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



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-01 18:18:25 +00:00
Michael L. Young
751a8bb6b3 Add documentation to function CHANNEL for options echocan_mode and buffers
The ability to set "echocan_mode" and "buffers" through the dialplan was added
to chan_dahdi some time ago.  This patch adds some documentation to
func_channel.

(Closes issue ASTERISK-19911)
Reported by: Dale Noll
Tested by: Michael L. Young
Patches: 
  asterisk-19911-branch18.diff uploaded by Michael L. Young (license 5026)

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-01 03:25:52 +00:00
Richard Mudgett
bd85d458a2 Coverity Report: Fix issues for error type REVERSE_INULL (core modules)
* Fixes findings: 0-2,5,7-15,24-26,28-31

(issue ASTERISK-19648)
Reported by: Matt Jordan


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368039 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-31 18:00:59 +00:00
Richard Mudgett
f7d2d4601b Use the DEADLOCK_AVOIDANCE() macro instead.
(issue ASTERISK-19854)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367980 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-30 18:05:48 +00:00
Richard Mudgett
0bad4cbdde Fix deadlock when executing CLI "pri show channels" and "ss7 show channels" commands.
* Fix sig_pri_lock_owner() to avoid deadlock properly.

* Code pri_grab() better.

* Fix sig_ss7_lock_owner() to avoid deadlock properly.

* Code ss7_grab() better.

(closes issue ASTERISK-19854)
Reported by: Jaxon
Patches:
      jira_asterisk_19854_v1.8.6.patch (license #5621) patch uploaded by rmudgett (Modified to do the same thing to sig_ss7)
Tested by: Jaxon


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367976 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-30 17:21:43 +00:00
Richard Mudgett
ba26e7e249 Coverity Report: Fix issues for error type REVERSE_INULL (deprecated modules)
* Fix only issue pointed out by deprecated_REVERSE_INULL.txt for
app_meetme.c in find_user().

* Change use of %i to %d in sscanf() in find_user().  The use of %i gives
unexpected parsing because it can accept hex, octal, and decimal integer
formats.

* Changed other uses of %i in app_meetme() to use %d for consistency.

(issue ASTERISK-19648)
Reported by: Matt Jordan


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367906 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-29 22:25:21 +00:00
Matthew Jordan
fd9f2351cd AST-2012-008: Fix remote crash vulnerability in chan_skinny
When a skinny session is unregistered, the corresponding device pointer is set
to NULL in the channel private data.  If the client was not in the on-hook state
at the time the connection was closed, the device pointer can later be
dereferenced if a message or channel event attempts to use a line's pointer to
said device.

The patches prevent this from occurring by checking the line's pointer in
message handlers and channel callbacks that can fire after an unregistration
attempt.

(closes issue ASTERISK-19905)
Reported by: Christoph Hebeisen
Tested by: mjordan, Damien Wedhorn
Patches:
  AST-2012-008-1.8.diff uploaded by mjordan (license 6283)
  AST-2012-008-10.diff uploaded by mjordan (license 6283)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367843 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-29 18:30:25 +00:00
Richard Mudgett
be10342c3f AST-2012-007: Fix IAX receiving HOLD without suggested MOH class crash.
* Made schedule_delivery() set the received frame f->data.ptr to NULL if 
the datalen is zero.  

* Fix queue_signalling() memcpy() size error.

* Made queue_signalling() not use C++ keyword variable names.

(closes issue ASTERISK-19597)
Reported by: mgrobecker
Patches:
      jira_asterisk_19597_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: rmudgett, Michael L. Young


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367781 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-25 16:28:04 +00:00
Michael L. Young
20b362fa4b Fix pvt_sip for inbound call to use peer's allowtransfer setting
The pvt_sip allowtransfer was not being set to that of the peer's setting.
Therefore, the global allowtransfer setting was being used instead which would
lead to calls not being transfered if the global setting was set to 'no' despite
the setting on the peer being 'yes' and vice versa, calls would be allowed to
transfer even if the peer's setting was 'no' but the global setting was 'yes'.

(Closes issue ASTERISK-19856)
Reported by: Jacek
Tested by: Michael L. Young, Jacek 
Patches:
issue-asterisk-19856-branch10-v3.diff uploaded by 
                                                 Michael L. Young (license 5026)

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367730 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-25 02:27:11 +00:00
Richard Mudgett
4b03161fca Fix Dial I option ignored if dial forked and one fork redirects.
The Dial and Queue I option is intended to block connected line updates
and redirecting updates.  However, it is a feature that when a call is
locally redirected, the I option is disabled if the redirected call runs
as a local channel so the administrator can have an opportunity to setup
new connected line information.  Unfortunately, the Dial and Queue I
option is disabled for *all* forked calls if one of those calls is
redirected.

* Make the Dial and Queue I option apply to each outgoing call leg
independently.  Now if one outgoing call leg is locally redirected, the
other outgoing calls are not affected.

* Made Dial not pass any redirecting updates when forking calls.
Redirecting updates do not make sense for this scenario.

* Made Queue not pass any redirecting updates when using the ringall
strategy.  Redirecting updates do not make sense for this scenario.

* Fixed deadlock potential with chan_local when Dial and Queue send
redirecting updates for a local redirect.

* Converted the Queue stillgoing flag to a boolean bitfield.

(closes issue ASTERISK-19511)
Reported by: rmudgett
Tested by: rmudgett

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367678 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-24 22:21:18 +00:00
Richard Mudgett
c88ad5e919 Fix WaitExten(x,m(musicclass)) string termination.
The AST_CONTROL_HOLD MOH class from the WaitExten application can now be
queued onto a channel, passed over local channels with the /m option, and
passed over IAX channels.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-23 23:08:14 +00:00
Mark Michelson
e456e4a8f1 Only call SSL_CTX_free if DO_SSL is defined.
Thanks to Paul Belanger for pointing out this error.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367416 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-23 20:27:47 +00:00
Matthew Jordan
f26d22b563 Update a peer's LastMsgsSent when the peer is notified of waiting messages
Previously, MWI logic utilized a counter called 'lastmsgssent' to know whether
or not MWI NOTIFY requests had been sent to a specific peer.  When MWI
notifications were changed to use the internal event framework, this value was
no longer needed for its original purpose.  Hence, it was no longer updated
with the new/old message counts for a peer.  However, the value was still
presented when, either by AMI or CLI, a 'sip show peer [peer]' command
was executed.  The output of the command would always display the erroneous
value of 32767/65535 for 'LastMsgsSent'.

This patch makes it so that the value of lastmsgssent is updated appropriately.
The value should now display the new/old message counts for a particular
peer.

(closes issue ASTERISK-17866)
Reported by: Steve Davies
patches by:
  ast-17866-rb1272.patch (License #5041 by irroot)
  Modified slightly for this commit

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




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367362 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-23 13:06:08 +00:00
Terry Wilson
9753325d32 Fix race condition for CEL LINKEDID_END event
This patch fixes to situations that could cause the CEL LINKEDID_END event to
be missed.

1) During a core stop gracefully, modules are unloaded when ast_active_channels
== 0. The LINKDEDID_END event fires during the channel destructor. This means
that occasionally, the cel_* module will be unloaded before the channel is
destroyed. It seemed generally useful to wait until the refcount of all
channels == 0 before unloading, so I added a channel counter and used it in the
shutdown code.

2) During a masquerade, ast_channel_change_linkedid is called. It calls
ast_cel_check_retire_linkedid which unrefs the linkedid in the linkedids
container in cel.c. It didn't ref the new linkedid. Now it does. 

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367292 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-22 17:14:20 +00:00
Terry Wilson
c191395381 Resolve crash in subscribing for MWI notifications
ASTOBJ_UNREF sets the variable to NULL after unreffing it, so the variable
should definitely not be used after that. To solve this in the two cases
that affect subscribing for MWI notifications, we instead save the ref
locally, and unref them in the error conditions.

(closes issue ASTERISK-19827)
Reported by: B. R
Review: https://reviewboard.asterisk.org/r/1940/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367266 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-22 16:14:16 +00:00
Mark Michelson
3ddfb50fe4 Address MISSING_BREAK static analysis reports some more.
This addresses core findings 4 and 6.

Moises Silva helped me by stating that a break could be
safely added to the case where it is added in chan_dahdi.c

In say.c, I have added a comment indicating that static analysis
complains but that it is currently unknown if this is correct.

This fixes all core findings of this type.

(closes issue ASTERISK-19662)
reported by Matthew Jordan




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367027 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-18 17:47:31 +00:00
Mark Michelson
eef4c09787 Fix memory leak of SSL_CTX structures in TLS core.
SSL_CTX structures were allocated but never freed. This was a bigger
issue for clients than servers since new SSL_CTX structures could be
allocated for each connection. Servers, on the other hand, typically
set up a single SSL_CTX for their lifetime.

This is solved in two ways:

1. In __ssl_setup(), if a tcptls_cfg has an ssl_ctx on it, it is
freed so that a new one can take its place.
2. A companion to ast_ssl_setup() called ast_ssl_teardown() has
been added so that servers can properly free their SSL_CTXs.

(issue ASTERISK-19278)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367002 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-18 16:53:47 +00:00
Matthew Jordan
67268d9198 Fix more memory leaks
This patch adds to what was fixed in r366880.  Specifically, it addresses the
following:

* chan_sip:  dispose of an allocated frame in off nominal code paths in
             sip_rtp_read
* func_odbc: when disposing of an allocated resultset, ensure that any rows
             that were appended to that resultset are also disposed of
* cli:       free the created return string buffer in another off nominal code
             path

(issue ASTERISK-19665)
Reported by: Matt Jordan

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366944 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-18 15:42:33 +00:00
Kinsey Moore
3bdb733c5d Reorder and renumber tests appropriately
It appears that a patch did not apply properly when adding tests 12 and
13 and test 11 was duplicated.  These tests have been reordered and
renumbered such that they make sense.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366882 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-18 14:16:50 +00:00
Matthew Jordan
3edf245601 Fix a variety of memory leaks
This patch addresses a number of memory leaks in a variety of modules that were
found by a static analysis tool.  A brief summary of the changes:

* app_minivm:       free ast_str objects on off nominal paths
* app_page:         free the ast_dial object if the requested channel technology
                    cannot be appended to the dialing structure
* app_queue:        if a penalty rule failed to match any existing rule list
                    names, the created rule would not be inserted and its memory
                    would be leaked
* app_read:         dispose of the created silence detector in the presence of
                    off nominal circumstances
* app_voicemail:    dispose of an allocated unique ID field for MWI event
                    un-subscribe requests in off nominal paths; dispose of
                    configuration objects when using the secret.conf option
* chan_dahdi:       dispose of the allocated frame produced by ast_dsp_process
* chan_iax2:        properly unref peer in CLI command "iax2 unregister"
* chan_sip:         dispose of the allocated frame produced by sip_rtp_read's
                    call of ast_dsp_process; free memory in parse unit tests
* func_dialgroup:   properly deref ao2 object grhead in nominal path of
                    dialgroup_read
* func_odbc:        free resultset in off nominal paths of odbc_read
* cli:              free match_list in off nominal paths of CLI match completion
* config:           free comment_buffer/list_buffer when configuration file load
                    is unchanged; free the same buffers any time they were
                    created and config files were processed
* data:             free XML nodes in various places
* enum:             free context buffer in off nominal paths
* features:         free ast_call_feature in off nominal paths of applicationmap
                    config processing
* netsock2:         users of ast_sockaddr_resolve pass in an ast_sockaddr struct
                    that is allocated by the method.  Failures in
                    ast_sockaddr_resolve could result in the users of the method
                    not knowing whether or not the buffer was allocated.  The
                    method will now not allocate the ast_sockaddr struct if it
                    will return failure.
* pbx:              cleanup hash table traversals in off nominal paths; free
                    ignore pattern buffer if it already exists for the specified
                    context
* xmldoc:           cleanup various nodes when we no longer need them
* main/editline:    various cleanup of pointers not being freed before being
                    assigned to other memory, cleanup along off nominal paths
* menuselect/mxml:  cleanup of value buffer for an attribute when that attribute
                    did not specify a value
* res_calendar*:    responses are allocated via the various *_request method
                    returns and should not be allocated in the various
                    write_event methods; ensure attendee buffer is freed if no
                    data exists in the parsed node; ensure that calendar objects
                    are de-ref'd appropriately
* res_jabber:       free buffer in off nominal path
* res_musiconhold:  close the DIR* object in off nominal paths
* res_rtp_asterisk: if we run out of ports, close the rtp socket object and free
                    the rtp object
* res_srtp:         if we fail to create the session in libsrtp, destroy the
                    temporary ast_srtp object

(issue ASTERISK-19665)
Reported by: Matt Jordan

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366880 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-18 13:58:23 +00:00
Jonathan Rose
a7733c579b chan_sip: Fix missed locking of opposing pvt for directmedia acl from r366547
It also required deadlock avoidance since two sip_pvts structs needed to be
locked simultaneously. Trunk handles it differently, so this is a 1.8 and 10
patch only.

(issue AST-876)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366791 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-17 14:40:07 +00:00
Matthew Jordan
7eb528fbf1 Fix checking bounds of array index after using it; improper sizeof
This patch fixes two problems pointed out by a static analysis tool.

* In chan_dahdi, when an event is handled the index of the sub channel is first
  obtained.  In very off nominal cases, the method that determines the index
  can return a negative value.  In the event handling code, whether or not
  the index returned is valid was being checked after that value was used to
  index into an array.  This patch makes it so the value is checked before
  any indexing is done.

* In res_calendar_ews, sizeof was being passed a pointer instead of the struct to
  determine the amount of memory to allocate.

(issue ASTERISK-19651)
Reported by: Matt Jordan

(closes issue ASTERISK-19671)
Reported by: Matt Jordan




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366740 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-17 12:51:36 +00:00
Mark Michelson
82a5bbcece Fix incorrect default port number for HTTP server.
Thanks to Tzafrir Cohen for bringing this up on the
Asterisk developers mailing list.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366650 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-16 15:52:19 +00:00
Mark Michelson
5e7f34fa05 Correct misuse of ast_strip_quoted() when getting a Diversion header's reason parameter.
The use here was assuming that the pointer would be updated, but the updated string
is actually returned by ast_strip_quoted() instead.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366597 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-15 23:37:51 +00:00
Jonathan Rose
923a66d764 chan_sip: Check the right channel's host address for directmediapermit/deny
Prior to this patch, when checking the addresses for directmediapermit and
directmediadeny, Asterisk would check the host address of the channel
permit/deny was specified, which differs from the expectations of both
our users and the development team. Instead, directmediapermit/deny now
checks against the address of the channel that the peer with the ACL is
connected to.

(issue AST-876)
Review: https://reviewboard.asterisk.org/r/1899/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366547 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-15 20:14:05 +00:00
Mark Michelson
2deb898bcd Fix two more coverity constant expression result findings.
These correspond to findings 0 and 1 in the core findings of
ASTERISK-19649.

After contacting Mark Spencer, he was unsure of what the intent
behind these lines of code were, so they are being axed.

For Asterisk 1.8 and 10, the output of debugging DUNDi frames
will not be changed, but for trunk the "Retry" portion will
be omitted since it does not properly distinguish retransmissions
from initial frames.

(closes issue ASTERISK-19649)
Reported by Matthew Jordan



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366409 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-14 19:57:42 +00:00
Mark Michelson
fd520e0d19 Fix broken reinvite glare scenario.
To make a long story short, reinvite glares were broken
because Asterisk would invert the To and From headers
when ACKing a 491 response.

The reason was because the initreq of the dialog was being
changed to the incoming glared reinvite instead of being
set to the outgoing glared reinvite. This change has three
parts

* In handle_incoming, we never will reject an ACK because it
has a to-tag present, even if we think the request may be out
of dialog.
* In handle_request_invite, we do not change the initreq when
receiving a reinvite to which we will respond with a 491.
* In handle_request_invite, several superflous settings up
pendinginvite have been removed since this is dones automatically
by transmit_response_reliable

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366389 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-14 19:10:20 +00:00
Russell Bryant
dac30f1523 format_mp3: Fix a possible crash in mp3_read().
This patch fixes a potential crash in mp3_read() by not assuming that
dbuf has enough data to finish filling up the output buffer.  The patch
also makes sure that the dbuf state gets reset after we know we read
everything out of it already.

In passing, this patch includes some other cleanups of this module,
including stripping trailing whitespace, formatting fixes based on
coding guidelines, and removing a number of unused members from the
private state struct.

(closes issue ASTERISK-19761)
Reported by: Chris Maciejewsk
Tested by: Chris Maciejewsk


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366296 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-11 23:53:38 +00:00
Richard Mudgett
91154705df * Made ast_change_name() hold the channels container lock while changing the channel name.
* Eliminate redundant list not empty check in clone_variables().


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366240 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-10 23:38:16 +00:00
Kinsey Moore
a94fcae21b Resolve FORWARD_NULL static analysis warnings
This resolves core findings from ASTERISK-19650 numbers 0-2, 6, 7, 9-11, 14-20,
22-24, 28, 30-32, 34-36, 42-56, 82-84, 87, 89-90, 93-102, 104, 105, 109-111,
and 115. Finding numbers 26, 33, and 29 were already resolved.  Those skipped
were either extended/deprecated or in areas of code that shouldn't be
disturbed.

(Closes issue ASTERISK-19650)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366167 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-10 20:50:47 +00:00
Jonathan Rose
ae528efea3 Coverity Report: Fix issues for error type CHECKED_RETURN for core
(issue ASTERISK-19658)
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/1905/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366094 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-10 16:47:17 +00:00
Mark Michelson
965dd3a7d8 Close the proper tcptls_session when session creation fails.
(issue AST-998)
Reported by: Thomas Arimont
Tested by: Thomas Arimont



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-10 16:10:18 +00:00
Jonathan Rose
a7650f8002 Coverity Report: Fix issues for error type UNINIT in Core supported modules
(issue ASTERISK-19652)
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/1909/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@366048 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-10 15:35:33 +00:00
Jonathan Rose
50b43947f1 Block on frameout if the hardware has enough samples to complete a frame.
Fixes some problems with skipping audio in elaborate scenarios involving
multiple codecs by making codec_dahdi operate in a more synchronous
fashion similar to codec_g729. This change also fixes the use of file
conversion tools from Asterisk's CLI. This change may cause the thread
responsible for transcoding audio to block briefly (Shaun Ruffell describes
this as 'several milliseconds') while waiting for the hardware transcoder.

(closes issue ASTERISK-19643)
reported by: Shaun Ruffell
Patches:
	0001-codec_dahdi-Block-on-frameout-the-hardware-has-enoug.patch
	uploaded by Shaun Ruffell (license 5417)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365989 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-09 19:10:17 +00:00
Mark Michelson
3a9a0b9cea Prevent sip_pvt refleak when an ast_channel outlasts its corresponding sip_pvt.
chan_sip was coded under the assumption that a SIP dialog with an owner channel
will always be destroyed after the owner channel has been hung up.

However, there are situations where the SIP dialog can time out and auto destruct
before the corresponding channel has hung up. A typical example of this would be
if the 'h' extension in the dialplan takes a long time to complete. In such cases,
__sip_autodestruct() would complain about the dialog being auto destroyed with
an owner channel still in place. The problem is that even once the owner channel
was hung up, the sip_pvt would still be linked in its ao2_container because nothing
would ever unlink it.

The fix for this is that if __sip_autodestruct() is called for a sip_pvt that still
has an owner channel in place, the destruction is rescheduled for 10 seconds in the
future. This will continue until the owner channel is finally hung up.

(closes issue ASTERISK-19425)
reported by David Cunningham
Patches:
    ASTERISK-19425.patch uploaded by Mark Michelson (License #5049)

(closes issue ASTERISK-19455)
reported by Dean Vesvuio
Tested by Dean Vesvuio



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365896 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-09 16:11:52 +00:00
Richard Mudgett
55980149c7 * Fix FollowMe memory leak on error paths in app_exec().
* Fix FollowMe leaving recorded caller name file on error paths in
app_exec().

* Use correct buffer dimension define in struct call_followme.moh[] and
struct fm_args.namerecloc[].  This fixes unexpected namerecloc filename
length restriction.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365692 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-08 20:14:30 +00:00
Richard Mudgett
e163e37e24 * Fix accept/decline DTMF buffer overwrite in FollowMe.
* Made use MAX_YN_STRING define to make all accept/decline DTMF buffers
the same size.  Just using 20 isn't good enough when someone didn't get
the memo.

* Fix stupid use of a global variable in FollowMe.  (ynlongest)

* Fix bit field declarations in FollowMe.

* Fix FollowMe n option documentation.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365631 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-08 18:02:29 +00:00
Mark Michelson
2cb787371c Send more accurate identification information in dialog-info SIP NOTIFYs.
This uses the calling channel's caller ID and connected line information
to populate the remote and local identities in the dialog-info NOTIFY when
an extension is ringing.

There is a bit of an oddity here, and that is that we seed the remote target
with the To header of the outbound call rather than the from header. This
is because it was reported that seeding with the from header caused hints
to be broken with certain SNOM devices. A comment has been added to the code
to explain this.

(closes issue ASTERISK-16735)
reported by Maciej Krajewski
patches:
    local_remote_hint2.diff uploaded by Mark Michelson (license #5049)
	16735_tweak1.diff uploaded by Mark Michelson (license #5049)
Tested by Niccolo Belli



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-08 15:48:10 +00:00
Richard Mudgett
4547358e75 Fix type punned compiler warning in test_config.c
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365476 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-07 18:40:35 +00:00
Matthew Jordan
2c8f87dcb4 Support VoiceMail d() option when extension does not exist in channel's context
The VoiceMail d([c]) option is documented to accept digits for a new extension
in context <c>, if played during the greeting.  This option works fine if the
extension being redirected to has an extension with the same initial digit in
the channel's current context.  If that digit did not happen to exist in some
extension, a dialplan match would fail and the user would not be redirected.

This patch fixes it such that if the <c> option is used, the extensions are
matched in that context as opposed to the caller's original context.

(closes issue ASTERISK-18243)
Reported by: mjordan
Tested by: mjordan

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365474 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-07 18:36:54 +00:00
Mark Michelson
eafb430562 Fix findings 0-3, 5, and 8 for Coverity MISSING_BREAK errors.
(Issue ASTERISK-19662)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365460 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-07 16:01:28 +00:00
Kinsey Moore
83d3444284 Fix many issues from the NULL_RETURNS Coverity report
Most of the changes here are trivial NULL checks.  There are a couple
optimizations to remove the need to check for NULL and outboundproxy parsing
in chan_sip.c was rewritten to avoid use of strtok.  Additionally, a bug was
found and fixed with the parsing of outboundproxy when "outboundproxy=," was
set.

(Closes issue ASTERISK-19654)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365398 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-04 22:12:55 +00:00
Richard Mudgett
186a89e99c Fix local channel chains optimizing themselves out of a call.
* Made chan_local.c:check_bridge() check the return value of
ast_channel_masquerade().  In long chains of local channels, the
masquerade occasionally fails to get setup because there is another
masquerade already setup on an adjacent local channel in the chain.

* Made the outgoing local channel (the ;2 channel) flush one voice or
video frame per optimization attempt.

* Made sure that the outgoing local channel also does not have any frames
in its queue before the masquerade.

* Made do the masquerade immediately to minimize the chance that the
outgoing channel queue does not get any new frames added and thus
unconditionally flushed.

* Made block indication -1 (Stop tones) event when the local channel is
going to optimize itself out.  When the call is answered, a chain of local
channels pass down a -1 indication for each bridge.  This blizzard of -1
events really slows down the optimization process.

(closes issue ASTERISK-16711)
Reported by: Alec Davis
Tested by: rmudgett, Alec Davis
Review: https://reviewboard.asterisk.org/r/1894/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365313 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-04 16:24:34 +00:00
Mark Michelson
c6d9524482 Fix core FINDING 2, FINDING 3, and FINDING 4 from Coverity's CONSTANT_EXPRESSION_RESULT report.
These three all are in RTP code that attempts to print the number of sequence number cycles
in an RTCP RR report. The code was masking out the upper 16 bits and then shifting the number
right by 16 bits. This led to an all zero result in all cases. The fix is to do the shift without
the bit masking.

(issue ASTERISK-19649)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-04 15:48:44 +00:00