]> git.ipfire.org Git - thirdparty/asterisk.git/log
thirdparty/asterisk.git
11 years agoBackport r377688 to certified 1.8 to resolve astdb corruption issue.
Jonathan Rose [Wed, 21 Aug 2013 22:55:29 +0000 (22:55 +0000)] 
Backport r377688 to certified 1.8 to resolve astdb corruption issue.

(issue AST-1172)
Reported by: Guenther Kelleter

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@397364 65c4cc65-6c06-0410-ace0-fbb531ad65f3

11 years agoPrevent a crash on outbound SIP MESSAGE requests.
Mark Michelson [Wed, 21 Aug 2013 14:33:38 +0000 (14:33 +0000)] 
Prevent a crash on outbound SIP MESSAGE requests.

If a From header on an outbound out-of-call SIP MESSAGE were
malformed, the result could crash Asterisk.

In addition, if a From header on an incoming out-of-call SIP
MESSAGE request were malformed, the message was happily accepted
rather than being rejected up front. The incoming message path
would not result in a crash, but the behavior was bad nonetheless.

(closes issue ASTERISK-22185)
reported by Zhang Lei

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@397253 65c4cc65-6c06-0410-ace0-fbb531ad65f3

11 years agoFix invalid access to disposed memory in main/data unit test
Matthew Jordan [Tue, 20 Aug 2013 01:21:25 +0000 (01:21 +0000)] 
Fix invalid access to disposed memory in main/data unit test

It is not safe to iterate over a macro'd list of ao2 objects, deref them such
that the item's destructor is called, and leave them in the list. The list
macro to iterate over items requires the item to be a valid allocated object
in order to proceed to the next item; with MALLOC_DEBUG on the corruption of
the linked list is caught in the crash.

This patch fixes the invalid access to free'd memory by removing the ao2 item
from the list before de-refing it.

Note that this is a backport of r396915 from Asterisk trunk.
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@396971 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix VM snapshot handling for combined INBOX.
Jason Parker [Wed, 15 May 2013 14:19:37 +0000 (14:19 +0000)] 
Fix VM snapshot handling for combined INBOX.

The snapshot API contains an option that allow for combining of new
and old messages within a single snapshot. New messages, however,
include options beyond just 'INBOX' - it also includes the Urgent
folder. A previous patch that combined INBOX and Urgent accidentally
impacted snapshots that attempted to gain messages from just the Old
folder. This patch fixes the snapshot gathering such that the API
returns the appropriate messages for the folder selected, with and
without the combine option.

This should make it more clear about what's happening.

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@388814 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoAllow mISDN to send PROGRESS messsage.
Richard Mudgett [Fri, 10 May 2013 22:21:17 +0000 (22:21 +0000)] 
Allow mISDN to send PROGRESS messsage.

* Made isdn_msg_parser.c build a progress message with the mandatory
progress indicator IE.  (The mISDNuser NT state machine rejected sending
the incomplete message.)

Note: The associated mISDN and mISDNuser patches respectively are viewable
here:
http://svnview.digium.com/svn/thirdparty?view=rev&rev=200
http://svnview.digium.com/svn/thirdparty?view=rev&rev=201

(closes issue AST-1153)
Reported by: Guenther Kelleter
Patches:
      progress-chan_misdn.diff (license #6372) patch uploaded by Guenther Kelleter
      progress-misdn.diff (license #6372) mISDN patch uploaded by Guenther Kelleter
      progress-misdnuser.diff (license #6372) mISDNuser patch uploaded by Guenther Kelleter
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@388444 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoAST-2013-002: Prevent denial of service in HTTP server
Matthew Jordan [Wed, 27 Mar 2013 18:31:04 +0000 (18:31 +0000)] 
AST-2013-002: Prevent denial of service in HTTP server

AST-2012-014, fixed in January of this year, contained a fix for Asterisk's
HTTP server for a remotely-triggered crash. While the fix put in place fixed
the possibility for the crash to be triggered, a denial of service vector still
exists with that solution if an attacker sends one or more HTTP POST requests
with very large Content-Length values. This patch resolves this by capping
the Content-Length at 1024 bytes. Any attempt to send an HTTP POST with
Content-Length greater than this cap will not result in any memory allocation.
The POST will be responded to with an HTTP 413 "Request Entity Too Large"
response.

This issue was reported by Christoph Hebeisen of TELUS Security Labs

(closes issue ASTERISK-20967)
Reported by: Christoph Hebeisen
patches:
  AST-2013-002-1.8.diff uploaded by mmichelson (License 5049)
  AST-2013-002-10.diff uploaded by mmichelson (License 5049)
  AST-2013-002-11.diff uploaded by mmichelson (License 5049)

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@384108 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoAST-2013-003: Prevent username disclosure in SIP channel driver
Matthew Jordan [Wed, 27 Mar 2013 15:19:48 +0000 (15:19 +0000)] 
AST-2013-003: Prevent username disclosure in SIP channel driver

When authenticating a SIP request with alwaysauthreject enabled, allowguest
disabled, and autocreatepeer disabled, Asterisk discloses whether a user
exists for INVITE, SUBSCRIBE, and REGISTER transactions in multiple ways. The
information is disclosed when:
 * A "407 Proxy Authentication Required" response is sent instead of a
   "401 Unauthorized" response
 * The presence or absence of additional tags occurs at the end of "403
   Forbidden" (such as "(Bad Auth)")
 * A "401 Unauthorized" response is sent instead of "403 Forbidden" response
   after a retransmission
 * Retransmission are sent when a matching peer did not exist, but not when a
   matching peer did exist.

This patch resolves these various vectors by ensuring that the responses sent
in all scenarios is the same, regardless of the presence of a matching peer.

This issue was reported by Walter Doekes, OSSO B.V. A substantial portion of
the testing and the solution to this problem was done by Walter as well - a
huge thanks to his tireless efforts in finding all the ways in which this
setting didn't work, providing automated tests, and working with Kinsey on
getting this fixed.

(closes issue ASTERISK-21013)
Reported by: wdoekes
Tested by: wdoekes, kmoore
patches:
  AST-2013-003-1.8 uploaded by kmoore, wdoekes (License 6273, 5674)
  AST-2013-003-10 uploaded by kmoore, wdoekes (License 6273, 5674)
  AST-2013-003-11 uploaded by kmoore, wdoekes (License 6273, 5674)

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@383991 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix comparison of presence state in event subsystem.
Jason Parker [Mon, 4 Mar 2013 20:54:12 +0000 (20:54 +0000)] 
Fix comparison of presence state in event subsystem.

Several new IEs were not given types (or names), causing the comparison
function to improperly succeed.  This adds those.

(closes issue AST-1128)

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@382389 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoLet channels joining a MeetMe conference opt out of the denoiser
Matthew Jordan [Thu, 28 Feb 2013 16:49:46 +0000 (16:49 +0000)] 
Let channels joining a MeetMe conference opt out of the denoiser

For some channel drivers, specifically those that have a varying rate in the
number of audio samples, the audio quality for a MeetMe conference can be
exceedingly poor. This is due to a unilateral application of the DENOISE
function in func_speex to channels joining the conference.

The denoiser function in the speex library is initialized with the number of
audio samples in each sample that will be provided to it. If the number of
audio samples changes, the denoiser has to be thrown away and re-initialized.

While this could be worked around by removing func_speex, that doesn't help
if you actually use the denoiser with other channels on the system.

This patches does the following:
 * Checks for the presence of func_speex as opposed to codec_speex when
   determining if the DENOISE function is present (which is where the function
   is actually implemented)
 * Adds an option to MeetMe 'n' that causes the denoiser to not be applied
   to a channel when it joins. This keeps the current behavior the default, but
   let's users disable the denoiser if it causes problems on their system.

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

(closes issue AST-1062)
Reported by: Thomas Arimont
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@382228 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoLet vm_mailbox_snapshot_create's combine option apply to "Urgent" as well
Matthew Jordan [Wed, 20 Feb 2013 19:10:42 +0000 (19:10 +0000)] 
Let vm_mailbox_snapshot_create's combine option apply to "Urgent" as well

The vm_mailbox_snapshot_create function has an option that combines the
contents of INBOX and Old into a single snapshot. The intent of this is that
both 'new' messages and 'deleted' messages are given in a single snapshot, as
some applications prefer this view of the voicemail world. Unfortunately, the
initial implementation ignored the "Urgent" folder. The "Urgent" folder is a
pseudo-INBOX, in that new messages left with the 'U' flag will be placed in
that folder as opposed to INBOX. Thus, the option failed the intent with which
it was added.

This patch makes it so that the "Urgent" folder is included in the snapshot
when that option is used.

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@381834 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix XML encoding of 'identity display' in NOTIFY messages, continued.
David M. Lee [Mon, 14 Jan 2013 15:17:44 +0000 (15:17 +0000)] 
Fix XML encoding of 'identity display' in NOTIFY messages, continued.

When r378933 was merged into 1.8, it should have also escaped
remote_display, since it will have the same XML encoding problem when
the caller/callee roles are reversed.

(closes issue ABE-2902)
Reported by: Guenther Kelleter
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@379002 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix XML encoding of 'identity display' in NOTIFY messages.
David M. Lee [Sat, 12 Jan 2013 07:02:48 +0000 (07:02 +0000)] 
Fix XML encoding of 'identity display' in NOTIFY messages.

XML encoding in chan_sip is accomplished by naively building the XML
directly from strings. While this usually works, it fails to take into
account escaping the reserved characters in XML.

This patch adds an 'ast_xml_escape' function, which works similarly to
'ast_uri_encode'. This is used to properly escape the local_display
attribute in XML formatted NOTIFY messages.

Several things to note:
 * The Right Thing(TM) to do would probably be to replace the
   ast_build_string stuff with building an ast_xml_doc. That's a much
   bigger change, and out of scope for the original ticket, so I
   refrained myself.
 * It is with great sadness that I wrote my own ast_xml_escape
   function. There's one in libxml2, but it's knee-deep in
   libxml2-ness, and not easily used to one-off escape a
   string.
 * I only escaped the string we know is causing problems
   (local_display). At least some of the other strings are
   URI-encoded, which should be XML safe. Rather than figuring out
   what's safe and escaping what's not, it would be much cleaner to
   simply build an ast_xml_doc for the messages and let the XML
   library do the XML escaping. Like I said, that's out of scope.

(closes issue ABE-2902)
Reported by: Guenther Kelleter
Tested by: Guenther Kelleter
Review: http://reviewboard.digium.internal/r/365/

........

Merged revision 378919 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@378936 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoPrevent exhaustion of system resources through exploitation of event cache
Matthew Jordan [Wed, 2 Jan 2013 18:22:39 +0000 (18:22 +0000)] 
Prevent exhaustion of system resources through exploitation of event cache

Asterisk maintains an internal cache for devices in the event subsystem. The
device state cache holds the state of each device known to Asterisk, such that
consumers of device state information can query for the last known state for
a particular device, even if it is not part of an active call. The concept of
a device in Asterisk can include entities that do not have a physical
representation. One way that this occurred was when anonymous calls are allowed
in Asterisk. A device was automatically created and stored in the cache for
each anonymous call that occurred; this was possible in the SIP and IAX2
channel drivers and through channel drivers that utilized the
res_jabber/res_xmpp resource modules (Gtalk, Jingle, and Motif). These devices
are never removed from the system, allowing anonymous calls to potentially
exhaust a system's resources.

This patch changes the event cache subsystem and device state management to
no longer cache devices that are not associated with a physical entity.

(issue ASTERISK-20175)
Reported by: Russell Bryant, Leif Madsen, Joshua Colp
Tested by: kmoore
patches:
  event-cachability-3.diff uploaded by jcolp (license 5000)
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@378333 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoResolve crashes due to large stack allocations when using TCP
Matthew Jordan [Wed, 2 Jan 2013 16:00:06 +0000 (16:00 +0000)] 
Resolve crashes due to large stack allocations when using TCP

Asterisk had several places where messages received over various network
transports may be copied in a single stack allocation. In the case of TCP,
since multiple packets in a stream may be concatenated together, this can
lead to large allocations that overflow the stack.

This patch modifies those portions of Asterisk using TCP to either
favor heap allocations or use an upper bound to ensure that the stack will not
overflow:
 * For HTTP, the allocation is now a heap allocation instead of a stack
   allocation
 * For XMPP (in res_jabber), the allocation has been eliminated since it was
   unnecesary.

Note that the HTTP portion of this issue was independently found by Brandon
Edwards of Exodus Intelligence.

(issue ASTERISK-20658)
Reported by: wdoekes, Brandon Edwards
Tested by: mmichelson, wdoekes
patches:
  ASTERISK-20658_res_jabber.c.patch uploaded by mmichelson (license 5049)
  issueA20658_http_postvars_use_malloc2.patch uploaded by wdoekes (license 5674)
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@378290 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agochan_misdn: Fix sending RELEASE_COMPLETE in response to SETUP.
Richard Mudgett [Fri, 30 Nov 2012 21:45:04 +0000 (21:45 +0000)] 
chan_misdn: Fix sending RELEASE_COMPLETE in response to SETUP.

Fix sending a RELEASE_COMPLETE in response to a SETUP if chan_misdn does
not have a B channel available to assign to the call.

(closes issue ABE-2869)
Reported by: Guenther Kelleter
Patches:
      setup-reject_2.diff (license #6372) patch uploaded by Guenther Kelleter
      Modified

........

Merged revision 376949 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@376955 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix SendDTMF crash and channel reference leak using channel name parameter.
Matthew Jordan [Mon, 19 Nov 2012 22:43:03 +0000 (22:43 +0000)] 
Fix SendDTMF crash and channel reference leak using channel name parameter.

The SendDTMF channel name parameter has two issues.
1) Crashes if the channel name does not exist.
2) Leaks a channel reference if the channel is the current channel.
Problem introduced by ASTERISK-15956.

* Updated SendDTMF documentation.

* Renamed app to senddtmf_name and tweaked the type.
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@376501 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix Incrementing Sequence Number For Retransmitted DTMF End Packets
Joshua Colp [Fri, 16 Nov 2012 21:24:35 +0000 (21:24 +0000)] 
Fix Incrementing Sequence Number For Retransmitted DTMF End Packets

In Asterisk 1.4+, a fix was put in place to increment the sequence number for
retransmitted DTMF end packets.  With the introduction of the RTP engine API in
1.8, the sequence number was no longer being incremented.  This patch fixes this
regression as well as cleans up a few lines that were not doing anything.

(closes issue ASTERISK-20295)
Reported by: Nitesh Bansal
Tested by: Michael L. Young
Patches:
01_rtp_event_seq_num.patch uploaded by Nitesh Bansal (license 6418)
asterisk-20295-dtmf-fix-cleanup.diff uploaded by Michael L. Young (license 5026)

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

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@376409 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoMerged revisions 376302 from http://svn.asterisk.org/svn/asterisk/certified/branches...
Jonathan Rose [Thu, 15 Nov 2012 21:53:42 +0000 (21:53 +0000)] 
Merged revisions 376302 from http://svn.asterisk.org/svn/asterisk/certified/branches/1.8.11

........
  r376302 | jrose | 2012-11-15 15:48:33 -0600 (Thu, 15 Nov 2012) | 11 lines

  app_queue: Fix a lock that was being held forever caused by a merging mistake

  r375591 merged with conflicts and an oversight resulted in an unlock being
  missed which resulted in a deadlock when updating realtime members in queues.
  This patch adds that unlock back in.

  (closes issue AST-1035)
  Reported by: Steve Pitts
  Patches:
      certified_1.8.11_oops_missed_an_unlock.diff uploaded by Jonathan Rose (license 6182)
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@376303 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix compiler warnings.
Richard Mudgett [Fri, 2 Nov 2012 18:59:07 +0000 (18:59 +0000)] 
Fix compiler warnings.

gcc (GCC) 4.2.4 has problems casting away constness.
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375631 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoMultiple revisions 375519-375524
Richard Mudgett [Fri, 2 Nov 2012 18:54:11 +0000 (18:54 +0000)] 
Multiple revisions 375519-375524

........
  r375519 | rmudgett | 2012-10-30 16:06:15 -0500 (Tue, 30 Oct 2012) | 11 lines

  chan_misdn: Timer primitives must be handled first.

  The frm->addr is a different "address space" than the stack/instance
  address of other Lx primitives.  The test for B channel instance address
  could fail.

  Patches:
patch01_timers.diff (license #6372) patch uploaded by Guenther Kelleter

  JIRA ABE-2888

  ........
  r375520 | rmudgett | 2012-10-30 16:14:58 -0500 (Tue, 30 Oct 2012) | 10 lines

  chan_misdn: Free memory in error paths and other memory leaks.

  The one line commented with BUG is not easily fixable because there is no
  de-init function one can call.

  Patches:
patch02_memory.diff (license #6372) patch uploaded by Guenther Kelleter

  JIRA ABE-2888

  ........
  r375521 | rmudgett | 2012-10-30 16:38:41 -0500 (Tue, 30 Oct 2012) | 14 lines

  chan_misdn: ISDN NT L2 de-establish/establish

  * An NT-PTMP cannot de/establish L2 since it doesn't know the TEIs.
  * On NT-PTP L2 is started when L1 is finally active in handle_l1.
  * L2 deactivation logging cleanup.
  * L2 aggregate link status is unknown for NT-PTMP, show as "UNKN".
  * Removed unused functions and code for L2 handling.

  Patches:
patch03_L2estab.diff (license #6372) patch uploaded by Guenther Kelleter
Modified

  JIRA ABE-2888

  ........
  r375522 | rmudgett | 2012-10-30 16:56:14 -0500 (Tue, 30 Oct 2012) | 22 lines

  chan_misdn: Fix broken upper_id/lower_id usage.

  Sending PH prim via lower_id layer (3 or 1) simply does not work.  For TE
  (3) it returns an error (len=-6) which is not evaluated by handle_l1(), so
  the L1 layer status ends up wrong.  Instead PH must be sent via L4, only
  then does it reach L1 without an error message.

  And NT PH prims only reach L1 when they are sent to layer 2 id.
  --> use upper_id to send PH primitives.

  * Check for errors in PH_(DE)ACTIVATE | CONFIRM.
  * Debug messages are improved.

  * The lower_id is now not used for anything, except: Why is lower_id layer
  deleted when it wasn't created?  I removed this code since it looks very
  wrong.

  Patches:
patch04_l1activation.diff (license #6372) patch uploaded by Guenther Kelleter

  JIRA ABE-2888

  ........
  r375523 | rmudgett | 2012-10-30 17:29:15 -0500 (Tue, 30 Oct 2012) | 31 lines

  chan_misdn: Fix loss of B channels if L1 is down.

  If you make 2 calls out an NT PTMP port which is not connected to any
  phone, the B channel associated with that call becomes unusable until
  Asterisk is restarted.

  The problem is the EVENT_SETUP is queued when L1 is not up in
  misdn_lib_send_event().  If L1 cannot be activated the event won't be
  dequeued.  It gets even worse when the call is hung up.  The queued
  EVENT_SETUP will be overwritten by an EVENT_DISCONNECT.  The reserved B
  channel then will never be freed.  If later someone connects a phone to
  the port, L1 will eventually activate and the queued EVENT_DISCONNECT is
  sent down the stack.  However, it is ignored because it is the wrong call
  state.

  The real fix would be that activation and queueing for a new SETUP is done
  by the NT stack.  But since it doesn't, the workaround must be removed
  because it doesn't always work.

  Fix: The event is no longer queued but immediately sent to the stack.  If
  L1 cannot be activated, the L3 state machine that was started by the
  EVENT_SETUP will do its work, i.e.  a timeout will release the B channel
  properly.  The SETUP possibly cannot be sent the first time but is resent
  by T303 in case L1 could be activated.

  Patches:
patch05_bchan-loss.diff (license #6372) patch uploaded by Guenther Kelleter
Modified

  JIRA ABE-2888

........
  r375524 | rmudgett | 2012-10-30 18:26:05 -0500 (Tue, 30 Oct 2012) | 13 lines

  chan_misdn: Remove some calls to exit().

  Try proper cleanup when something goes wrong in misdn_lib_init().
  Especially do not call exit()!

  * Fix memory leak because stack_destroy() does not free the stack struct.

  Patches:
patch06_cleanup-init.diff (license #6372) patch uploaded by Guenther Kelleter
Modified

  JIRA ABE-2888
........

Merged revisions 375519-375524 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375630 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agocore: Fix a memory leak in app.c from an early return
Matthew Jordan [Fri, 2 Nov 2012 17:38:50 +0000 (17:38 +0000)] 
core: Fix a memory leak in app.c from an early return

ast_app_group_match_get_count allocates memory with the regcomp
function and we previously forgot to free it when bailing out
due to a regex compilation failure against category.

(closes issue AST-1018)
Reported by: Guenther Kelleter
Patches:
regcomp_memleak.diff uploaded by Guenther Kelleter (license 6372)
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375615 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agochan_dahdi: Fix segfault dereferencing a NULL tech_pvt.
Matthew Jordan [Fri, 2 Nov 2012 15:32:28 +0000 (15:32 +0000)] 
chan_dahdi: Fix segfault dereferencing a NULL tech_pvt.

The tech support customer was using the AMI Redirect action shortly after
a call was placed.  While the channel tried to do an ast_read(), the
masquerade resulting from the channel redirect took place.  The masquerade
in the middle of the ast_read() resulted in the segfault.

(closes issue AST-1025)
Reported by: Trey Blancher
Patches:
      jira_ast_1025_v1.8_v2.patch (license #5621) patch uploaded by rmudgett
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375592 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoMultiple revisions 375216,375242
Matthew Jordan [Fri, 2 Nov 2012 15:31:57 +0000 (15:31 +0000)] 
Multiple revisions 375216,375242

........
  r375216 | jrose | 2012-10-18 15:58:07 -0500 (Thu, 18 Oct 2012) | 12 lines

  app_queue: Make ordering of rrmemory/rrordered persist over add/remove members

  Prior to this patch, adding, removing or reloading  members to rrmemory would
  cause the order to become completely jumbled. Now it behaves more or less like
  rrordered other than the fact that it stores the members on a hash table rather
  than a linked list. This patch also prevents removal of members and member
  reloads from jumbling rrordered queues.

  (issue AST-989)
  Reported by: Thomas Arimont
  Review: https://reviewboard.asterisk.org/r/2164/
........
  r375242 | jrose | 2012-10-18 16:30:13 -0500 (Thu, 18 Oct 2012) | 8 lines

  app_queue: add upgrade notes for 375216

  Adds notes describing behavioral changes to rrmemory strategy caused by
  375216

  (issue AST-989)
  Reported by: Thomas Arimont
........

Merged revisions 375216,375242 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375591 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoMultiple revisions 372709,373165,373532,373652,374456
Matthew Jordan [Fri, 2 Nov 2012 15:27:56 +0000 (15:27 +0000)] 
Multiple revisions 372709,373165,373532,373652,374456

........
  r372709 | mjordan | 2012-09-08 20:19:21 -0500 (Sat, 08 Sep 2012) | 38 lines

  Only re-create an SRTP session when needed; respond with correct crypto policy

  In r356604, SRTP handling was fixed to accomodate multiple crypto keys in an
  SDP offer and the ability to re-create an SRTP session when the crypto keys
  changed.  In certain circumstances - most notably when a phone is put on
  hold after having been bridged for a significant amount of time - the act
  of re-creating the SRTP session causes problems for certain models of phones.
  The patch committed in r356604 always re-created the SRTP session regardless
  of whether or not the cryptographic keys changed.  Since this is technically
  not necessary, this patch modifies the behavior to only re-create the SRTP
  session if Asterisk detects that the remote key has changed.  This allows
  models of phones that do not handle the SRTP session changing to continue
  to work, while also providing the behavior needed for those phones that do
  re-negotiate cryptographic keys.

  In addition, in Asterisk 1.8 only, it was found that phones that offer
  AES_CM_128_HMAC_SHA1_32 will end up with no audio if the phone is the
  initiator of the call.  The phone will send an INVITE request specifying
  that AES_CM_128_HMAC_SHA1_32 be used for the cryptographic policy; Asterisk
  will set its policy to that value.  Unfortunately, when the call is Answered
  and a 200 OK is sent back to the UA, the policy sent in the response's SDP
  will be the hard coded value AES_CM_128_HMAC_SHA1_80.  This potentially
  results in Asterisk using the INVITE request's policy of
  AES_CM_128_HMAC_SHA1_32, while the phone uses Asterisk's response of
  AES_CM_128_HMAC_SHA1_80.  Hilarity ensues as both endpoints think the other
  is crazy.

  This patch fixes that by caching the policy from the request and responding
  with it.  Note that this is not a problem in Asterisk 10 and later, as the
  ability to configure the policy was added in that version.

  (issue ASTERISK-20194)
  Reported by: Nicolo Mazzon
  Tested by: Nicolo Mazzon

  Review: https://reviewboard.asterisk.org/r/2099
........
  r373165 | file | 2012-09-19 11:02:18 -0500 (Wed, 19 Sep 2012) | 10 lines

  Fix a regression where direct media was not permitted for calls using SIP INFO DTMF.

  A change was committed to fix direct media ACL support. This change wrongly assumed that
  only a single channel technology structure exists for chan_sip. This is in fact false as
  a second exists for calls using SIP INFO DTMF. The code which performs direct media ACL
  checking now checks for both the non-INFO DTMF and INFO DTMF channel technology structures.

  (closes issue ASTERISK-20409)
  Reported by: michele cicciotti privatewave
........
  r373532 | file | 2012-09-24 19:09:46 -0500 (Mon, 24 Sep 2012) | 5 lines

  Add missing checks that I neglected. The SIP technology and SIP info technology should be considered equal.

  (closes issue ASTERISK-20409)
  Reported by: michele cicciotti privatewave
........
  r373652 | twilson | 2012-09-25 12:21:19 -0500 (Tue, 25 Sep 2012) | 18 lines

  Properly handle UAC/UAS roles for SIP session timers

  The SIP session timer mechanism contains a mandatory 'refresher' parameter
  (included in the Session-Expires header) which is used in the session timer
  offer/answer signaling within a SIP Invite dialog. It looks like asterisk is
  interpreting the uac resp. uas role only as the initial role of client and
  server (caller is uac, callee is uas). The standard rfc 4028 however assigns
  the client role to the ((RE)-Invite) requester, the server role to the
  ((RE)-Invite) responder.

  This patch has Asterisk track the actual refresher as "us" or "them" as opposed
  to relying on just the configured "uas" or "uac" properties.

  (closes issue AST-922)
  Reported by: Thomas Airmont

  Review: https://reviewboard.asterisk.org/r/2118/
........
  r374456 | file | 2012-10-04 12:39:18 -0500 (Thu, 04 Oct 2012) | 14 lines

  Fix a regression from direct media ACLs where the directrtpsetup option no longer works.

  A check was added for direct media ACLs that immediately forbid remote bridging if there
  was no bridged channel. This caused directrtpsetup to no longer function as it needs this
  information before bridging actually occurs.

  Logic has now been adjusted so if there is no bridged channel a remote bridge will still
  be attempted.

  (closes issue ASTERISK-20511)
  Reported by: kristoff

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

Merged revisions 372709,373165,373532,373652,374456 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375590 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoMultiple revisions 371357,371469,371860,372628
Matthew Jordan [Fri, 2 Nov 2012 15:26:07 +0000 (15:26 +0000)] 
Multiple revisions 371357,371469,371860,372628

........
  r371357 | jrose | 2012-08-16 13:57:27 -0500 (Thu, 16 Aug 2012) | 8 lines

  chan_sip: Use pvt outgoing_call variable to set Remote-Party-ID Header

  Previously the pvt SIP_OUTGOING flag was used instead, which will frequently
  flip during reinvites.

  (closes issue AST-897)
  Reported by: Thomas Arimont
........
  r371469 | mjordan | 2012-08-17 13:51:43 -0500 (Fri, 17 Aug 2012) | 14 lines

  Fix memory leak in XML documentation

  When formatting documentation fields, the XML documentation parser calls
  xmldoc_get_formatted.  This function allocates a string buffer at the
  beginning of its routine.  Unfortunately, on certain code paths, it also
  calls xmldoc_string_cleanup, which assumes that it will create the string
  buffer.  The previously allocated string buffer is then leaked by the
  xmldoc_string_cleanup routine.

  Now: we don't do that.

  (closes issue AST-932)
  Reported by: Alexander Homig
........
  r371860 | rmudgett | 2012-08-29 13:22:24 -0500 (Wed, 29 Aug 2012) | 12 lines

  Fix hangup cause passthrough regression.

  The v1.8 -r369258 change to fix the F and F(x) action logic introduced a
  regression in passing the hangup cause from the called channel to the
  caller channel.

  (closes issue ASTERISK-20287)
  Reported by: Konstantin Suvorov
  Patches:
        app_dial_hangupcause.patch (license #6421) patch uploaded by Konstantin Suvorov (modified)
  Tested by: rmudgett
........
  r372628 | rmudgett | 2012-09-07 17:06:29 -0500 (Fri, 07 Sep 2012) | 5 lines

  Remove annoying unconditional debug message from INC/DEC functions.

  (closes issue AST-1001)
  Reported by: Guenther Kelleter
........

Merged revisions 371357,371469,371860,372628 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375589 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agochan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK
Matthew Jordan [Fri, 2 Nov 2012 15:24:06 +0000 (15:24 +0000)] 
chan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK

Under certain conditions, a SIP transaction involving directmedia wouldn't
trigger a re-invite because the SDP answer was included in an ACK instead
of in a message that we would have triggered the invite with. This patch
just queues a source change control frame if the dialog is using
directmedia when we find sdp for an ACK.

(closes issue AST-913)
Reported by: Thomas Arimont
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375588 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoMultiple revisions 370205,370273,370360
Matthew Jordan [Fri, 2 Nov 2012 15:23:12 +0000 (15:23 +0000)] 
Multiple revisions 370205,370273,370360

........
  r370205 | kpfleming | 2012-07-18 14:12:03 -0500 (Wed, 18 Jul 2012) | 18 lines

  Resolve severe memory leak in CEL logging modules.

  A customer reported a significant memory leak using Asterisk 1.8. They
  have tracked it down to ast_cel_fabricate_channel_from_event() in
  main/cel.c, which is called by both in-tree CEL logging modules
  (cel_custom.c and cel_sqlite3_custom.c) for each and every CEL event
  that they log.

  The cause was an incorrect assumption about how data attached to an
  ast_channel would be handled when the channel is destroyed; the data
  is now stored in a datastore attached to the channel, which is
  destroyed along with the channel at the proper time.

  (closes issue AST-916)
  Reported by: Thomas Arimont
  Review: https://reviewboard.asterisk.org/r/2053/
........
  r370273 | mjordan | 2012-07-19 17:00:14 -0500 (Thu, 19 Jul 2012) | 14 lines

  Fix compilation error when MALLOC_DEBUG is enabled

  To fix a memory leak in CEL, a channel datastore was introduced whose
  destruction function pointer was pointed to the ast_free macro.  Without
  MALLOC_DEBUG enabled this compiles as fine, as ast_free is defined as free.
  With MALLOC_DEBUG enabled, however, ast_free takes on a definition from a
  different place then utils.h, and became undefined.  This patch resolves this
  by using a reference to ast_free_ptr.  When MALLOC_DEBUG is enabled, this
  calls ast_free; when MALLOC_DEBUG is not enabled, this is defined to be
  ast_free, which is defined to be free.

  (issue AST-916)
  Reported by: Thomas Arimont
........
  r370360 | kpfleming | 2012-07-23 09:41:03 -0500 (Mon, 23 Jul 2012) | 10 lines

  Free any datastores attached to dummy channels.

  Revision 370205 added the use of a datastore attached to a dummy channel to
  resolve a memory leak, but ast_dummy_channel_destructor() in this branch did
  not free datastores, resulting in a continued (but slightly smaller) memory
  leak. This patch backports the change to free said datastores from the Asterisk
  trunk.

  (related to issue AST-916)
........

Merged revisions 370205,370273,370360 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375587 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoHelp mitigate potential reinvite glare scenarios.
Matthew Jordan [Fri, 2 Nov 2012 14:50:39 +0000 (14:50 +0000)] 
Help mitigate potential reinvite glare scenarios.

When Asterisk servers are set up back-to-back, and
direct media is to be used betweeen endpoints, it is
fairly common for the two Asterisk servers to send
direct media reinvites to each other simultaneously.
This results in 491s and ACKs being exchanged between
the servers. While the media eventually gets set up
properly, the problem is that there can be a noticeable
delay for the streams to stabilize.

This patch adds a new directmedia option called "outgoing".
With this set, an immediate direct media reinvite will only
be sent if the call direction is outgoing. For incoming
dialogs, an immediate direct media reinvite will not be sent,
but further "reactionary" direct media reinvites may be sent.

For those who are having some deja vu, that's because this
patch was originally committed to trunk since there is a
new configuration option added. After seeing a bug report
about audio being slow to set up on SIP calls, it became
apparent that this patch would be the best solution for
resolving the issue. The patch is unintrusive and will
have no effect unless the option is explicitly enabled.

(closes issue AST-896)
reported by Thomas Arimont

(closes issue ASTERISK-19857)
reported by Matt Jordan
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375585 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoResolve memory leaks in TLS initialization and TLS client connections
Matthew Jordan [Fri, 2 Nov 2012 14:33:35 +0000 (14:33 +0000)] 
Resolve memory leaks in TLS initialization and TLS client connections

This patch resolves two sources of memory leaks when using TLS in Asterisk:
1) It removes improper initialization (and multiple re-initializations) of
   portions of the SSL library.  Asterisk calls SSL_library_init and
   SSL_load_error_strings during SSL initialization; collectively this
   obviates the need for calling any of the following during initialization
   or client connection handling:
   * ERR_load_crypto_strings (handled by SSL_load_error_strings)
   * OpenSSL_add_all_algorithms (synonym for SSL_library_init)
   * SSLeay_add_ssl_algorithms (synonym for SSL_library_init)
2) Failure to completely clean up all memory allocated by Asterisk and by
   the SSL library for TLS clients.  This included not freeing the SSL_CTX
   object in the SIP channel driver, as well as not clearing the error
   stack when the TLS client exited.

Note that these memory leaks were found by Thomas Arimont, and this patch
was essentially written by him with some minor tweaks.

(closes issue AST-889)
Reported by: Thomas Arimont
Tested by: Thomas Arimont
patches:
  (bugAST-889.patch) by Thomas Arimont (license 5525)

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

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@375584 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix incorrect billing duration reported when batch mode is enabled
Matthew Jordan [Thu, 11 Oct 2012 15:46:58 +0000 (15:46 +0000)] 
Fix incorrect billing duration reported when batch mode is enabled

Similar to r369351, the billing duration can be skewed when batch mode is
enabled.  This happened much more rarely than the duration, as it only
occured when the call was answered (thereby indicating an actual answer
time) and immediately hung up on (indicating a billsec of 0).  Since
a billing time of '0' can either mean that the call immediately ended
or that the CDR was improperly answered, we have to use additional information
to know whether or not we can trust the CDR billsec value.  Prior to this
patch, we looked to see if we had a valid answer time.  If we did, and
billsec was zero, we used the current time to calculate what billsec value
we could from the CDR being written.  If batch mode is enabled, this will
incorrectly report a billsec value being much greater than the actual
duration of the call.

Instead of relying on the presence of an answer time to know whether or not
we can re-calculate the billsec for the CDR, we now also use the presence
of the CDR's end time to know if we need to re-calculate or whether we can
trust the billsec value that we have.  This prevents erroneous jumps in the
billsec value, while still making sure that in the worst case, some billing
time will be calculated.

(closes issue AST-1016)
Reported by: Thomas Arimont
Tested by: Thomas Arimont
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@374848 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoapp_queue: Made pass connected line updates from the caller to ringing queue members.
Richard Mudgett [Wed, 10 Oct 2012 21:16:14 +0000 (21:16 +0000)] 
app_queue: Made pass connected line updates from the caller to ringing queue members.

Party A calls Party B
Party B puts Party A on hold.
Party B calls a queue.
Ringing queue member D sees Party B identification.
Party B transfers Party A to the queue.
Queue member D does not get a connected line update for Party A.
Queue member D answers the call and still sees Party B information.

However, if Party A later transfers the call to Party C then queue member
D gets a connected line update for Party C.

* Made pass connected line updates from the caller to queue members while
the queue members are ringing.

(closes issue AST-1017)
Reported by: Thomas Arimont

(closes issue ABE-2886)
Reported by: Thomas Arimont
Tested by: rmudgett

........

Merged revisions 374801 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@374807 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoImprove AMI long line error handling
David M. Lee [Fri, 5 Oct 2012 20:12:49 +0000 (20:12 +0000)] 
Improve AMI long line error handling

In AMI's parser, when it receives a long line (> 1024 characters), it discards
that line, but continues to process the message normally.

Typically, this is not a problem because a) who has lines that long and b)
usually a discarded line results in an invalid message. But if that line is
specifying an optional field, then the message will be processed, you get a
'Response: Success', but things don't work the way you expected them to.

This patch changes the behavior when a line-too-long parse error occurs.

* Changes the log message to avoid way-too-long (and truncated anyways) log
  messages
* Adds a 'parsing' status flag to Response: Success
* Sets parsing = MESSAGE_LINE_TOO_LONG if, well, a line is too long
* Responds with an appropriate error if parsing != MESSAGE_OKAY

(closes issue AST-961)
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/2142/

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@374569 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoMultiple revisions 370563,374536
Richard Mudgett [Fri, 5 Oct 2012 19:02:09 +0000 (19:02 +0000)] 
Multiple revisions 370563,374536

........
  r370563 | rmudgett | 2012-07-30 11:47:19 -0500 (Mon, 30 Jul 2012) | 2 lines

  Release B channel allocation on error path in chan_misdn.
........
  r374536 | rmudgett | 2012-10-05 13:20:01 -0500 (Fri, 05 Oct 2012) | 159 lines

  Merged revisions 374515-374535 from
  https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier

  ................
    r374515 | rmudgett | 2012-10-04 17:52:36 -0500 (Thu, 04 Oct 2012) | 10 lines

    chan_misdn: Remove some deadcode

    * Made setup_bc() static.

    Patches:
   patch1_unused-code.diff (license #6372) patch uploaded by Guenther Kelleter
   Modified

    JIRA ABE-2882

  ................
    r374516 | rmudgett | 2012-10-04 18:01:01 -0500 (Thu, 04 Oct 2012) | 7 lines

    chan_misdn: Remove unused bchan states

    Patches:
   patch2_unused-states.diff (license #6372) patch uploaded by Guenther Kelleter

    JIRA ABE-2882

  ................
    r374517 | rmudgett | 2012-10-04 18:17:51 -0500 (Thu, 04 Oct 2012) | 16 lines

    chan_misdn: Remove unnecessary null pointer checks and checks for stack->nt

    * cleanup_bc() is always called with valid bc (or it would've crashed
    before).

    * Value of stack->nt is known in advance at some places.

    * Rename handle_event() to handle_event_te(), handle_frm() to
    handle_frm_te().

    Patches:
   patch3_checks.diff (license #6372) patch uploaded by Guenther Kelleter
   Modified

    JIRA ABE-2882

  ................
    r374518 | rmudgett | 2012-10-04 18:21:59 -0500 (Thu, 04 Oct 2012) | 7 lines

    chan_misdn: Fix spelling in log messages

    Patches:
   patch4_spelling.diff (license #6372) patch uploaded by Guenther Kelleter

    JIRA ABE-2882

  ................
    r374519 | rmudgett | 2012-10-04 18:31:59 -0500 (Thu, 04 Oct 2012) | 15 lines

    chan_misdn: Don't cleanup a bc twice.

    In handle_frm_te() after calling misdn_lib_send_event(bc,
    EVENT_RELEASE_COMPLETE) bc is emptied, cleaned and set not in use,
    although misdn_lib_send_event() already did the same.  This is bad.  When
    it's not in use we are not allowed to touch it.

    * Moved log message in front of the resulting actions and fixed it to
    match the case.

    Patches:
   patch5_bccleanup.diff (license #6372) patch uploaded by Guenther Kelleter

    JIRA ABE-2882

  ................
    r374520 | rmudgett | 2012-10-04 18:43:56 -0500 (Thu, 04 Oct 2012) | 12 lines

    chan_misdn: Fix memory leaks, bc, chan not cleaned up etc., really bad stuff.

    * Fix return codes of cb_events() for EVENT_SETUP to use caller's cleanup
    mechanisms.

    * Move cl_queue_chan() call after bearer check.

    Patches:
   patch6_leaks.diff (license #6372) patch uploaded by Guenther Kelleter

    JIRA ABE-2882

  ................
    r374521 | rmudgett | 2012-10-04 18:48:38 -0500 (Thu, 04 Oct 2012) | 11 lines

    chan_misdn: We must initialize cause on sending a DISCONNECT.

    We must initialize cause on sending a DISCONNECT, so it is later correctly
    indicated to ast_channel in case the answer (RELEASE/RELEASE_COMPLETE)
    does not include one.

    Patches:
   patch7_hangupcause.diff (license #6372) patch uploaded by Guenther Kelleter

    JIRA ABE-2882

  ................
    r374522 | rmudgett | 2012-10-04 19:03:56 -0500 (Thu, 04 Oct 2012) | 7 lines

    chan_misdn: Remove unused code for upqueue

    Patches:
   patch8_unused-upqueue.diff (license #6372) patch uploaded by Guenther Kelleter

    JIRA ABE-2882

  ................
    r374523 | rmudgett | 2012-10-04 19:11:50 -0500 (Thu, 04 Oct 2012) | 7 lines

    chan_misdn: Improve debugging (port number, messages fixed, dups removed)

    Patches:
   patch9_debug.diff (license #6372) patch uploaded by Guenther Kelleter

    JIRA ABE-2882

  ................
    r374533 | rmudgett | 2012-10-05 12:17:18 -0500 (Fri, 05 Oct 2012) | 8 lines

    chan_misdn: Better debug: we can print_bc_info even if there's no ast leg.

    Patches:
   patch10_debug-bc-2.diff (license #6372) patch uploaded by Guenther Kelleter
   Modified.

    JIRA ABE-2882

  ................
    r374534 | rmudgett | 2012-10-05 12:34:10 -0500 (Fri, 05 Oct 2012) | 16 lines

    chan_misdn: setup_bc() is called too early for an incoming SETUP on TE.

    This prevents the B channel from being setup for HDLC mode when requested
    by the bearer capability and config option hdlc=yes.  It violates
    ETS300102 Ch.5.2.3.2: "The user, in any case, must not connect to the
    channel until a CONNECT ACKNOWLEDGE message has been received."

    * Call setup_bc() on receipt of CONNECT_ACKNOWLEGDE for PTMP, and on first
    response to SETUP for PTP.

    Patches:
   abe-2881-2.diff (license #6372) patch uploaded by Guenther Kelleter
   Modified.

    JIRA ABE-2881

  ................
    r374535 | rmudgett | 2012-10-05 12:41:05 -0500 (Fri, 05 Oct 2012) | 2 lines

    chan_misdn: Remove some more deadcode.

  ................
........

Merged revisions 370563,374536 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@374541 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix DBDelTree error codes for AMI, CLI and AGI
David M. Lee [Thu, 4 Oct 2012 15:11:06 +0000 (15:11 +0000)] 
Fix DBDelTree error codes for AMI, CLI and AGI

The AMI DBDelTree command will return Success/Key tree deleted successfully even
if the given key does not exist. The CLI command 'database deltree' had a
similar problem, but was saved because it actually responded with '0 database
entries removed'. AGI had a slightly different error, where it would return
success if the database was unavailable.

This came from confusion about the ast_db_deltree retval, which is -1 in the
event of a database error, or number of entries deleted (including 0 for
deleting nothing).

* Adds a Doxygen comment to process_db_keys explaining its retval
* Changed some poorly named res variables to num_deleted
* Specified specific errors when calling ast_db_deltree (database unavailable
  vs. entry not found vs. success)
* Fixed similar bug in AGI database deltree, where 'Database unavailable'
  results in successful result

(closes issue AST-967)
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/2138/

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@374424 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoRemove dead code and documentation for nonexistent feature.
Mark Michelson [Tue, 25 Sep 2012 22:59:30 +0000 (22:59 +0000)] 
Remove dead code and documentation for nonexistent feature.

multiplelogin was removed from chan_agent back in 1.6.0 when
AgentCallbackLogin() was removed.

(closes issue AST-948)
reported by Steve Pitts
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@373772 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix incorrect MeetME conference bridge reference count decrementing and sometimes...
Joshua Colp [Thu, 20 Sep 2012 19:13:26 +0000 (19:13 +0000)] 
Fix incorrect MeetME conference bridge reference count decrementing and sometimes premature destruction.

When using the 'e' or 'E' option to MeetMe the configured conference bridges are loaded and examined to see
if any are empty. If no conference bridges are empty the caller is prompted to enter the number of one.
This operation left around a pointer to the last created conference bridge still containing participants.
When the caller that was not able to find any empty conference bridge hung up this pointer was disposed of
and the reference count of the conference bridge decremented. If there was only a single participant in the
conference bridge it was ultimately destroyed prematurely.

(closes issue AST-994)
Reported by: John Bigelow

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@373243 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix inability to shutdown gracefully due to an unending channel reference.
Mark Michelson [Tue, 11 Sep 2012 21:02:33 +0000 (21:02 +0000)] 
Fix inability to shutdown gracefully due to an unending channel reference.

message.c makes use of a special message queue channel that exists
in thread storage. This channel never goes away due to the fact that
the taskprocessor used by message.c does not get shut down, meaning
that it never ends the thread that stores the channel.

This patch fixes the problem by shutting down the taskprocessor when
Asterisk is shut down. In addition, the thread storage has a destructor
that will release the channel reference when the taskprocessor is destroyed.

(closes issue AST-937)
Reported by Jason Parker
Patches:
AST-937.patch uploaded by Mark Michelson (License #5049)
Tested by Jason Parker

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@372884 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoAST-2012-012: Resolve AMI User Unauthorized Shell Access through ExternalIVR
Matthew Jordan [Thu, 30 Aug 2012 18:48:52 +0000 (18:48 +0000)] 
AST-2012-012: Resolve AMI User Unauthorized Shell Access through ExternalIVR

The AMI Originate action can allow a remote user to specify information that can
be used to execute shell commands on the system hosting Asterisk. This can
result in an unwanted escalation of permissions, as the Originate action, which
requires the "originate" class authorization, can be used to perform actions
that would typically require the "system" class authorization. Previous attempts
to prevent this permission escalation (AST-2011-006, AST-2012-004) have sought
to do so by inspecting the names of applications and functions passed in with
the Originate action and, if those applications/functions matched a predefined
set of values, rejecting the command if the user lacked the "system" class
authorization. As reported by IBM X-Force Research, the "ExternalIVR"
application is not listed in the predefined set of values. The solution for
this particular vulnerability is to include the "ExternalIVR" application in the
set of defined applications/functions that require "system" class authorization.

Unfortunately, the approach of inspecting fields in the Originate action against
known applications/functions has a significant flaw. The predefined set of
values can be bypassed by creative use of the Originate action or by certain
dialplan configurations, which is beyond the ability of Asterisk to analyze at
run-time. Attempting to work around these scenarios would result in severely
restricting the applications or functions and prevent their usage for legitimate
means. As such, any additional security vulnerabilities, where an
application/function that would normally require the "system" class
authorization can be executed by users with the "originate" class authorization,
will not be addressed. Instead, the README-SERIOUSLY.bestpractices.txt file has
been updated to reflect that the AMI Originate action can result in commands
requiring the "system" class authorization to be executed. Proper system
configuration can limit the impact of such scenarios.

(closes issue ASTERISK-20132)
Reported by: Zubair Ashraf of IBM X-Force Research

AST-2012-013: Resolve ACL rules being ignored during calls by some IAX2 peers

When an IAX2 call is made using the credentials of a peer defined in a dynamic
Asterisk Realtime Architecture (ARA) backend, the ACL rules for that peer are
not applied to the call attempt. This allows for a remote attacker who is aware
of a peer's credentials to bypass the ACL rules set for that peer.

This patch ensures that the ACLs are applied for all peers, regardless of their
storage mechanism.

(closes issue ASTERISK-20186)
Reported by: Alan Frisch
Tested by: mjordan, Alan Frisch

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@372052 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoapp_meetme: Adding test events for following activity in MeetMe.
Jonathan Rose [Wed, 29 Aug 2012 21:29:53 +0000 (21:29 +0000)] 
app_meetme: Adding test events for following activity in MeetMe.
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371948 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix misleading documentation in agents.conf.sample regarding ackcall usage.
Mark Michelson [Mon, 27 Aug 2012 21:48:38 +0000 (21:48 +0000)] 
Fix misleading documentation in agents.conf.sample regarding ackcall usage.

The documentation made it sound as if the DTMF acknowledgment was needed
at the time the agent logs in, rather than when the agent is called. This
is likely a relic from the days when there were multiple ways of logging
in agents.

(closes issue AST-962)
reported by Steve Pitts
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371788 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix incorrect documentation of the MailboxStatus manager command.
Mark Michelson [Mon, 27 Aug 2012 21:35:13 +0000 (21:35 +0000)] 
Fix incorrect documentation of the MailboxStatus manager command.

The "Waiting" field was misdocumented as reporting the number of
messages waiting. In reality, it simply indicated the presence or
absence of waiting messages.
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371786 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix incorrectly documented option in queues.conf
Mark Michelson [Mon, 27 Aug 2012 18:06:31 +0000 (18:06 +0000)] 
Fix incorrectly documented option in queues.conf

sharedlastcall defaults to "no" not "yes"

(closes issue AST-979)
reported by Steve Pitts
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371752 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoAdd instrumentation to subsystem reloads
Kinsey Moore [Fri, 17 Aug 2012 16:02:50 +0000 (16:02 +0000)] 
Add instrumentation to subsystem reloads

When Asterisk is built with TEST_FRAMEWORK defined, Asterisk will now
generate TestEvent AMI events on subsystem reloads such as cdr, dnsmgr,
extconfig, etc.

(issue PQ-1126)
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371440 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoAdd module reload instrumentation for TEST_FRAMEWORK
Kinsey Moore [Thu, 16 Aug 2012 22:47:04 +0000 (22:47 +0000)] 
Add module reload instrumentation for TEST_FRAMEWORK

This adds AMI events for module reloads when Asterisk is built with
TEST_FRAMEWORK enabled and corrects generation of the module load AMI
event.

(issue PQ-1126)
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371397 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoAdd test instrumentation
Kinsey Moore [Mon, 13 Aug 2012 20:42:55 +0000 (20:42 +0000)] 
Add test instrumentation

This adds test instrumentation for loading and unloading of modules
and for certain actions in MeetMe to be used in the testsuite or any
other consumer of AMI events.  These will only be generated when
Asterisk is built with TEST_FRAMEWORK enabled.

(issue PQ-1131)
(issue PQ-1133)
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371229 65c4cc65-6c06-0410-ace0-fbb531ad65f3

12 years agoFix a couple of documentation problems in app_queue.c
Mark Michelson [Fri, 10 Aug 2012 21:42:36 +0000 (21:42 +0000)] 
Fix a couple of documentation problems in app_queue.c

* The RemoveQueueMember app made mention of options that could
be passed in, but no options are supported. I have removed the
listing of options from the documentation.

* The RQMSTATUS variable did not list "NOTDYNAMIC" as a possible
value that could be set.

(closes issue AST-949)
reported by Steve Pitts

(closes issue AST-954)
reported by Steve Pitts
........

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@371145 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix error in the "IPorHost" section of a SIP dialstring.
Mark Michelson [Tue, 7 Aug 2012 15:49:48 +0000 (15:49 +0000)] 
Fix error in the "IPorHost" section of a SIP dialstring.

This is based on the review request posted by Walter Doekes
(referenced lower in the commit message)

The main fix here is to treat the IPorHost portion of the dial
string as a temporary outbound proxy. This ensures requests
get sent to the proper location.

Due to the age of the request, some parts were no longer relevant.
For instance, the request moved outbound proxy parsing code into
a single method. This is done in a previous commit, so it was not
necessary to do again.

Also, the review request fixed some errors with regards to request
routing for CANCEL and ACK requests. This has also been fixed in
more recent commits.

(closes issue ASTERISK-19677)
reported by Walter Doekes

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

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@370844 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix merge prop
Jason Parker [Tue, 7 Aug 2012 15:16:53 +0000 (15:16 +0000)] 
Fix merge prop

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@370840 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoMerge changes for Digium phone support, and default module building.
Jason Parker [Tue, 31 Jul 2012 20:59:52 +0000 (20:59 +0000)] 
Merge changes for Digium phone support, and default module building.

All of these changes are merged from certified/branches/1.8.11/

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@370667 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoCreate branch for Certified Asterisk 1.8.15.
Jason Parker [Tue, 31 Jul 2012 20:49:19 +0000 (20:49 +0000)] 
Create branch for Certified Asterisk 1.8.15.

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@370665 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoImprove Goto and GotoIf related documentation
Kinsey Moore [Tue, 10 Jul 2012 13:33:53 +0000 (13:33 +0000)] 
Improve Goto and GotoIf related documentation

Correct documentation on labeliftrue and labeliffalse parameters of
GotoIf() and update several other locations that use the same syntax.

(closes issue ASTERISK-20007)
Patch-by: Leif Madsen
Reported-by: WIMPy
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369869 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoAdd Digium phones context to sip_notify sample config.
Jason Parker [Mon, 9 Jul 2012 17:05:47 +0000 (17:05 +0000)] 
Add Digium phones context to sip_notify sample config.

This makes it so that they can be reconfigured remotely.

(closes issue ASTERISK-19910)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369818 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agochan_sip: Fix small behavioral change accidentally introduced in r369750
Jonathan Rose [Mon, 9 Jul 2012 14:38:18 +0000 (14:38 +0000)] 
chan_sip: Fix small behavioral change accidentally introduced in r369750

When removing the warning for AST_CONTROL_FLASH from sip_indicate, I also
inadvertently changed the return value, which would likely make the indication
not be sent in audio. This fixes that while still removing the warning message.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369792 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agochan_sip: Add case for FLASH control frames so that we don't display a warning.
Jonathan Rose [Fri, 6 Jul 2012 20:54:04 +0000 (20:54 +0000)] 
chan_sip: Add case for FLASH control frames so that we don't display a warning.

chan_sip channels can receive flash control frames when connected to analog
phones and possibly for other reasons. There really isn't a reason to warn when
these frames are received, we can safely ignore them.

Patches:
    dahdi_sip_flash.diff uploaded by Jonathan Rose (license 6182)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369750 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoRemove a superfluous and dangerous freeing of an SSL_CTX.
Mark Michelson [Fri, 6 Jul 2012 18:40:06 +0000 (18:40 +0000)] 
Remove a superfluous and dangerous freeing of an SSL_CTX.

The problem here is that multiple server sessions share
a SSL_CTX. When one session ended, the SSL_CTX would be
freed and set NULL, leaving the other sessions unable to
function.

The code being removed is superfluous because the SSL_CTX
structures for servers will be properly freed when ast_ssl_teardown
is called.

(closes issue ASTERISK-20074)
Reported by Trevor Helmsley
Patches:
ASTERISK-20074.diff uploaded by Mark Michelson (license #5049)
Testers:
Trevor Helmsley

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369731 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix bridging thread leak.
Mark Michelson [Fri, 6 Jul 2012 15:20:11 +0000 (15:20 +0000)] 
Fix bridging thread leak.

The bridge thread was exiting but was never being
reaped using pthread_join(). This has been fixed now
by calling pthread_join() in ast_bridge_destroy().

(closes issue ASTERISK-19834)
Reported by Marcus Hunger

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369708 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoAST-2012-011: Resolve heap corruption issue with voicemail
Kinsey Moore [Thu, 5 Jul 2012 19:01:52 +0000 (19:01 +0000)] 
AST-2012-011: Resolve heap corruption issue with voicemail

The heard and deleted arrays in the voicemail state structure were not
handled properly following the memory leak fix in r354890 and a fix for
an invalid free in r356797.  This could result in accessing and writing
into freed memory.  The allocation for these arrays has been reworked
to avoid the possibility of invalid frees, access of freed memory, and
crashes that were occurring as a result of this.

Locking around accesses and modifications of the voicemail state
structure members dh_arraysize, heard, and deleted has been added to
prevent simultaneous modification and access when IMAP storage is in
use.  If IMAP storage is not in use, this locking is not compiled in.

Review: https://reviewboard.asterisk.org/r/1994/
(closes issue ASTERISK-19923)
Reported by: Dan Delaney
Tested by: Dan Delaney, Julian Yap
Patches:
  vm_alloc_fix.diff uploaded by kmoore (license 6273)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369652 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoDo not send a BYE when a provisional response arrives during a re-INVITE
Matthew Jordan [Thu, 5 Jul 2012 17:01:52 +0000 (17:01 +0000)] 
Do not send a BYE when a provisional response arrives during a re-INVITE

Commits r369557 and r369579 were done to improve handling of re-INVITEs
when the UA that was supposed to receive the re-INVITE fails to respond.
A limitation of those patches occurred when a UA sent a provisional
response to the re-INVITE.  This triggered a sending of a BYE in
check_pending.  This patch tweaks the handling of the re-INVITE such that
a BYE is not sent in response to those messages.

(issue ASTERISK-19992)
Reported by: Steve Davies
Tested by: Steve Davies
patches:
  (reinvite_tweak.diff license #5012 by Steve Davies)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369626 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoMore improvements to re-INVITEs timing out after a provisional response
Terry Wilson [Tue, 3 Jul 2012 16:58:16 +0000 (16:58 +0000)] 
More improvements to re-INVITEs timing out after a provisional response

There is no need to call check_pendings() on a final response to an INVITE
when destroying the scheduler entry as it will be done later during normal
processing.

(issue ASTERISK-19992)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369579 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoBetter handle re-INVITEs with provisional but no final repsonses
Terry Wilson [Tue, 3 Jul 2012 14:27:02 +0000 (14:27 +0000)] 
Better handle re-INVITEs with provisional but no final repsonses

A previous attempt at fixing this issue had negative side effects related
to attended transfers which this patch should resolve. Many thanks to
Steve Davies for all of the good suggestions and testing.

(closes issue ASTERISK-19992)
Reported by: Steve Davies
Tested by: Steve Davies, Terry Wilson
Review: https://reviewboard.asterisk.org/r/2009/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369557 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoWith some configurations a transport is not actually specified so assume UDP in these...
Joshua Colp [Fri, 29 Jun 2012 16:52:56 +0000 (16:52 +0000)] 
With some configurations a transport is not actually specified so assume UDP in these cases.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369490 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoMake the address family filter specific to the transport.
Joshua Colp [Fri, 29 Jun 2012 15:28:58 +0000 (15:28 +0000)] 
Make the address family filter specific to the transport.

(closes issue ASTERISK-16618)
Reported by: Leif Madsen

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369471 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoAST-2012-010: Clean up after a reinvite that never gets a final response
Terry Wilson [Wed, 27 Jun 2012 20:58:51 +0000 (20:58 +0000)] 
AST-2012-010: Clean up after a reinvite that never gets a final response

The basic problem is that if a re-INVITE is sent by Asterisk and it receives a
provisional response, but no final response, then the dialog is never torn
down. In addition to leaking memory, this also leaks file descriptors and will
eventually lead to Asterisk no longer being able to process calls.

This patch just keeps track of whether there is an outstanding re-INVITE, and if
there is goes ahead and cleans up everything as though there was no outstanding
reinvite.

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

(closes issue ASTERISK-19992)
Reported by: Steve Davies
Tested by: Steve Davies, Terry Wilson

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369436 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix crash in unloading of res_adsi module
Matthew Jordan [Tue, 26 Jun 2012 13:21:13 +0000 (13:21 +0000)] 
Fix crash in unloading of res_adsi module

When res_adsi is unloaded, it removes the ADSI functions that it previously installed
by passing a NULL adsi_funcs pointer to ast_adsi_install_funcs.  This function was not
checking whether or not the adsi_funcs pointer passed in was NULL before dereferencing
it to check whether or not the version of the functions matches what the core was
expecting it.

This patch makes it so that the version is only checked if a potentially valid adsi_funcs
pointer was passed in.  Passing in NULL removes the installed functions, bypassing the
version check.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369390 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoTweak CDR change in r369351
Matthew Jordan [Mon, 25 Jun 2012 19:24:55 +0000 (19:24 +0000)] 
Tweak CDR change in r369351

As Tilghman pointed out on review 1996, the check to see if a CDR end time has
been set is sufficient to know whether or not the duration value can be used.
The check-in done for r369351 forgot to include this change.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369366 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoRe-fix how local tag is generated when sending a 481 to an INVITE.
Mark Michelson [Mon, 25 Jun 2012 19:13:31 +0000 (19:13 +0000)] 
Re-fix how local tag is generated when sending a 481 to an INVITE.

Match our local tag to whatever to-tag was sent in the initial INVITE.
Because the size of the to-tag may not fit in the buffer in the sip_pvt,
it has been changed to a string field.

(closes issue ASTERISK-19892)
reported by Walter Doekes

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369352 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix incorrect duration reporting in CDRs created in batch mode
Matthew Jordan [Mon, 25 Jun 2012 19:12:35 +0000 (19:12 +0000)] 
Fix incorrect duration reporting in CDRs created in batch mode

Certain places in core/cdr.c would, if the duration value were 0, calculate the
duration as being the delta between the current time and the time at which the
CDR record was started.  While this does not typically cause a problem in
non-batch mode, this can cause an issue in batch mode where CDR records are
gathered and written long after those calls have ended. In particular, this
affects calls that were never answered, as those are expected to have a duration
of 0.  Often, this would result in CDR logs with a significant number of calls
with lengthy durations, but dispositions of "BUSY".

Note that this does not affect cdr_csv, as that backend does not use
ast_cdr_getvar and instead directly reports the duration value.  The affected
core backends include cdr_apative_odbc and cdr_custom; other extended or
deprecated CDR backends may potentially still directly manipulate the duration
values.

(issue ASTERISK-19860)
Reported by: Thomas Arimont

(issue AST-883)
Reported by: Thomas Arimont
Tested by: Matt Jordan

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369351 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix Bridge application occasionally returning to the wrong location.
Richard Mudgett [Mon, 25 Jun 2012 15:57:28 +0000 (15:57 +0000)] 
Fix Bridge application occasionally returning to the wrong location.

* Fix do_bridge_masquerade() getting the resume location from the zombie
channel.  The code must not touch a clone channel after it has masqueraded
it.  The clone channel has become a zombie and is starting to hangup.

(closes issue ASTERISK-19985)
Reported by: jamicque
Patches:
      jira_asterisk_19985_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: jamicque

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369327 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoForgot to svn add this file in my last commit.
Mark Michelson [Mon, 25 Jun 2012 15:50:17 +0000 (15:50 +0000)] 
Forgot to svn add this file in my last commit.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369324 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoEliminate embedding of res_adsi.so module.
Mark Michelson [Mon, 25 Jun 2012 15:35:43 +0000 (15:35 +0000)] 
Eliminate embedding of res_adsi.so module.

The way this is done is to stop using the optional API.
Instead, res_adsi.so, when loaded fills in a table of
function pointers.

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369323 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoBe more consistent with the return code for requests received from invalid domain.
Mark Michelson [Mon, 25 Jun 2012 14:18:09 +0000 (14:18 +0000)] 
Be more consistent with the return code for requests received from invalid domain.

When Asterisk receives an INVITE from an external domain when allowexternaldomains=no
send a 403 instead of a 404. This is consistent with Asterisk's behavior when receiving
a REGISTER in this situation.

(Closes issue ASTERISK-19601)
Reported by Matthew Jordan
Patches:
ASTERISK-19601-no401.patch uploaded by Mark Michelson (License #5049)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369302 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix Bridge application and AMI Bridge action error handling.
Richard Mudgett [Sat, 23 Jun 2012 00:04:31 +0000 (00:04 +0000)] 
Fix Bridge application and AMI Bridge action error handling.

* Fix AMI Bridge action disconnecting the AMI link on error.

* Fix AMI Bridge action and Bridge application not checking if their
masquerades were successful.

* Fix Bridge application running the h-exten when it should not.

* Made do_bridge_masquerade() return if the masquerade was successful so
the Bridge application and AMI Bridge action could deal with it correctly.

* Made bridge_call_thread_launch() hangup the passed in channels if the
bridge_call_thread fails to start.  Those channels would have been
orphaned.

* Made builtin_atxfer() check the success of the transfer masquerade
setup.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369282 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoExplicitly check caller hangup in app Queue rather than a polluted res2 value.
Richard Mudgett [Fri, 22 Jun 2012 22:07:35 +0000 (22:07 +0000)] 
Explicitly check caller hangup in app Queue rather than a polluted res2 value.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369262 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoCheck if PBX was started and fix F and F(x) action logic in Dial application.
Richard Mudgett [Fri, 22 Jun 2012 21:35:16 +0000 (21:35 +0000)] 
Check if PBX was started and fix F and F(x) action logic in Dial application.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369258 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoCheck if PBX was started for generic CCSS recall.
Richard Mudgett [Fri, 22 Jun 2012 21:03:17 +0000 (21:03 +0000)] 
Check if PBX was started for generic CCSS recall.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369238 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoChange incorrect chan_sip zombie hangup debug message. They are all zombies now.
Richard Mudgett [Fri, 22 Jun 2012 20:47:12 +0000 (20:47 +0000)] 
Change incorrect chan_sip zombie hangup debug message.  They are all zombies now.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369235 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoDon't crash on a guest directmedia call
Terry Wilson [Fri, 22 Jun 2012 19:28:04 +0000 (19:28 +0000)] 
Don't crash on a guest directmedia call

A sip_pvt may not have relatedpeer set if a call doesn't match up
with a peer. If there is no relatedpeer, there is no direct media
ACL to apply, so just return that it is allowed.

(closes issue ASTERISK-20040)
Reported by: Terry Wilson

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369214 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoDon't parse media stream state for SIP video streams
Kinsey Moore [Fri, 22 Jun 2012 17:14:10 +0000 (17:14 +0000)] 
Don't parse media stream state for SIP video streams

The sendonly/recvonly/sendrecv/inactive media stream attributes were
parsed for video, but nothing was ever done with them.  With this code
removed, an UNSUPPORTED message is produced when these attributes are
used in conjunction with a video stream which is the better behavior
since they were never really supported in the first place.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369195 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agofix locking issue on empty callList
Alexandr Anikin [Wed, 20 Jun 2012 17:33:12 +0000 (17:33 +0000)] 
fix locking issue on empty callList
(issue ASTERISK-19298)
Reported by:
        Dmitry Melekhov
Patches:
        ASTERISK-18322-2.patch

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369146 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agofix compile error (1.8 don't have ast_channel_name macro)
Alexandr Anikin [Wed, 20 Jun 2012 09:15:22 +0000 (09:15 +0000)] 
fix compile error (1.8 don't have ast_channel_name macro)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369130 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix NULL pointer segfault in ast_sockaddr_parse()
Michael L. Young [Wed, 20 Jun 2012 02:03:22 +0000 (02:03 +0000)] 
Fix NULL pointer segfault in ast_sockaddr_parse()

While working with ast_parse_arg() to perform a validity check, a segfault
occurred.  The segfault occurred due to passing a NULL pointer to
ast_sockaddr_parse() from ast_parse_arg().  According to the documentation in
config.h, "result pointer to the result.  NULL is valid here, and can be used to
perform only the validity checks."

This patch fixes the segfault by checking for a NULL pointer.  This patch also
adds documentation to netsock2.h about why it is necessary to check for a NULL
pointer.

(Closes issue ASTERISK-20006)
Reported by: Michael L. Young
Tested by: Michael L. Young
Patches:
asterisk-20006-netsock-null-ptr.diff uploaded by Michael L. Young (license 5026)

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369108 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agocheck rtptimeouts in ooh323 channels as per config file
Alexandr Anikin [Tue, 19 Jun 2012 23:28:09 +0000 (23:28 +0000)] 
check rtptimeouts in ooh323 channels as per config file
(rtp voice, video, udptl except rtcp)

(closes issue ASTERISK-19179)
Reported by: TSAREGORODTSEV Yury
Patches:
        19179-ooh323-2.patch

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369090 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix request routing issue when outboundproxy is used.
Mark Michelson [Tue, 19 Jun 2012 15:30:58 +0000 (15:30 +0000)] 
Fix request routing issue when outboundproxy is used.

Asterisk was incorrectly setting the destination of CANCELs
and ACKs for error responses to the URI of the initial INVITE.
This resulted in further requests, such as INVITEs with authentication
credentials, to be routed incorrectly. Instead, when these CANCEL
or ACKs are to be sent, we should simply keep the destination the
same as what it previously was. There is no need to alter it any.

(closes issue ASTERISK-20008)
Reported by Marcus Hunger
Patches:
ASTERISK-20008.patch uploaded by Mark Michelson (license #5049)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369066 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix monitoring calls put in a parking lot.
Richard Mudgett [Mon, 18 Jun 2012 18:07:35 +0000 (18:07 +0000)] 
Fix monitoring calls put in a parking lot.

* Fix a regression that was introduced by -r366167 which effectively
disabled monitoring parked calls.

(closes issue ASTERISK-20012)
Reported by: sdolloff
Tested by: rmudgett

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369043 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoAdd a script to enable finding source files without support-levels defined.
Kevin P. Fleming [Fri, 15 Jun 2012 15:57:14 +0000 (15:57 +0000)] 
Add a script to enable finding source files without support-levels defined.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369002 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoAdd support-level indications to many more source files.
Kevin P. Fleming [Fri, 15 Jun 2012 15:56:08 +0000 (15:56 +0000)] 
Add support-level indications to many more source files.

Since we now have tools that scan through the source tree looking for files
with specific support levels, we need to ensure that every file that is
a component of a 'core' or 'extended' module (or the main Asterisk binary)
is explicitly marked with its support level. This patch adds support-level
indications to many more source files in tree, but avoids adding them to
third-party libraries that are included in the tree and to source files
that don't end up involved in Asterisk itself.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369001 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoRevert Makefile change to remove embedding res_adsi.so
Mark Michelson [Thu, 14 Jun 2012 15:23:10 +0000 (15:23 +0000)] 
Revert Makefile change to remove embedding res_adsi.so

The change has resulted in a linking error for certain versions
of GCC. This is much worse than the original issue, so for now,
temporarily revert the change. A more thorough change will be
sought out.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368927 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix a deadlock that occurs when func_volume is used on a local channel.
Mark Michelson [Wed, 13 Jun 2012 20:59:01 +0000 (20:59 +0000)] 
Fix a deadlock that occurs when func_volume is used on a local channel.

This was discovered by trying to perform a call forward to an extension
that makes use of func_volume. When the local channel is optimized away,
the datastore on the local;2 channel would have its audiohook destroyed
rather than detaching the audiohook from the channel and then destroying
it.

With this patch, func_volume's datastore destructor takes the proper
route of detaching the audiohook and then destroying it.

(closes issue ASTERISK-19611)
reported by Volker Sauer
Patches:
ASTERISK-19611.patch uploaded by Mark Michelson (license #5049)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368898 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoMark res_smdi/res_adsi as 'core' supported modules
Matthew Jordan [Wed, 13 Jun 2012 20:26:07 +0000 (20:26 +0000)] 
Mark res_smdi/res_adsi as 'core' supported modules

Recently, various issues surrounding weak symbols have caused problems with
modules that rely on that feature to be enabled in menuselect.  This includes
app_voicemail and chan_dahdi, as they both rely upon res_smdi and res_adsi,
which, in certain circumstances, may not be enabled by default in menuselect.

Because res_smdi/res_adsi are dependencies for chan_dahdi/app_voicemail, this
patch marks both as 'core' supported modules.  This will allow both
app_voicemail and chan_dahdi to be enabled as well, regardless of whether or
not that system supports weak symbols.

(issue AST-900)
Reported by: Thomas Arimont

(issue AST-885)
Reported by: Denis Alberto Martinez

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368894 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoRemove forced linking of res_adsi.o
Mark Michelson [Wed, 13 Jun 2012 19:00:21 +0000 (19:00 +0000)] 
Remove forced linking of res_adsi.o

In GCC 4.5+ the result is that Asterisk has a phantom
module loaded at startup, claiming to be res_adsi.

(closes issue ASTERISK-19920)
reported by Leif Madsen

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368873 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoDo not install empty directories; add ASTLIBDIR
Matthew Jordan [Wed, 13 Jun 2012 14:27:57 +0000 (14:27 +0000)] 
Do not install empty directories; add ASTLIBDIR

r368830 modified the installation script to only create a directory if that
directory does not exist.  If some directory variable was empty, it would attempt
to create the empty location.  It also failed to create the ASTLIBDIR directory.
This patch fixes it such that the correct directories are made and only created if
a value specifying them actually exists.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368852 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoDo not perform install on existing directories
Matthew Jordan [Tue, 12 Jun 2012 18:23:01 +0000 (18:23 +0000)] 
Do not perform install on existing directories

If a directory already exists, performing a 'make install' will remove the
permissions associated with the current directory and replace them with the
permissions of the user executing the install.

This patch changes this behavior to only perform an install on the directory
if the directory does not exist.  Thus, if a user later changes the permissions
on that directory, those permissions will be preserved in subsequent installs.

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

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

(closes issue ASTERISK-19492)
Reported by: Karl Fife
Tested by: Paul Belanger, Tilghman Lesher
patches:
  ASTERISK-19492 by pabelanger
  (uploaded by mjordan)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368830 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoSet the Caller ID "tag" on peers even if remote party information is present.
Mark Michelson [Tue, 12 Jun 2012 15:36:34 +0000 (15:36 +0000)] 
Set the Caller ID "tag" on peers even if remote party information is present.

On incoming calls, we were setting the cid_tag on the dialog only if there was
no remote party information (Remote-Party-ID or P-Asserted-Identity) present.
The Caller ID tag is an invented parameter, though, and should be set no matter
the circumstance.

(closes issue ASTERISK-19859)
Reported by Thomas Arimont
(closes issue AST-884)
Reported by Trey Blancher

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368807 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix deadlock potential with ast_set_hangupsource() calls.
Richard Mudgett [Mon, 11 Jun 2012 17:03:02 +0000 (17:03 +0000)] 
Fix deadlock potential with ast_set_hangupsource() calls.

Calling ast_set_hangupsource() with the channel lock held can result in a
deadlock because the function also locks the bridged channel.

(issue ASTERISK-19537)

(closes issue ASTERISK-19801)
Reported by: Alec Davis

(closes issue AST-891)
Reported by: Guenther Kelleter
Tested by: Guenther Kelleter

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368759 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix coverity UNUSED_VALUE findings in core support level files
Kinsey Moore [Mon, 11 Jun 2012 15:13:22 +0000 (15:13 +0000)] 
Fix coverity UNUSED_VALUE findings in core support level files

Most of these were just saving returned values without using them and
in some cases the variable being saved to could be removed as well.

(issue ASTERISK-19672)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368738 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix compilation in dev-mode
Kinsey Moore [Mon, 11 Jun 2012 14:10:13 +0000 (14:10 +0000)] 
Fix compilation in dev-mode

Backport a compilation fix in md5.c from trunk that only showed up in
dev-mode under certain compiler versions.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368719 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix POTS flash hook to orignate a second call deadlock.
Richard Mudgett [Wed, 6 Jun 2012 21:27:33 +0000 (21:27 +0000)] 
Fix POTS flash hook to orignate a second call deadlock.

A deadlock can occur when a POTS phone tries to flash hook to originate a
second call for 3-way or transfer.  If another process is scanning the
channels container when the POTS line flash hooks then a deadlock will
occur.

* Release the channel and private locks when creating a new channel as a
result of a flash hook.

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368644 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoFix a specific scenario where ACKs are not matched.
Mark Michelson [Wed, 6 Jun 2012 19:13:45 +0000 (19:13 +0000)] 
Fix a specific scenario where ACKs are not matched.

If a dialog-starting INVITE contains a to-tag, then Asterisk
will respond with a 481. In this case, the resulting incoming
ACK would not be matched, so Asterisk would continue retransmitting
the 481 until the transaction times out.

There were two issues. Asterisk, upon creating a sip_pvt would generate
a local tag. However, when the time came to transmit the 481, since there
was a to-tag in the INVITE, Asterisk would place this original to-tag
in the 481 response. When the ACK came in, Asterisk would attempt to
match the to-tag in the ACK to the generated local tag. Unfortunately,
Asterisk never actually transmitted a response with the generated local
tag, so the to-tag in the ACK would not match.

The other problem was that when the 481 was sent, nothing was set
on the sip_pvt to indicate what CSeq is expected in the ACK.

To fix the first problem, we zero out the to-tag seen in the incoming
INVITE. This way, Asterisk, when time to send a response, will send
its generated local tag instead.

To fix the second problem, we set the sip_pvt's pendinginvite to the
CSeq of the INVITE when we send a 481.

(closes issue ASTERISK-19892)
Reported by Mark Michelson

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368625 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoAdd feature modifier to versions produced from branches
Matthew Jordan [Wed, 6 Jun 2012 17:20:07 +0000 (17:20 +0000)] 
Add feature modifier to versions produced from branches

Certain branches, such as Certified Asterisk, may have a modifier added to
them that specifies the features available in that branch.  For branches, this
modifier is expected to be reflected in the location of the branch in
subversion. For example, a subversion of URL of /certified/branches/1.8.11
would have a feature modifier of 'certified'.  This is slightly different then
how features are determined for tags, where the feature is part of the actual
tag name, e.g., "10.5.0-digiumphones".

In keeping with the nomenclature used for tags, the feature specifier for
branches is translated and placed after the revision numbers.  For the example
given previously, this would result in a branch version of
"Asterisk SVN-branch-1.8.11-cert-rXXXXXX".

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368604 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 years agoEnsure overlapping hold flags do not conflict
Kinsey Moore [Wed, 6 Jun 2012 16:07:02 +0000 (16:07 +0000)] 
Ensure overlapping hold flags do not conflict

When changing between different modes of hold, the flags were not being
cleared out properly causing a failure to change hold states.

(closes issue ASTERISK-19919)
Patch-by: Morten Tryfoss
Reported-by: Morten Tryfoss
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@368586 65c4cc65-6c06-0410-ace0-fbb531ad65f3