Kinsey Moore [Wed, 10 Aug 2011 22:23:08 +0000 (22:23 +0000)]
SIP Notify via AMI or CLI leaks SIP PVTs
Any SIP notify sent via AMI or CLI leaks a SIP PVT with ref count +2. Removing
the additional ref just before the invite and adding an unref following it
corrects the issue as seen via REF_DEBUG. The unref existed in a distant
revision and it appears as though the wrong ref operation was removed.
Richard Mudgett [Wed, 10 Aug 2011 20:29:59 +0000 (20:29 +0000)]
Output of queue log not started until logger reloaded.
ASTERISK-15863 caused a regression with queue logging. The output of the
queue log is not started until the logger configuration is reloaded.
* Queue log initialization is completely delayed until the first message
is posted to the queue log system. Including the initial opening of the
queue log file.
* Fixed rotate_file() ROTATE strategy to give the file just rotated out to
the configured exec function after rotate. Just like the other strategies.
* Fixed logger reload to always post the queue reload entry instead of
just if there is a queue log file.
* Refactored some code to eliminate some redundancy and to reduce stack
utilization.
(closes issue ASTERISK-17036)
JIRA SWP-2952
Reported by: Juan Carlos Valero
Patches:
jira_asterisk_17036_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: rmudgett
(closes issue ASTERISK-18208)
Reported by: Christian Pinedo
Kinsey Moore [Wed, 10 Aug 2011 13:47:46 +0000 (13:47 +0000)]
AMI action ModuleReload returns Error if Module: missing or empty
An empty string was not being checked for properly causing identification of
the module to be reloaded to fail and return an Error with message
"No such module."
Richard Mudgett [Tue, 9 Aug 2011 22:12:59 +0000 (22:12 +0000)]
Misc minor items found in code.
* Add some reentrancy protection in pbx.c when creating the contexts_table
hash table.
* Fix inverted test in chan_sip.c conditional code.
* Fix uninitialized variable and use of the wrong variable in chan_iax2.c.
* Fix test of return value in app_parkandannounce.c. Explicitly testing
for -1 is bad if the function does not actually return that value when it
fails.
* Fixup some comments and add some curly braces in features.c.
Alexandr Anikin [Tue, 9 Aug 2011 16:13:09 +0000 (16:13 +0000)]
move ast_cond_signal for admitted call after all data filled/freed
clear all log channels by pointed number not only first
free allocated callToken in ooh323_answer
Kinsey Moore [Mon, 8 Aug 2011 20:52:45 +0000 (20:52 +0000)]
In-queue MOH stops after a periodic announcement
If the seek value is past the end of file when resuming G.722 MOH, MOH will
cease to function for the duration of the MOH session through all starts and
stops until saved state is cleared. Adjusting the code to guarantee a single
valid read (which is already assumed) fixes the bug.
(closes issue ASTERISK-18077)
Review: https://reviewboard.asterisk.org/r/1328/ Tested-by: Jonathan Rose <jrose@digium.com>
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@331038 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Kinsey Moore [Wed, 3 Aug 2011 15:14:36 +0000 (15:14 +0000)]
editing files in main/editline does not ensure rebuild of libedit.a
When editing a source file in main/editline, the build system does not rebuild
libedit.a and uses the already existing one instead. Adding a PHONY to
CHECK_SUBDIR fixes this problem.
(closes issue ASTERISK-16221) Patch-by: Walter Doekes
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@330762 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Kinsey Moore [Wed, 3 Aug 2011 13:38:17 +0000 (13:38 +0000)]
Call pickup broken for DAHDI channels when beginning with #
The call pickup feature did not work on DAHDI devices for anything other than
feature codes beginning with * since all feature codes in chan_dahdi were
originally hard-coded to begin with *. This patch is also applied to
chan_dahdi.c to fix this bug with radio modes.
Asterisk 18103 - Fix reload crash caused by destroying default parking lot
Default parking lot was being destroyed in reload and was not being rebuilt properly.
This patch keeps features.c reload from destroying the default parking lot in 1.6.2.
Bug was caused by a hasty backport which didn't test reload enough times to catch the
problem.
Kinsey Moore [Mon, 1 Aug 2011 15:22:10 +0000 (15:22 +0000)]
Incorrect playback for Spanish in some circumstances
When you say the time in spanish and it is 01:00 - 01:59 or 13:00 - 13:59 you
must use female pronunciation "1F". The function "say_date_with_format_es" does
not take this in account.
(closes ASTERISK-15016) Patch-by: Luis Jimenez
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@330433 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Incoming and outgoing call legs of a data call are using different
formats: a-law, u-law. When the call is bridged, the media stream is run
through translation to convert the media formats. The translation is bad
for data calls.
* Make incoming call that does not explicitly specify u-law or a-law use
the DAHDI channel's default law. The outgoing call always uses the
default law from the DAHDI channel.
Jonathan Rose [Tue, 26 Jul 2011 14:04:55 +0000 (14:04 +0000)]
Changes sound file for prepend "then-press-pound" to "vm-then-pound" which is the same
prompt, only it turned out "then-press-pound" was part of extra sounds. Also, vm is more
appropriate anyway.
Jonathan Rose [Tue, 26 Jul 2011 13:25:35 +0000 (13:25 +0000)]
Fixes some voicemail forwarding behavior based around prepend mode.
Formerly, prepend forwarding would have the user record a message with no useful prompt
and an expectation for the user to push a button on the phone when finished recording.
If a length of silence was detected instead, the recording would be canceled and the user
would re-enter the voicemail forwarding menu. Subsequent time-outs in prepend recording
would also bug out in the sense that they would write over the original message and get
sent to the recipient regardless of whether they timed out or were accepted. This patch
fixes this issue and adds a prompt which will be played after a timeout informing the
user that they needed to press a button. Currently, the sound files that we have are
somewhat inadquate for this, so after the call we simply have Allison say "Please try
again. Then press pound." which actually relies on two separate sound files. Just one
would be more appropriate.
Richard Mudgett [Fri, 22 Jul 2011 15:44:58 +0000 (15:44 +0000)]
Deadlocks dealing with dialplan hints during reload.
There are two remaining different deadlocks reported dealing with dialplan
hints.
The deadlock in ASTERISK-17666 is caused by invalid locking order in
ast_remove_hint(). The hints container must be locked before the hint
object.
The deadlock in ASTERISK-17760 is caused by a catch-22 situation in
handle_statechange(). The deadlock is caused by not having the conlock
before calling the watcher callbacks. Unfortunately, having that lock
causes a different deadlock as reported in ASTERISK-16961.
* Fixed ast_remove_hint() locking order.
* Made handle_statechange() no longer call the watcher callbacks holding
any locks that matter.
* Made hint ao2 destructor do the watcher callbacks for extension
deactivation to guarantee that they get called.
* Fixed hint reference leak in ast_add_hint() if the callback container
constructor failed.
* Fixed hint reference leak in complete_core_show_hint() for every hint it
found for CLI tab completion.
* Adjusted locking in ast_merge_contexts_and_delete() for safety.
* Added context_merge_lock to prevent ast_merge_contexts_and_delete() and
handle_statechange() from interfering with each other.
* Fixed ast_change_hint() not taking into account that the extension is
used for the hash key.
Richard Mudgett [Thu, 21 Jul 2011 17:30:57 +0000 (17:30 +0000)]
Update PickupChan documentation.
The PickupChan uses the ampersand as the argument separator.
Was documented as:
PickupChan(channel[,channel2[,...][,options]])
Fixed documentation to:
PickupChan(Technology/Resource[&Technology2/Resource2[&...]][,options])
This is a continuation of ASTERISK-17494 for v1.8 and later.
(closes issue ASTERISK-18144)
Reported by: Erik Smith
Patches:
pickupchan_ducumentation-v2.patch (License #6263) patch uploaded by Erik Smith
Tested by: Erik Smith
List the current mapping of DAHDI B channels to Asterisk channel names and
which calls are on hold or call-waiting. Calls on hold or call-waiting
are not associated with any B channel.
JIRA LIBPRI-27
JIRA SWP-2547
..........
r308205 | rmudgett | 2011-02-17 14:21:56 -0600 (Thu, 17 Feb 2011) | 1 line
Add more verbage to CLI command 'pri show channels' usage.
Kinsey Moore [Wed, 20 Jul 2011 19:00:23 +0000 (19:00 +0000)]
Inband DTMF regression
The functionality of inband DTMF in chan_sip relied upon
ast_rtp_instance_dtmf_mode_get/set not working properly to avoid calling
ast_rtp_instance_dtmf_begin/end on RTP streams with inband DTMF. According to
documentation, ast_rtp_instance_dtmf_begin/end is meant only for RFC2833 DTMF,
never inband. This fixes the regression introduced in revision 328823.
Kevin P. Fleming [Tue, 19 Jul 2011 21:29:07 +0000 (21:29 +0000)]
Revert partial attempt at handling pathnames with spaces.
Revision 299794 attempted to improve the build system to be able to handle
pathnames (primarily DESTDIR) with spaces in them, since this is common on
some platforms (including Mac OSX). Unfortunately, the changes were incomplete
and did not actually provide the desired behavior, and as a side effect the
functionality that ensured that stale headers in the Asterisk 'include' directory
were removed got broken. In addition, the check for stale (and possibly
incompatible) modules in the Asterisk 'modules' directory also got broken, and
would never report any stale modules. Users upgrading to this version or later
versions would then see unexpected module load errors.
Since there are few users who actually want to install Asterisk into paths
that contain spaces, and a proper fix for the build system would take many hours,
the best solution for now is to just revert the partial solution.
Kinsey Moore [Tue, 19 Jul 2011 17:57:18 +0000 (17:57 +0000)]
RTP bridge away with inband DTMF and feature detection
When deciding whether Asterisk was allowed to bridge the call away from the
core, chan_sip did not take into account the usage of features on dialed
channels that require monitoring of DTMF on channels utilizing inband DTMF.
This would cause Asterisk to allow the call to be locally or remotely bridged,
preventing access to the data required to detect activations of such features.
Kinsey Moore [Tue, 19 Jul 2011 15:43:32 +0000 (15:43 +0000)]
MeetMe requests a PIN twice in some circumstances
If a call to MeetMe includes both the dynamic(D) and always request PIN(P)
options, MeetMe will ask for the PIN two times: once for creating the
conference and once for entering the conference. This behavior was introduced
in rev 311616 when adding the CONFFLAG_ALWAYSPROMPT option to the logic branch
controlling PIN entry for joining a conference.
Mark Murawki [Mon, 18 Jul 2011 20:47:04 +0000 (20:47 +0000)]
app_dial may double free a channel datastore
When starting a call with originate, and having the callee channel run Bridge() on pickup, we will double free the dialed_interface_info datastore, causing a crash. Make sure to check if the datastore still exists before trying to free it.
(closes issue ASTERISK-17917)
Reported by: Mark Murawski
Tested by: Mark Murawski
Alexandr Anikin [Fri, 15 Jul 2011 19:22:24 +0000 (19:22 +0000)]
small gk processing fixes:
- decrease for 1 second registration ttl for very low expirations (some
providers expire few earlier than TTL)
- delete rrq and registration expire timers on URQ received as we make
new registration.
Introduce <support_level> tags in MODULEINFO.
This change introduces MODULEINFO into many modules in Asterisk in order to show
the community support level for those modules. This is used by changes committed
to menuselect by Russell Bryant recently (r917 in menuselect). More information about
the support level types and what they mean is available on the wiki at
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States
Kevin P. Fleming [Tue, 12 Jul 2011 22:53:53 +0000 (22:53 +0000)]
Correct double-free situation in manager output processing.
The process_output() function calls ast_str_append() and xml_translate() on its
'out' parameter, which is a pointer to an ast_str buffer. If either of these
functions need to reallocate the ast_str so it will have more space, they will
free the existing buffer and allocate a new one, returning the address of the
new one. However, because process_output only receives a pointer to the ast_str,
not a pointer to its caller's variable holding the pointer, if the original
ast_str is freed, the caller will not know, and will continue to use it (and
later attempt to free it).
Matthew Jordan [Tue, 12 Jul 2011 19:10:34 +0000 (19:10 +0000)]
Added additional checks for mailbox / password beginning with '*' character
A bug existed such that if a user entered a password with '*', and the extension 'a' did not exist, an invalid mailbox would be created and the user authenticated. The code was changed to prevent this from occurring, and to prevent users from having mailboxes or passwords defined that begin with the '*' character.
(closes issue ASTERISK-17443)
Reported by: Kevin Scott Adams
Tested by: Matt Jordan
Use 'printf' (POSIX issue 4) instead of 'echo -n', for portability.
The problem with using 'echo -n' is that it is not portable. While BSD systems
required that the '-n' option be removed and interpreted, System V required
that all strings should be echoed with no interpretation of options. This
fundamental difference of behavior means that it is never possible to use the
'-n' flag to echo in tests which are meant to be portable.
In this case, on Mac OS X 10.6, the /bin/sh shell builtin 'echo' uses the
System V semantics of the command, and thus the SHELL test failed on that
platform.
Terry Wilson [Mon, 11 Jul 2011 19:41:59 +0000 (19:41 +0000)]
Update chan_gtalk to work with changed GMail-based calls
The messages sent by the GMail client have changed, but include the
old-style messages as well. This patch checks for this case and
uses the old-style offer.
Richard Mudgett [Fri, 8 Jul 2011 21:41:58 +0000 (21:41 +0000)]
INVITE 403 Forbidden response always retransmits the maximum times.
Asterisk sends a 403 Forbidden response if authentication fails for an
INVITE as required. However, it ignores the ACK and keeps retransmitting
the response.
* Made not delete the to-tag in the dialog so the expected ACK can be
matched with the dialog and stop the retransmissions.
Reset our ast_str before passing it on to dialplan function backends.
It is possible for a dialplan backend to not modify the given buffer or ast_str
and still return success. This causes any previous value stored in the buffer
to be used as if the new function call provided it. Some functions also append
to the given buffer assuming it is empty.
The test_substitution unit test has also been modified to detect this problem.
Jonathan Rose [Thu, 7 Jul 2011 16:04:51 +0000 (16:04 +0000)]
res_odbc patch by tilghman to fix integers with null values
Addresses some improper sql statements in res_odbc that would cause an update to fail on
realtime peers due to trying to set as "(NULL)" rather than an actual NULL.
David Vossel [Wed, 6 Jul 2011 15:26:49 +0000 (15:26 +0000)]
Reverts fix for timerfd locking issue.
jrose discovered a performance issue with this
fix that prevents his analog phones from working
when using timerfd as a timing source. Until
it is understood what is causing this performance
problem, this patch is being reverted.
Add the attribute "type" to each "<use>" for menuselect.
This matters only when autoconf fails to detect that weak linking is supported.
External optional dependencies will become optional in both cases, as they are
removed at compile time when not detected. However, runtime-optional modules
are made mandatory when weak linking is not found. This change affects only
the external optional dependencies; previously, they were incorrectly required
when weak linking support was not detected.
Patches:
20110702__issue18062__asterisk_trunk.diff.txt by tilghman (License #5003)
Matthew Jordan [Tue, 5 Jul 2011 13:23:57 +0000 (13:23 +0000)]
Updated filestream destructor to block until move is complete when cache is used
When a cache directory is used, the process is forked and a mv command is executed to move the temporary file to the permanent location. This caused issues with voicemail, where a race condition occurred when the parent expected the file to be in the permanent location prior to the mv command completing. The parent process is now blocked until the mv command completes.
(closes issue ASTERISK-17724)
Reported by: Adiren P.
Tested by: mjordan
Richard Mudgett [Fri, 1 Jul 2011 21:07:22 +0000 (21:07 +0000)]
Better way to get chan and pvt lock for issue ASTERISK-17431.
Redoes -r308945 for issue ASTERISK-17431 deadlock fix for
sip_set_udptl_peer() and sip_set_rtp_peer().
* Lock the channels in the defined order and avoid the need for a deadlock
avoidance loop.
* Lock the channel before getting the pointer to the private structure to
be sure that the pointer will not change due to a masquerade or channel
hangup.
* To preserve sanity, check that chan and p->owner are the same. (Pointer
rearangements should not happen without the protection of locks because
bad things tend to happen otherwise.)
Kinsey Moore [Wed, 29 Jun 2011 21:49:21 +0000 (21:49 +0000)]
chan_sip: cleanup from the introduction of ast_str
Remove the length field from sip_req and sip_pkt in chan_sip since they are
redundant (ast_str holds its own length) and refactor the necessary functions.
Richard Mudgett [Wed, 29 Jun 2011 18:05:15 +0000 (18:05 +0000)]
Response to QueueRule manager command does not contain ActionID if it was specified.
* Add ActionID support as documented for the QueueRule AMI action.
* Remove documentation for ActionID with the Queues AMI action. The
output does not follow normal AMI response output and there is no place to
put an ActionID header.
Richard Mudgett [Mon, 27 Jun 2011 15:37:19 +0000 (15:37 +0000)]
When subscribing MWI to an unsolicited mailbox the first notification is incorrect.
A remote peer subscribed to MWI with the unsolicited option and a local
phone subscribed to the remote mailbox. The notify message-summary events
are sent correctly except for the first one when subscribing, which will
always be 0. This means the phone MWI indicator will be wrong until the
mailbox read/unread count changes and the event is fired.
Looks like this is a regression from ASTERISK-16149.
* Fix the logic to check the cache and if allowed then fallback to
manually counting mailbox messages.