Commit Graph

4034 Commits

Author SHA1 Message Date
Richard Mudgett
4b03161fca Fix Dial I option ignored if dial forked and one fork redirects.
The Dial and Queue I option is intended to block connected line updates
and redirecting updates.  However, it is a feature that when a call is
locally redirected, the I option is disabled if the redirected call runs
as a local channel so the administrator can have an opportunity to setup
new connected line information.  Unfortunately, the Dial and Queue I
option is disabled for *all* forked calls if one of those calls is
redirected.

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

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

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

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

* Converted the Queue stillgoing flag to a boolean bitfield.

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

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


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

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

(issue ASTERISK-19665)
Reported by: Matt Jordan

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

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

(Closes issue ASTERISK-19650)


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


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


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

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


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

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

* Fix bit field declarations in FollowMe.

* Fix FollowMe n option documentation.


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

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

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

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

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

(Closes issue ASTERISK-19654)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@365398 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-04 22:12:55 +00:00
Kinsey Moore
dcd64542bc Play conf-placeintoconf message to the correct channel
Correct the code in app_confbridge to play the conf-placeintoconf message to
the marked user entering the bridge instead of to the conference while the
marked user hears silence.

(closes issue ASTERISK-19641)
Reported-by: Mark A Walters


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@364786 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-01 19:03:17 +00:00
Richard Mudgett
faec22add3 Update Pickup application documentation. (With feeling this time.)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@364108 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-26 21:10:00 +00:00
Richard Mudgett
d6ab0313c6 Update Pickup application documentation. (Even better)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@363875 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-26 03:11:00 +00:00
Richard Mudgett
78b487007c Update Pickup application documentation.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@363788 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-25 22:59:01 +00:00
Richard Mudgett
93304431a3 Update app_dial M and U option GOTO return value documentation.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362997 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-21 01:44:26 +00:00
Terry Wilson
e07ff6ed84 Document Speech* apps hangup on failure and suggest TryExec
The Speech API apps return -1 on failure, which will hang up the channel. This
may not be desirable behavior for some, but it isn't something that can be
changed without breaking people's dialplans or writing an option to all of the
Speech apps that does what TryExec already does. This patch documents the
hangup behavior of the apps, and suggests TryExec as the solution.

(closes issue AST-813)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362815 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-20 14:47:21 +00:00
Sean Bright
c2447e0cc8 Prevent a crash in ExternalIVR when the 'S' command is sent first.
If the first command sent from an ExternalIVR client is an 'S' command, we were
blindly removing the first element from the play list and deferencing it, even
if it was NULL.  This corrects that and also locks appropriately in one place.

(issue ASTERISK-17889)
Reported by: Chris Maciejewski


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-19 15:53:56 +00:00
Matthew Jordan
0e488d7cc4 Fix a variety of potential buffer overflows
* chan_mobile: Fixed an overrun where the cind_state buffer (an integer array
  of size 16) would be overrun due to improper bounds checking. At worst, the
  buffer can be overrun by a total of 48 bytes (assuming 4-byte integers),
  which would still leave it within the allocated memory of struct hfp.  This
  would corrupt other elements in that struct but not necessarily cause any
  further issues.

* app_sms: The array imsg is of size 250, while the array (ud) that the data
  is copied into is of size 160.  If the size of the inbound message is 
  greater then 160, up to 90 bytes could be overrun in ud.  This would corrupt
  the user data header (array udh) adjacent to ud.

* chan_unistim: A number of invalid memmoves are corrected.  These would move
  data (which may or may not be valid) into the ends of these buffers.

* asterisk: ast_console_toggle_loglevel does not check that the console log
  level being set is less then or equal to the allowed log levels of 32.

* frame: In ast_codec_pref_prepend, if any occurrence of the specified codec
  is not found, the value used to index into the array pref->order would be
  one greater then the maximum size of the array.

* jitterbuf: If the element being placed into the jitter buffer lands in the
  last available slot in the jitter history buffer, the insertion sort attempts
  to move the last entry in the buffer into one slot past the maximum length
  of the buffer.  Note that this occurred for both the min and max jitter
  history buffers.

* tdd: If a read from fsk_serial returns a character that is greater then 32,
  an attempt to read past one of the statically defined arrays containing the
  values that character maps to would occur.

* localtime: struct ast_time and tm are not the same size - ast_time is larger,
  although it contains the elements of tm within it in the same layout.  Hence,
  when using memcpy to copy the contents of tm into ast_time, the size of tm
  should be used, as opposed to the size of ast_time.

* extconf: this treats ast_timing's minmask array as if it had a length of 48,
  when it has defined the size of the array as 24.  pbx.h defines minmask as
  having a size of 48.

(issue ASTERISK-19668)
Reported by: Matt Jordan



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362485 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-19 02:08:44 +00:00
Matthew Jordan
0da3b6c793 Fix handling of negative return code when storing voicemails in ODBC storage
When storing a voicemail message using an ODBC connection to a database, the
voicemail message is first stored on disk.  The sound file associated with
the message is read into memory before being transmitted to the database.
When this occurs, a failure in the C library's lseek function would cause a
negative value to be passed to the mmap as the size of the memory map to
create.  This would almost certainly cause the creation of the memory map to
fail, resulting in the message being lost.

(issue ASTERISK-19655)
Reported by: Matt Jordan

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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362201 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-16 21:37:20 +00:00
Jonathan Rose
6afefc4eb1 Make ForkCDR e option not set end time of the newly forked CDR log
Prior to this patch, ForkCDR's e option would immediately set the end time of the forked
CDR to that of the CDR that is being terminated. This resulted in the new CDR's end time
being roughly the same as it's beginning time (which is in turn roughly the same as the
original's end time).

(closes issue ASTERISK-19164)
Reported by: Steve Davies
Patches:
	cdr_fork_end.v10.patch uploaded by Steve Davies (license 5012)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362082 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-13 15:54:01 +00:00
Jonathan Rose
680b627906 Send relative path named recordings to the meetme directory instead of sounds
Prior to this patch, no effort was made to parse the path name to determine a proper
destination for recordings of MeetMe's r option. This fixes that.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362079 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-13 15:21:20 +00:00
Matthew Jordan
304af5d7cc Fix memory leak when using MeetMeAdmin 'e' option with user specified
A memory leak/reference counting leak occurs if the MeetMeAdmin 'e' command
(eject last user that joined) is used in conjunction with a specified user.
Regardless of the command being executed, if a user is specified for the
command, MeetMeAdmin will look up that user.  Because the 'e' option kicks
the last user that joined, as opposed to the one specified, the reference to
the user specified by the command would be leaked when the user variable
was assigned to the last user that joined.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361558 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-06 20:31:39 +00:00
Kinsey Moore
4148e51555 Add missing newlines to CLI logging
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361471 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-06 18:09:19 +00:00
Russell Bryant
5fcb78840f Remove a few more files related to chan_usbradio and app_rpt.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361380 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-06 15:47:22 +00:00
Kinsey Moore
ab87db4419 Remove unnecessary error message in app_dial.c
The error message for failure to stop autoservice after a gosub or macro call
during a dial was removed for macro while Asterisk 1.4 was still being actively
developed. The corresponding gosub error message was never removed.

(closes issue ASTERISK-19551)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361329 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-06 13:30:40 +00:00
Jonathan Rose
3560b4a9b5 Fix MusicOnHold in MeetMe so that it always uses the class if it's been defined
There were a few instances of restarting music on hold in meetme that would cause
Asterisk to revert to the default class of music on hold for no adequate reason.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-05 16:36:27 +00:00
Jonathan Rose
ed76cdda72 Replace GNU old-style field designator extensions to fix clang warnings
(issue ASTERISK-19540)
Reported by: Makoto Dei
Patches:
	clang-gnu-designator.patch uploaded by Makoto Dei (license 5027)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361142 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-04 16:29:18 +00:00
Jonathan Rose
abd7fa4476 Make the MeetMeAdmin N command (mute all nonadmins) not mute admins
(Closes Issue ASTERISK-19335)
Reported by: Johan Wilfer
Review: https://reviewboard.asterisk.org/r/1843/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361090 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-04 13:26:45 +00:00
Kinsey Moore
b1152d145f Fix the display of documentation for Transfer
This came up while fixing documentation generation for many other cases where
the argument separator was not being displayed properly.  Now that it is
displayed properly, it shows up in the wrong place for Transfer since the '/'
is only required if Tech is present.

(related to issue ASTERISK-18168)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@361040 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-03 20:08:10 +00:00
Russell Bryant
dea36a06bb app_page: Fix a memory leak on every Page().
dial_list is a dynamically allocated array that is allocated at the beginning
of Page() based on how many devices will be dialed.  This was never being freed.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@360363 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-24 03:07:48 +00:00
Russell Bryant
093121050f app_jack: fix datastore memory leak in error handling path.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@360360 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-24 03:01:20 +00:00
Kinsey Moore
a25e2ad59c Prevent Echo() from relaying control, null, and modem frames
Echo()'s description states that it echoes audio, video, and DTMF except for #
while it actually echoes any frame that it receives other than DTMF #.  This
was causing frame storms in the test suite in some circumstances where Echo()
was attached to both ends of a pair of local channels and control frames
were being periodically generated.  Echo()'s behavior and description have
been modifed so that it only echoes media and non-# DTMF frames.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@360033 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-20 20:32:55 +00:00
Jonathan Rose
698cd736b6 Prevent chanspy from binding to zombie channels
This patch addresses a bug with chanspy on local channels which roughly 50% of the time
would create a situation where chanspy can latch onto a zombie channel, keeping the zombie
alive forever and causing the channel doing the spying to never be able to hang up.

(closes issue ASTERISK-19493)
Reported by: lvl
Review: https://reviewboard.asterisk.org/r/1819/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@359892 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-16 20:13:56 +00:00
Matthew Jordan
2073ca37b6 Fix remotely exploitable stack overrun in Milliwatt
Milliwatt is vulnerable to a remotely exploitable stack overrun when using
the 'o' option.  This occurs due to the milliwatt_generate function not
accounting for AST_FRIENDLY_OFFSET when calculating the maximum number of
samples it can put in the output buffer.

This patch resolves this issue by taking into account AST_FRIENDLY_OFFSET
when determining the maximum number of samples allowed.  Note that at no
point is remote code execution possible.  The data that is written into the
buffer is the pre-defined Milliwatt data, and not custom data.

(closes issue ASTERISK-19541)
Reported by: Russell Bryant
Tested by: Matt Jordan
Patches:
  milliwatt_stack_overrun.rev1.txt by Russell Bryant (license 6283)
  Note that this patch was written by Russell, even though Matt uploaded it
........

Merged revisions 359645 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@359656 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-15 18:35:59 +00:00
Richard Mudgett
e446657808 Add missing connected line macro calls to initial dial for Dial and Queue apps.
The connected line interception macros do not get executed when the
outgoing channel is initially created and that channel's caller-id is
implicitly imported into the incoming channel's connected line data.  If
you are using the interception macros, you would expect that they get run
for every change to a channel's connected line information outside of
normal dialplan execution.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@359609 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-15 18:17:30 +00:00
Russell Bryant
3627d4c840 app_chanisavail: Fix use of uninitialized variable.
Ensure that status is set before it is used by resetting it during each loop
iteration.  This could have resulted in incorrect results from this app.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@359486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-14 23:26:59 +00:00
Richard Mudgett
7141a29e1b Fix Dial m and r options and forked calls generating warnings for voice frames.
When connected line support was added, the wait_for_answer() variable
single changed its meaning slightly.  Unfortunately, the places where
single was used did not necessarily get updated to reflect that change.
Also audio/video frames were sent to all forked calls when the endpoints
were never made compatible.

* Don't pass audio/video media frames when the channels have not been made
compatible.

* Added handling of AST_CONTROL_SRCCHANGE to app_dial.c.

* Fixed app_dial.c passing on AST_CONTROL_HOLD because that frame can also
pass a requested MOH class.

(closes issue ASTERISK-16901)
Reported by: Chris Gentle

(closes issue ASTERISK-17541)
Reported by: clint

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@359344 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-14 17:17:03 +00:00
Russell Bryant
08e1d392f4 Fix invalid reads/writes due to incorrect sizeof().
These few places in the code used sizeof() on h_addr in struct hostent.
This is sizeof(char *).  The correct way to get the size of this address is to
use h_length.  This error would result in reads/writes of 8 bytes instead of 4
on 64-bit machines.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@359211 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-14 10:03:07 +00:00
Russell Bryant
0da9d71905 Remove chan_usbradio and app_rpt.
These modules are being maintained outside of the tree and have been for a long
time now, so it doesn't make sense to keep them here.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@359050 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-13 23:34:50 +00:00
Tilghman Lesher
2477215dd4 Enable macros in 1.8 to find the next highest "h" extension in a context, like in 1.4.
This change restores functionality that was present in 1.4, when AEL macros
were implemented with the Macro dialplan application.  Macros are fraught with
functionality issues, because they consume a large portion of the underlying
application stack.  This limits the ability of AEL users to call many layers
of subroutines, an issue which Gosub does not have (originally tested to
100,000 levels deep).  Therefore, starting in 1.6.0, AEL macros were
implemented with Gosub.

However, there were some implicit behaviors of Macro, which were not replicated
at the same time as with the transition to Gosub, one of which is documented in
the related issue.  In particular, the "h" extension is designed to execute not
in the Macro context, but in the topmost calling context.  Due to legacy issues
with a misapplied bugfix many years ago, when a macro exited in 1.4, it looks
in all calling contexts, bubbling up from the deepest level until it finds an
"h" extension.

Since AEL hides the complexity of the underlying dialplan logic from the AEL
programmer, it's reasonable to assume that this behavior should not change in
the transition from Asterisk 1.4 LTS to Asterisk 1.8 LTS, lest we break
working AEL configurations in the transition to Asterisk 1.8 LTS.  This fix
is the result, which implements a search for the "h" extension in all calling
Gosub contexts.

Fixes ASTERISK-19336

Patch: 20120308__ael_bugfix_for_trunk__2.diff (License #5003) by Tilghman Lesher
	(with slight modifications for 1.8)

Tested by: Johan Wilfer

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@358810 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-13 07:44:23 +00:00
Richard Mudgett
2c3804e06e Fix channel reference leak in ChanSpy.
* Fix next_channel() channel reference leak in ChanSpy.

(closes issue ASTERISK-19461)
Reported by: Irontec
Patches:
      app_chanspy_iteartor_next_unref.patch (license #6213) patch uploaded by Irontec

(issue ASTERISK-17515)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@357809 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-02 15:45:45 +00:00
Walter Doekes
99a080671d Fix copying of CDR(accountcode) to local channels.
In r203638, during the addition of the Channel Event Logging, in mid-2009, this
got broken in trunk and ended up in asterisk 1.8 and higher. This fixes so the
CDR(accountcode) from the calling channel is available to dialed channels again
as well as showing up properly in the CDR's.

(closes issue ASTERISK-19384)
Reported by: jamicque
Patches: accountcode.patch (License #6033) by jamicque
Review: https://reviewboard.asterisk.org/r/1775/
Reviewed by: Richard Mudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@357575 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-29 19:41:32 +00:00
Tilghman Lesher
e289e9caf9 Correctly reset the dialplan priority.
When the stack frame is allocated, we save the address to which we should
return, when the Gosub returns.  However, if we just want to restore the
priority, then we need to subtract 1 before setting it.  Otherwise, when
a Gosub goes to a nonexistent address, it will skip a priority in the
dialplan.  This is because when we return from an application, the PBX
increments the priority for us.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@357416 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-28 21:19:39 +00:00
Richard Mudgett
00fc360507 Remove dupliate 'i' option table entry in app_page.c.
(closes issue ASTERISK-19310)
Reported by: Makoto Dei
Patches:
      app_page-duplicate-i-option.patch (license #5027) patch uploaded by Makoto Dei


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@357352 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-28 19:32:44 +00:00
Matthew Jordan
d3ed07d38a Fix crash in app_voicemail during close_mailbox
In r354890, a memory leak in app_voicemail was fixed by properly disposing of
the allocated heard/deleted pointers.  However, there are situations,
particularly when no messages are found in a folder, where these pointers are
not allocated and not NULL.  In that case, an invalid free would be attempted,
which could crash app_voicemail.  As there are a number of code paths where
this could occur, this patch uses the number of messages detected in the folder
before it attempts to free the pointers.  This resolves the crash detected in
the Asterisk Test Suite's check_voicemail_nominal test.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@356797 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-25 17:21:29 +00:00
Paul Belanger
bd7d5707dd Missed one strsep() function
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@356337 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-22 21:36:37 +00:00
Paul Belanger
7d3cdcffd2 Add back strsep() function for previous commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@356335 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-22 21:29:25 +00:00
Paul Belanger
8dc1509465 Fix -Werror=unused-but-set-variable compiler error (gcc 4.6.2)
Review: https://reviewboard.asterisk.org/r/1763/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@356290 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-22 20:20:29 +00:00
Jason Parker
a37f262426 Fix a voicemail memory leak with heard/deleted messages.
open_mailbox() was changed quite a long time ago to allocate this memory.
close_mailbox() should have been changed to be responsible for freeing it.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354889 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-10 21:45:22 +00:00
Richard Mudgett
9c33d62bcb Fix crash in ParkAndAnnounce.
Well, thats embarrasing.  I forgot to initialize the caller_id storage.

(closes issue ASTERISK-19311)
Reported by: tootai
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354495 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-09 02:52:20 +00:00
Richard Mudgett
a55030f4fa Audit of ao2_iterator_init() usage for v1.8.
Fixes numerous reference leaks and missing ao2_iterator_destroy() calls as
a result.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352955 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-27 18:22:39 +00:00