Kinsey Moore [Tue, 25 Oct 2011 19:08:45 +0000 (19:08 +0000)]
Fix compilation on Snow Leopard/FreeBSD for pbx_spool.c
One of the changes in the recent spool handling of hardlinks patch was just
outside a HAVE_INOTIFY block and caused compilation to fail in some build
environments. This has been corrected.
........
Merged revisions 342328 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Fix spool handling to allow call files to be hardlinked into place
This fixes the inotify code to handle call files being hardlinked into the
spool directory.
The smsq utility does this, instead of rename(), to ensure that it cannot
accidentally overwrite an existing spool file. A rename() might do that, but
link() will definitely not.
The inotify code had broken this, because it would wait for an IN_CLOSE_WRITE
event on the file... which was never forthcoming, since it was never opened.
Now we look for IN_OPEN events following the IN_CREATE event, and only wait
for an IN_CLOSE_WRITE if the file was actually opened.
Terry Wilson [Tue, 25 Oct 2011 01:25:52 +0000 (01:25 +0000)]
Return NULL when no results returned for realtime_multientry
It was not documented what the return value should be when no entries
were returned with the multientry realtime callback. This change forces
consistent behavior even if the backends return an empty ast_config.
Jonathan Rose [Mon, 24 Oct 2011 19:51:59 +0000 (19:51 +0000)]
Outbound SIP OPTIONS messages will now include fromuser of related peer.
This behavior matches up more closely with the way invite/register/etc are handled.
This patch also modifies some adjacent code for code style compliance. Pretty minor.
(closes issue ASTERISK-17616)
Reported by: Jeremy Kister
Patches:
chan_sip.c-options-fromuser-fix-v1.patch uploaded by Jeremy Kister (license #6232)
........
Merged revisions 342061 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Richard Mudgett [Thu, 20 Oct 2011 21:58:39 +0000 (21:58 +0000)]
Fix AGI exec Park to honor the Park application parameters.
The fix for ASTERISK-12715 and ASTERISK-12685 added a check for the Park
application because the channel needed to be masqueraded to prevent a
crash. Since the Park application now always masquerades the channel into
the parking lot, the special check is no longer needed. The fix also
resulted in AGI exec Park attempting to double park the call and not honor
the Park application parameters.
* Removed no longer necessary call to ast_masq_park_call() by AGI exec for
the Park application. (Reverts -r146923)
* Fix Park application to only return 0 or -1. The AGI exec Park was
causing broken pipe error messages because the Park application returned 1
on successful park.
(closes issue ASTERISK-18737)
........
Merged revisions 341717 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Gregory Nietsky [Thu, 20 Oct 2011 18:20:08 +0000 (18:20 +0000)]
add documentation for check_state_unknown in configs/queues.conf.sample
app_queue allows calls to members in a "Unknown" state to be treated as available
setting check_state_unknown = yes will cause app_queue to query the channel driver
to better determine the state this only applies to queues with ringinuse or ignorebusy
set appropriately.
Gregory Nietsky [Thu, 20 Oct 2011 17:13:23 +0000 (17:13 +0000)]
Add option to check state when state is unknown
r341486 reverts r325483 this is a rework of the patch.
optimize to minimize load.
add option check_state_unknown to control whether a member with unknown
device state is checked there is a small % chance that calls will be sent
to the member when they on a call.
app_queue will see a device with unknown state as available and does not
try verify the state without this option enabled.
Terry Wilson [Thu, 20 Oct 2011 15:14:08 +0000 (15:14 +0000)]
Clean up ast_check_digits
The code was originally copied from the is_int() function in the AEL
code. wdoekes pointed out that the function should take a const char*
and that their was an unneeded variable. This is now fixed.
........
Merged revisions 341529 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Fix a performance regression introduced in r325483.
The regression was caused by a call to ast_parse_device_state() in app_queue's
ring_entry() function. The ast_parse_device_state() function eventually calls
ast_channel_get_full() with a channel name prefix which causes it to walk the
channel list causing massive lock contention and slow downs.
This patch fixes the regression by removing the call to
ast_parase_device_state() which should be unnecessary. Queue member device
state should be maintained by device state events. Some users have seen
instances where busy agents were called when they shouldn't have, which is the
reason the call to ast_parse_device_state() was added. That change appears to
have resolved that issue but also causes this performance regression. There may
still be issues with queue member status, and if so, alternative methods should
be investigated to resolve them.
Paul Belanger [Wed, 19 Oct 2011 19:01:21 +0000 (19:01 +0000)]
Outgoing calls with Google Voice
Google has recently make some changes (again) to their protocol. Rather then
patching asterisk to flip between the two different methods, we now allow both.
Lets hope this keeps Google Voice happy for a while.
Terry Wilson [Tue, 18 Oct 2011 23:42:09 +0000 (23:42 +0000)]
Don't resolve numeric hosts or contact unresolved hosts
If a SIP dial string contains a numeric hostname that is not a peer name,
don't try to resolve it as it is unlikely that someone really means
Dial(SIP/0.0.4.26) when Dial(SIP/1050) is called. Also, make sure that
create_addr returns -1 if an address isn't resolved so that we don't
attempt to send SIP requests to an address that doesn't resolve.
Richard Mudgett [Tue, 18 Oct 2011 21:11:42 +0000 (21:11 +0000)]
More parking issues.
* Fix potential deadlocks in SIP and IAX blind transfer to parking.
* Fix SIP, IAX, DAHDI analog, and MGCP channel drivers to respect the
parkext_exclusive option with transfers (Park(,,,,,exclusive_lot)
parameter). Created ast_park_call_exten() and ast_masq_park_call_exten()
to maintian API compatibility.
* Made masq_park_call() handle a failed ast_channel_masquerade() setup.
Terry Wilson [Mon, 17 Oct 2011 17:36:45 +0000 (17:36 +0000)]
Initialize variables before calling parse_uri
If parse_uri was called with an empty URI, some pointers would be
modified and an invalid read could result. This patch avoids calling
parse_uri with an empty contact uri when parsing REGISTER requests.
AST-2011-012
(closes issue ASTERISK-18668)
........
Merged revisions 341189 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kevin P. Fleming [Fri, 14 Oct 2011 21:36:55 +0000 (21:36 +0000)]
Change the internal name of the menuselect options that are used to control
whether modules are embedded or not; using just the bare category name led to
accidentally enabling these options when users used the wrong "--enable"
operation on the menuselect command line.
Now the internal option names are prefixed with "EMBED_", so they won't be
the same as the name of the category containing the modules they control
the embedding of.
........
Merged revisions 341022 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Quiet RTCP Receiver Reports during fax transmission
RTCP is now disabled for "inactive" RTP audio streams during SIP T.38 sessions.
The ability to disable RTCP streams in res_rtp_asterisk was missing, so this
code was added to support the bug fix.
Gregory Nietsky [Thu, 13 Oct 2011 08:46:47 +0000 (08:46 +0000)]
Only send MWI Notify on register if the registration is successful.
lastmsgssent was removed from chan_sip and the old behavior of
sending a mwi notify on register [except when subscribemwi is set]
was restored but this must only happen when registration succeeds.
leaking information for unsuccessful registrations is not secure.
Terry Wilson [Thu, 13 Oct 2011 00:14:52 +0000 (00:14 +0000)]
Don't skip the query field on a realtime multi query
There is no documented reason to not add the query field to the varlist
returned by a realtime multi query, despite the config category being
set to its value. Of course, there is no documentation that the category
should be set to the value either. There is lots of no documentation
when it comes to realtime. But, other engines do not skip this field so
I am forcing this backend to follow the convention, because not doing so
is very silly.
........
Merged revisions 340662 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Update SIP realtime fullcontact regardless of caching
We should update the fullcontact field in the realtime table whether or
not rtcachefriends is set. There is no reason to treat a non-cached
realtime entity differently than a cached in this regard.
Richard Mudgett [Wed, 12 Oct 2011 17:51:16 +0000 (17:51 +0000)]
Update MeetMe p and X option documentation when interacting with the s option.
ASTERISK-12175 changed the p and X options to not interfere with the s
option when they are used together. It makes more sense for the s option
to have priority for the DTMF '*' key since it cannot change its
activation code. Otherwise, you could not use option s with the p or X
options.
JIRA AST-671
........
Merged revisions 340470 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Richard Mudgett [Tue, 11 Oct 2011 18:53:34 +0000 (18:53 +0000)]
Convert registered AMI actions to ao2 objects.
* Fixed race between calling an AMI action callback and unregistering that
action. Refixes ASTERISK-13784 broken by ASTERISK-17785 change.
* Fixed potential memory leak if an AMI action failed to get registered
because is already was registered. Part of the ao2 conversion.
* Fixed AMI ListCommands action not walking the actions list with a lock
held.
* Fix usage of ast_strdupa() and alloca() in loops. Excess stack usage.
* Fix AMI Originate action Variable header requiring a space after the
header colon. Reported by Yaroslav Panych on the asterisk-dev list.
* Increased the number of listed variables allowed per AMI Originate
action Variable header to 64.
* Fixed AMI GetConfigJSON action output format.
* Fixed usage of res contents outside of scope in append_channel_vars().
* Fixed inconsistency of config file channelvars option. The values no
longer accumulate with every channelvars option in the config file. Only
the last value is kept to be consistent with the CLI "manager show
settings" command.
Tzafrir Cohen [Tue, 11 Oct 2011 18:41:05 +0000 (18:41 +0000)]
Update SHA1 code to RFC 6234
RFC 6234 is an update to RFC 3174 from which the code was originally taken.
It has a slightly better code, and a better phrased license (simple 3-clause
BSD).
* main/sha1.c is sha1.c from RFC 6234 with formatting changes only.
* include/asterisk/sha1.h merges sha.h and sha-private.h from RFC 6234.
* Removed unused include of asterisk/sha1.h from main/channels.c
Terry Wilson [Mon, 10 Oct 2011 22:55:39 +0000 (22:55 +0000)]
On astdb conversion, also warn about permissions requirements
The user running Asterisk must have permission to the directory
the Asterisk database resides in since SQLite 3 needs to be able
to create a journal file.
Terry Wilson [Mon, 10 Oct 2011 22:38:06 +0000 (22:38 +0000)]
Add astdb conversion utility for Berkeley to SQLite 3
If someone wants to backtrack from Asterisk 1.8 to 10 they can use the
astdb2bdb utility to convert the database back to the Berkeley format
that Asterisk 1.8 uses.
Updated chan_sip to place calls on hold if SDP address in INVITE is ANY
This patch fixes the case where an INVITE is received with c=0.0.0.0 or ::.
In this case, the call should be placed on hold. Previously, we checked for
the address being null; this patch keeps that behavior but also checks for
the ANY IP addresses.
Review: https://reviewboard.asterisk.org/r/1504/
(closes issue ASTERISK-18086)
Reported by: James Bottomley
Tested by: Matt Jordan
........
Load the proper XML documentation when multiple modules document the same application.
This patch adds an optional "module" attribute to the XML documentation spec
that allows the documentation processor to match apps with identical names from
different modules to their documentation. This patch also fixes a number of
bugs with the documentation processor and should make it a little more
efficient. Support for multiple languages has also been properly implemented.
Damien Wedhorn [Sun, 9 Oct 2011 22:18:27 +0000 (22:18 +0000)]
Return -1 to skinny_session if register rejected.
If device registration is rejected, return -1 so that the session is
destroyed immediately. Previously, a segfault would occur on a
graceful shutdown if a register is rejected and the skinny_session
has not yet timed out.
Damien Wedhorn [Sun, 9 Oct 2011 21:09:12 +0000 (21:09 +0000)]
Remove log message on traverse session list.
On destroying a session, a list of sessions is traversed to find the
matching session. For each session not matching, skinny erroneously
logged that the session was not matched. While technically correct
the message was misleading, and tended to indicate errors that
were not there.
Fix regression in configure script for libpri capability checks.
JIRA AST-598 added the PRI_L2_PERSISTENCE option to fix BRI PTMP TE layer
2 persistence issues with some telcos. ASTERISK-18535 attempted to fix
the unexpected requirement that libpri *must* have that feature to work
with Asterisk. The AST_EXT_LIB_SETUP_DEPENDENT lines made the PRI
optional features required. Unfortunately, I thought
AST_EXT_LIB_SETUP_DEPENDENT didn't do anything useful for libpri and
deleted those lines for libpri. The result was the HAVE_PRI_xxx defines
that control the ability to use optional libpri features were also
deleted.
* Created AST_EXT_LIB_SETUP_OPTIONAL configuration macro to allow optional
features in a library that the source code could take advantage of if the
code supports the feature.
Damien Wedhorn [Thu, 6 Oct 2011 20:47:08 +0000 (20:47 +0000)]
Fixed segfault on core stop gracefully.
There was an issue that the cap and confcap pointers for each line and device
were being memcpy'd so they all pointed to the same ast_format_cap. On
destroying, a segfault occured on the second call to the same struct.
Update prep_tarball script to download pre-exported documentation.
I've updated the prep_tarball script to now download the pre-exported documentation
from the Asterisk wiki. This will give us more control over what is being included
in the tarball releases, and will make both the PDF and HTML exported documentation
look much better (especially when viewing from a console).
Gregory Nietsky [Wed, 5 Oct 2011 06:28:46 +0000 (06:28 +0000)]
Only change the capabilities on the gateway when
the session is been destroyed there is still
a race condition that ends in a segfault.
if the caps are changed the logic in res_fax_spandsp
will run T30 code not gateway code to end the session.
this has been experienced on a "slower" under spec system.
Removes improper use of sound 'and' in German language mode from application saynumber
Asterisk would say 'Five hundert und sechs und zwanzig' instead of 'Five hundert sechs
und zwanzig'... which is both weird sounding and wrong. This patch makes sure Asterisk
will only say the 'and' word between the single digit and double digit places.
Reverting revision 333265 due to component connection problems it introduces.
I'm going to attempt some generic res_jabber cleanup and come up with a new fix for this
problem, but first it seems prudent to remove this rather broad attempt to fix it and
instead approach this problem either from the same angle but looking only at canceling
(or possibly rescheduling) the send when we absolutely know it will cause a segfault
or, if that can't be easily accomplished, strictly from the devstate side of things.
Also, I'm pretty sure a lot of the code in res_jabber isn't thread safe.
Properly ignore AST_CONTROL_UPDATE_RTP_PEER in more places
After the change in r336294, the new AST_CONTROL_UPDATE_RTP_PEER frame
is sent when a re-invite happens. If we receive a re-invite from a device
the waitstream_core was not aware of the new control frame and would drop
the call.
Gregory Nietsky [Mon, 3 Oct 2011 09:37:59 +0000 (09:37 +0000)]
Fixup a race condition in res_fax.c where FAXOPT(gateway)=no will
turn off the gateway but the framehook is not destroyed.
this problem happens when a gateway is attempted in the dialplan and
the device is not available i may want to do fax to mail in the server
it will not be allowed.
instead of checking only AST_FAX_TECH_GATEWAY also check gateway_id
Fix segfault in analog_ss_thread() not checking ast_read() for NULL.
NOTE: The problem was reported against v1.6.2. It is unlikely to ever
happen on v1.8 and above since chan_dahdi.c:analog_ss_thread() is unlikely
to be used. The version in sig_analog.c has largely replaced it.
(closes issue ASTERISK-18648)
Reported by: Stephan Bosch
Patches:
jira_asterisk_18648_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: Stephan Bosch
........
The SIP_HEADER function only works on the the initial SIP INVITE. The documentation was updated
in trunk, but not in 1.8 or 10, so I'm making them match.
Dummy channels created by ast_dummy_channel_alloc() should be destoyed by
ast_channel_unref(). Using ast_channel_release() needlessly grabs the
channel container lock and can cause a deadlock as a result.
* Analyzed use of ast_dummy_channel_alloc() and made use
ast_channel_unref() when done with the dummy channel. (Primary reason for
the reported deadlock.)
* Made app_dial.c:dial_exec_full() not call ast_call() holding any channel
locks. Chan_local could not perform deadlock avoidance correctly.
(Potential deadlock exposed by this issue. Secondary reason for the
reported deadlock since the held lock was part of the deadlock chain.)
* Fixed some uses of ast_dummy_channel_alloc() not checking the returned
channel pointer for failure.
* Fixed some potential chan=NULL pointer usage in func_odbc.c. Protected
by testing the bogus_chan value.
* Fixed needlessly clearing a 1024 char auto array when setting the first
char to zero is enough in manager.c:action_getvar().
(closes issue ASTERISK-18613)
Reported by: Thomas Arimont
Patches:
jira_asterisk_18613_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: Thomas Arimont
........