Matthew Jordan [Wed, 18 Jan 2012 21:05:35 +0000 (21:05 +0000)]
Include iLBC source code for distribution with Asterisk
This patch includes the iLBC source code for distribution with Asterisk.
Clarification regarding the iLBC source code was provided by Google, and
the appropriate licenses have been included in the codecs/ilbc folder.
Stefan Schmidt [Wed, 18 Jan 2012 15:57:49 +0000 (15:57 +0000)]
The get_pai function in chan_sip.c didn't recognized a proper callerid name and
number from a P-Asserted-Identity cause the header parsing logic was wrong.
Changing the parsing functions to the sip header parsing APIs in
reqresp_parser.h solves this problem.
Review: https://reviewboard.asterisk.org/r/1673
Reviewed by: wdoekes2 and Mark Michelson
........
Merged revisions 351396 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Tue, 17 Jan 2012 17:08:33 +0000 (17:08 +0000)]
Adds pjmedia probation concepts to res_rtp_asterisk's learning mode.
In order to better handle RTP sources with strictrtp enabled (which is now default in 10)
using the learning mode to figure out new sources when they change is handled by checking
for a number of consecutive (by sequence number) packets received to an rtp struct
based on a new configurable value called 'probation'. Also, during learning mode instead
of liberally accepting all packets received, we now reject packets until a clear source
has been determined.
Mark Michelson [Tue, 17 Jan 2012 16:54:31 +0000 (16:54 +0000)]
Use built-in parsing functions for Contact and Record-Route headers.
If a Contact or a Record-Route header had a quoted string with an
item in angle brackets, then we would mis-parse it. For instance,
"Bob <1234>" <1234@example.org>
would be misparsed as having the URI "1234"
The fix for this is to use parsing functions from reqresp_parser.h
since they are heavily tested and are awesome.
(issue ASTERISK-18990)
........
Merged revisions 351284 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Tue, 17 Jan 2012 16:07:42 +0000 (16:07 +0000)]
Fix udptl issue with initial INVITE introduced by r351027
When an inital INVITE occurs that contains image media, a channel
is not yet associated with the SIP dialog. The file descriptor
associated with the udptl session needs to be set in
initialize_udptl or in sip_new to account for this scenario.
........
Merged revisions 351233 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Russell Bryant [Tue, 17 Jan 2012 01:43:19 +0000 (01:43 +0000)]
Merged revisions 351182 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r351182 | russell | 2012-01-16 20:37:03 -0500 (Mon, 16 Jan 2012) | 22 lines
Add some missing locking in chan_sip.
This patch adds some missing locking to the function
send_provisional_keepalive_full(). This function is called from the scheduler,
which is processed in the SIP monitor thread. The associated channel (or pbx)
thread will also be using the same sip_pvt and ast_channel so locking must be
used. The sip_pvt_lock_full() function is used to ensure proper locking order
in a safe manner.
In passing, document a suspected reference counting error in this function.
The "fix" is left commented out because when the "fix" is present, crashes
occur. My theory is that fixing it is exposing a reference counting error
elsewhere, but I don't know where. (Or my analysis of this being a problem
could have been completely wrong in the first place). Leave the comment in
the code for so that someone may investigate it again in the future.
Also add a bit of doxygen to transmit_provisional_response().
Terry Wilson [Mon, 16 Jan 2012 21:17:08 +0000 (21:17 +0000)]
Ensure ACK retransmit & hangup on non-200 response to INVITE
When handling a non-2xx final response on an INVITE transaction, we have to
keep the transaction around after we send an ACK in case we receive a
retransmission of the response so we can re-transmit the ACK, but also tear
down the ast_channel as soon as we transmit the ACK. Before this patch, we
could fail at both of these things. Calling sip_alreadygone/needdestroy
prevented us from keeping the transaction up and retransmitting the ACK, and
queueing CONGESTION was not sufficient to cause the channel to be torn down
when originating calls via the CLI, for example.
This patch queues a hangup with CONGESTION instead of just queueing CONGESTION
for these responses and removes the sip_alreadygone and sip_needdestroy calls
from handle_response_invite on non-2xx responses. It relies on the hangup
calling sip_scheddestroy.
For more information, see section 17.1.1.1 of RFC 3261.
Terry Wilson [Mon, 16 Jan 2012 20:13:55 +0000 (20:13 +0000)]
Don't prematurely stop SIP session timer
When Asterisk is the UAS (incoming call, endpoint is re-inviting) the SIP session timer expires after half the time the sip endpoint indicates in the Session-expires header in proc_session_timer(). The session timer was being stopped totally and being handled as an error case instead of running again until the second expiry. This patch treats the half-time expiry as a non-error case and continues the timer until the true expiry.
(closes issue ASTERISK-18996)
Reported by: Thomas Arimont
Tested by: Thomas Arimont
Patches: session_timer_fix.diff by Terry Wilson (License #5357)
based on session_timer.patch by Thomas Arimont (License #5525)
........
Merged revisions 351080 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Mon, 16 Jan 2012 19:12:38 +0000 (19:12 +0000)]
Create and initialize udptl only when dialog negotiates for image media
Prior to this patch, the udptl struct was allocated and initialized when a
dialog was associated with a peer that supported T.38, when a new SIP
channel was allocated, or what an INVITE request was received. This resulted
in any dialog associated with a peer that supported T.38 having udptl support
assigned to it, including the UDP ports needed for communication. This
occurred even in non-INVITE dialogs that would never send image media.
This patch creates and initializes the udptl structure only when the SDP
for a dialog specifies that image media is supported, or when Asterisk
indicates through the appropriate control frame that a dialog is to support
T.38.
(closes issue ASTERISK-16698)
Reported by: under
Tested by: Stefan Schmidt
Patches: udptl_20120113.diff uploaded by mjordan (License #6283)
Walter Doekes [Sun, 15 Jan 2012 20:12:54 +0000 (20:12 +0000)]
Allow only one thread at a time to do asterisk cleanup/shutdown.
Add locking around the really-really-quit part of the core stop/restart
part. Previously more than one thread could be called to do cleanup,
causing atexit handlers to be run multiple times, in turn causing
segfaults.
(issue ASTERISK-18883)
Reviewed by: Terry Wilson
Review: https://reviewboard.asterisk.org/r/1662/
Review: https://reviewboard.asterisk.org/r/1658/
........
Merged revisions 350888 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kevin P. Fleming [Sat, 14 Jan 2012 16:41:55 +0000 (16:41 +0000)]
Ensure that all AC_LANG_PROGRAM calls in the configure script are properly quoted.
Recent versions of autoconf (2.68 on my system) won't properly process the configure
script unless every call to AC_LANG_PROGRAM is m4-quoted. Many calls in the script
were, but many were not. This patch corrects the unquoted calls.
........
Merged revisions 350837 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kinsey Moore [Fri, 13 Jan 2012 21:41:24 +0000 (21:41 +0000)]
Make sure asterisk builds on OpenBSD
OpenBSD defines SO_PEERCRED, but it returns a 'struct sockpeercred', not
'struct ucred', which causes compilation of main/asterisk.c to fail in
read_credentials(). This allows configure to check for sockpeercred and
asterisk to deal with it properly.
(closes issue ASTERISK-18929) Reported-by: Barry Miller Patch-by: Barry Miller
........
Merged revisions 350730 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Fri, 13 Jan 2012 16:59:02 +0000 (16:59 +0000)]
Realtime queues failed to load queue information without queue member table
Previously, realtime queues could be loaded without defining the queue member
table. This allowed for queue members to be dynamic, while the realtime
queue definitions could exist in some backing storage. Revision 342223 broke
this when it changed the return value for realtime_multientry to return NULL
when no results are returned. Previously, an empty ast_config object was
expected.
(closes issue ASTERISK-19170)
Reported by: Rene Mendoza
Tested by: Rene Mendoza
Patches:
rt_queue_member_patch.diff uploaded by Matt Jordan (license 6283)
........
Merged revisions 350552 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Fri, 13 Jan 2012 16:43:11 +0000 (16:43 +0000)]
Fix crash from bridge channel hangup race condition in ConfBridge
This patch addresses two issues in ConfBridge and the channel bridge layer:
1. It fixes a race condition wherein the bridge channel could be hung up
2. It removes the deadlock avoidance from the bridging layer and makes the
bridge_pvt an ao2 ref counted object
Patch by David Vossel (mjordan was merely the commit monkey)
(issue ASTERISK-18988)
(closes issue ASTERISK-18885)
Reported by: Dmitry Melekhov
Tested by: Matt Jordan
Patches: chan_bridge_cleanup_v.diff uploaded by David Vossel (license 5628)
(closes issue ASTERISK-19100)
Reported by: Matt Jordan
Tested by: Matt Jordan
Richard Mudgett [Wed, 11 Jan 2012 21:47:04 +0000 (21:47 +0000)]
Make FollowMe optionally update connected line information when the accepting endpoint is bridged.
Like Dial and Queue, FollowMe needs to deal with
AST_CONTROL_CONNECTED_LINE information so when the parties are initially
bridged, the connected line information will be correct.
* Added the 'I' option just like the app_dial and app_queue 'I' option.
* Made 'N' option ignored if the call is already answered.
Walter Doekes [Mon, 9 Jan 2012 19:34:33 +0000 (19:34 +0000)]
Fix shutdown handling of sqlite3 astdb.
If a db_sync was scheduled just before shutdown, the atexit code calling
db_sync would have no effect, causing the astdb commit thread to stay
alive. This caused the SIP/realtime_sipregs test to fail. (The fallback
kill would run the atexit code again and that would wreak havoc.) This
fixes that the atexit kill condition is picked up properly.
(closes issue ASTERISK-18883)
Reviewed by: Terry Wilson
Update contrib script live_ast to invoke Asterisk with valgrind and suppression file.
* Added valgrind_compare script to compare two valgrind log files for
differences.
(issue ASTERISK-17339)
Reported by: Tzafrir Cohen
Patches:
valgrind_compare (license #5035) script uploaded by Tzafrir Cohen
live_ast_valgrind.diff (license #5035) patch uploaded by Tzafrir Cohen
live_ast_valgrind_v2.diff (license #5185) patch uploaded by Paul Belanger
........
r350128 | rmudgett | 2012-01-09 12:54:56 -0600 (Mon, 09 Jan 2012) | 11 lines
live_ast: valgrind: run asterisk under valgrind
Adds a new sub-command, "valgrind" to live_ast. It runs asterisk under
valgrind. The extra command-line parameters are passed to Asterisk as
usual, and parameters to valgrind are passed through LIVE_AST_VALGRIND_ARGS
in live.conf .
Review: https://reviewboard.asterisk.org/r/1109/
Merged revisions 326636 from http://svn.asterisk.org/svn/asterisk/branches/10
........
Merged revisions 350127-350128 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kinsey Moore [Mon, 9 Jan 2012 15:39:31 +0000 (15:39 +0000)]
Prevent SLA settings from getting wiped out on reload
If SLA was reloaded without the config file being changed, current settings got
wiped out before the SLA reload code decided it wasn't going to reload the file
since nothing was changed. Moving the settings reset later in the reload
process fixes this.
(closes issue AST-744)
........
Merged revisions 350023 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Terry Wilson [Fri, 6 Jan 2012 23:25:03 +0000 (23:25 +0000)]
Don't leak CID in From header when presentation=unavailable
When someone does Set(CALLERPRES()=unavailable) (or
Set(CALLERID(pres)=unavailable)) when sendrpid=no, the From header shows
"Anonymous" <anonymous@anonymous.invalid>. When sendrpid=yes/pai, the From
header will still display the callerid info, even though we supply an rpid
header with the anonymous info. It seems like we shouldn't leak that info in
any case. Skimming http://tools.ietf.org/html/draft-ietf-sip-privacy-04 seems
to indicate that one shouldn't send identifying info in the From in this case.
This patch anonymizes the From header as well even when sendrpid=yes/pai.
Kinsey Moore [Fri, 6 Jan 2012 21:25:19 +0000 (21:25 +0000)]
Fix lua goto detection to prevent unexpected behavior with confbridge
A bug in the pbx_lua goto detection was causing the dialplan to hangup
unexpectedly after confbridge exited if it had called lua dialplan code during
execution.
Patch-by: Timo Teras Acked-by: Matt Nicholson
(closes issue ASTERISK-18976)
Matthew Jordan [Thu, 5 Jan 2012 23:56:52 +0000 (23:56 +0000)]
Fix premature free'ing of the frame committed in r349608
Even though we set the frame to the ast_null_frame and return that,
the caller of the frame hook may still need the frame. This now is
a bit more careful about when it frees the frame, i.e., only under
the same conditions that applied when we duplicated it in the first
place.
Richard Mudgett [Thu, 5 Jan 2012 23:46:01 +0000 (23:46 +0000)]
Make not assume that the cel_sqlite3_custom SQL table primary key is AcctId.
If a table is created by some other application and the primary key is not
named "AcctId", cel/cel_sqlite3_custom.c will always try to create the
table and fail because it already exists.
* Change the SQL table query to not require AcctId as the primary key.
Kinsey Moore [Thu, 5 Jan 2012 22:10:45 +0000 (22:10 +0000)]
Allow playback of formats that don't support seeking
ast_streamfile previously did unconditional seeking on files that broke
playback of formats that don't support that functionality. This patch avoids
the seek that was causing the problem. This regression was introduced in
r158062.
(closes issue ASTERISK-18994) Patch-by: Timo Teras
........
Merged revisions 349731 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Thu, 5 Jan 2012 21:55:01 +0000 (21:55 +0000)]
Fix an issue where dsp.c would interpret multiple dtmf events from a single key press.
When receiving calls from a mobile phone into a DISA system on a connection with
significant interference, the reporter's Asterisk system would interpret DTMF incorrectly
and replicate digits received. This patch resolves that by increasing the number of
frames a mismatch has to be detected before assuming the DTMF is over by 1 frame and
adjusts dtmf_detect function to reset hits and misses only when an edge is detected.
(closes issue ASTERISK-17493)
Reported by: Alec Davis
Patches:
bug18904-refactor.diff.txt uploaded by Alec Davis (license 5546)
Review: https://reviewboard.asterisk.org/r/1130/
........
Merged revisions 349728 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Thu, 5 Jan 2012 16:07:05 +0000 (16:07 +0000)]
Ensures Asterisk closes when receiving terminal signals in 'no fork' mode.
When catching a signal, in no fork mode the console thread is identical to the thread
responsible for catching the signal and closing Asterisk, which requires it to first
dispense with the console thread. Prior to this patch, if these threads were identical,
upon receiving a killing signal, the thread will send an URG signal to itself, which
we also catch and then promptly do nothing with. Obviously this isn't useful behavior.
(closes issue ASTERISK-19127)
Reported By: Bryon Clark
Patches:
quit_on_signals.patch uploaded by Bryon Clark (license 6157)
........
Merged revisions 349672 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Wed, 4 Jan 2012 22:19:34 +0000 (22:19 +0000)]
Fix for ConfBridge config parser unlocking channel mutex too many times
When looking up a ConfBridge profile, the config parser would, if it
found a channel datastore on the channel requesting the bridge profile,
unlock the channel mutex twice. Since that's a little aggressive,
it now only unlocks it once.
(closes issue ASTERISK-19042)
Reported by: Matt Jordan
Tested by: Matt Jordan
Patches:
19042 uploaded by David Vossel (license 5628)
Matthew Jordan [Wed, 4 Jan 2012 21:39:59 +0000 (21:39 +0000)]
Free successfully translated frame in fax_gateway_framehook
A frame that is translated via ast_translate is also duplicated via ast_frdup.
This will allocate a new frame on the heap, which needs to be free'd
at the appropriate time. This issue reporter used valgrind to find that this
occurred in res_fax's fax_gateway_framehook; a quick search through the code
showed that only place this was currently not handling the translatted frame
properly.
Richard Mudgett [Wed, 4 Jan 2012 20:50:24 +0000 (20:50 +0000)]
Fix segfault in chan_dahdi for CHANNEL(dahdi_span) evaluation on hangup.
* Added NULL private pointer checks in the following chan_dahdi channel
callbacks: dahdi_func_read(), dahdi_func_write(), dahdi_setoption(), and
dahdi_queryoption().
Kinsey Moore [Wed, 4 Jan 2012 20:23:45 +0000 (20:23 +0000)]
Make debian init script conform to the LSB standard
Previously, this init script would return 1 if Asterisk was already running.
This is incorrect behavior according to the LSB standard and has been fixed by
returning 0 instead.
Kinsey Moore [Wed, 4 Jan 2012 20:01:27 +0000 (20:01 +0000)]
Update autosupport script and man page
Added information collection from the output of the utilities: top, free, uptime, ifconfig
Added information collection from the output of the Asterisk command 'dahdi show status'
Added option / flag '-n, --non-interactive'
Updated man page to reflect new option / flag '-n, --non-interactive'
Patch-by: John Bigelow (itzanger)
(closes issue AST-749)
........
Merged revisions 349504 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Thu, 29 Dec 2011 15:14:08 +0000 (15:14 +0000)]
Handle AST_CONTROL_UPDATE_RTP_PEER frames in local bridge loop
Failing to handle AST_CONTROL_UPDATE_RTP_PEER frames in the local bridge loop
causes the loop to exit prematurely. This causes a variety of negative side
effects, depending on when the loop exits. This patch handles the frame by
essentially swallowing the frame in the local loop, as the current channel
drivers expect the RTP bridge to handle the frame, and, in the case of the
local bridge loop, no additional action is necessary.
(issue ASTERISK-19040)
(issue ASTERISK-19128)
(issue ASTERISK-17725)
(issue ASTERISK-18340)
(closes issue ASTERISK-19095)
Reported by: Stefan Schmidt
Tested by: Matt Jordan
Kevin P. Fleming [Wed, 28 Dec 2011 18:49:29 +0000 (18:49 +0000)]
Improve T.38 gateway V.21 preamble detection.
This commit removes the V.21 preamble detection code previously added to the
generic DSP implementation in Asterisk, and instead enhances the res_fax module
to be able to utilize V.21 preamble detection functionality made available by
FAX technology modules. This commit also adds such support to res_fax_spandsp,
which uses the Spandsp modem tone detection code to do the V.21 preamble
detection.
There should be no functional change here, other than much more reliable V.21
preamble detection (and thus T.38 gateway initiation).
Matthew Jordan [Tue, 27 Dec 2011 20:53:46 +0000 (20:53 +0000)]
Fix timing source dependency issues with MOH
Prior to this patch, res_musiconhold existed at the same module priority level
as the timing sources that it depends on. This would cause a problem when
music on hold was reloaded, as the timing source could be changed after
res_musiconhold was processed. This patch adds a new module priority level,
AST_MODPRI_TIMING, that the various timing modules are now loaded at. This
now occurs before loading other resource modules, such that the timing source
is guaranteed to be set prior to resolving the timing source dependencies.
(closes issue ASTERISK-17474)
Reporter: Luke H
Tested by: Luke H, Vladimir Mikhelson, zzsurf, Wes Van Tlghem, elguero, Thomas Arimont
Patches:
asterisk-17474-dahdi_timing-infinite-wait-fix_v3_branch-1.8.diff uploaded by elguero (License #5026)
asterisk-17474-dahdi_timing-infinite-wait-fix_v3_branch-10.diff uploaded by elguero (License #5026)
asterisk-17474-dahdi_timing-infinite-wait-fix_v3.diff uploaded by elguero (License #5026)
Sean Bright [Tue, 27 Dec 2011 17:17:13 +0000 (17:17 +0000)]
Once an audiohook is attached to a channel, we continue to transcode all of the
frames, even after all of the hooks are detached. This patch short-cicuits us
out before we transcode unnecessarily.
........
Merged revisions 349144 from http://svn.asterisk.org/svn/asterisk/branches/1.8
In ChanSpy, don't create audiohooks that will never be used.
When ChanSpy is initialized it creates and attaches 3 audiohooks:
1) Read audio off of the channel that we are spying on
2) Write audio to the channel that we are spying on
3) Write audio to the channel that is bridged to the channel that we are
spying on.
The first is always necessary, but the others are used only when specific
options are passed to the ChanSpy application (B, d, w, and W to be specific).
When those flags are not passed, neither of those audiohooks are ever sent
frames, but we still try to process the hooks for each voice frame that we
recieve on the channel.
So in short - only create and attach audiohooks that we actually need.
........
Richard Mudgett [Fri, 23 Dec 2011 02:30:19 +0000 (02:30 +0000)]
Fix extension state callback references in chan_sip.
Chan_sip gives a dialog reference to the extension state callback and
assumes that when ast_extension_state_del() returns, the callback cannot
happen anymore. Chan_sip then reduces the dialog reference count
associated with the callback. Recent changes (ASTERISK-17760) have
resulted in the potential for the callback to happen after
ast_extension_state_del() has returned. For chan_sip, this could be very
bad because the dialog pointer could have already been destroyed.
* Added ast_extension_state_add_destroy() so chan_sip can account for the
sip_pvt reference given to the extension state callback when the extension
state callback is deleted.
* Fix pbx.c awkward statecbs handling in ast_extension_state_add_destroy()
and handle_statechange() now that the struct ast_state_cb has a destructor
to call.
* Ensure that ast_extension_state_add_destroy() will never return -1 or 0
for a successful registration.
* Fixed pbx.c statecbs_cmp() to compare the correct information. The
passed in value to compare is a change_cb function pointer not an object
pointer.
* Make pbx.c ast_merge_contexts_and_delete() not perform callbacks with
AST_EXTENSION_REMOVED with locks held. Chan_sip is notorious for
deadlocking when those locks are held during the callback.
* Removed unused lock declaration for the pbx.c store_hints list.
Matthew Jordan [Thu, 22 Dec 2011 22:37:31 +0000 (22:37 +0000)]
Fix for memory leaks / cleanup in cel_pgsql
There were a number of issues in cel_pgsql's pgsql_log method:
* If either sql or sql2 could not be allocated, the method would return while
the pgsql_lock was still locked
* If the execution of the log statement succeeded, the sql and sql2 structs
were never free'd
* Reconnection successes were logged as ERRORs. In general, the severity of
several logging statements was reduced
(closes issue ASTERISK-18879)
Reported by: Niolas Bouliane
Tested by: Matt Jordan
Terry Wilson [Thu, 22 Dec 2011 20:17:39 +0000 (20:17 +0000)]
Allow packetization vaules > 127
According to the RTP packetization documentation, and the maximum values
listed in AST_FORMAT_LIST, we should support values > that the signed
char array that ast_codec_pref makes available to store the value. All
places in the code treat the framing field as though it were an int
array instaead of a char array anyway, so this just fixes the type of
the array.
Richard Mudgett [Mon, 19 Dec 2011 21:37:31 +0000 (21:37 +0000)]
Fix crashes on other platforms caused by interference from Darwin weak symbol support.
Support weak symbols on a platform specific basis. The Mac OS X (Darwin)
support must be isolated from the other platforms because it has caused
other platforms to crash. Several other platforms including Linux have
GCC versions that define the weak attribute. However, this attribute is
only setup for use in the code by Darwin.
(closes issue ASTERISK-18728)
Reported by: Ben Klang
Richard Mudgett [Fri, 16 Dec 2011 23:56:50 +0000 (23:56 +0000)]
Clean-up on isle five for __ast_request_and_dial() and ast_call_forward().
* Add locking when a channel inherits variables and datastores in
__ast_request_and_dial() and ast_call_forward(). Note: The involved
channels are not active so there was minimal potential for problems.
* Remove calls to ast_set_callerid() in __ast_request_and_dial() and
ast_call_forward() because the set information is for the wrong direction.
* Don't use C++ keywords for variable names in ast_call_forward().
* Run the redirecting interception macro if defined when forwarding a call
in ast_call_forward(). Note: Currently will never execute because the
only callers that supply a calling channel supply a hungup or zombie
channel.
* Make feature_request_and_dial() put the transferee into autoservice when
it calls ast_call_forward() in case a redirection interception macro is
run. Note: Currently will never happen because the caller channel (Party
B) is always hungup at this time.
* Make feature_request_and_dial() ignore the AST_CONTROL_PROCEEDING frame
to silence a log message.
........
Merged revisions 348464 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Richard Mudgett [Fri, 16 Dec 2011 21:04:01 +0000 (21:04 +0000)]
Fix crash during CDR update.
The ast_cdr_setcid() and ast_cdr_update() were shown in ASTERISK-18836 to
be called by different threads for the same channel. The channel driver
thread and the PBX thread running dialplan.
* Add lock protection around CDR API calls that access an ast_channel
pointer.
Matthew Jordan [Wed, 14 Dec 2011 22:34:51 +0000 (22:34 +0000)]
Added support for all slin formats to app_originate
Previously, app_originate could not originate a call into a non-8kHz conference
bridge as the formats for non-8kHz slin codecs were not applied to the created
channel. This patch adds all of the formats by default, such that if a created
channel has a codec that supports a higher sampling rate, a translation path
can be built between it and other channels.
Matthew Jordan [Wed, 14 Dec 2011 21:58:12 +0000 (21:58 +0000)]
Fixed Asterisk crash when function QUEUE_MEMBER receives invalid input
The function QUEUE_MEMBER has two required parameters (queuename, option). It
was only checking for the presence of queuename. The patch checks for the
existence of the option parameter and provides better error logging when
invalid values are provided for the option parameter as well.
Richard Mudgett [Tue, 13 Dec 2011 23:06:11 +0000 (23:06 +0000)]
Fix FollowMe CallerID on outgoing calls.
The addition of the Connected Line support changed how CallerID is passed
to outgoing calls. The FollowMe application was not updated to pass
CallerID to the outgoing calls.
* Fix FollowMe CallerID on outgoing calls.
* Restructured findmeexec() to fix several memory leaks and eliminate some
duplicated code.
* Made check the return value of create_followme_number(). Putting a NULL
into the numbers list is bad if create_followme_number() fails.
* Fixed a couple uses of ast_strdupa() inside loops.
* The changes to bridge_builtin_features.c fix a similar CallerID issue
with the bridging API attended and blind transfers. (Not used at this
time.)
Stefan Schmidt [Tue, 13 Dec 2011 15:20:33 +0000 (15:20 +0000)]
Fix possible misshandling of an incoming SIP response as a peer poke response.
Also make sure peer has even qualify enabled when handle a peer poke response.
Terry Wilson [Mon, 12 Dec 2011 19:24:06 +0000 (19:24 +0000)]
Add a separate buffer for SRTCP packets
The function ast_srtp_protect used a common buffer for both SRTP and SRTCP
packets. Since this function can be called from multiple threads for the same
SRTP session (scheduler for SRTCP and channel for SRTP) it was possible for the
packets to become corrupted as the buffer was used by both threads
simultaneously.
This patch adds a separate buffer for SRTCP packets to avoid the problem.
(closes issue ASTERISK-18889, Reported/patch by Daniel Collins)
........
Merged revisions 347995 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Richard Mudgett [Fri, 9 Dec 2011 01:29:59 +0000 (01:29 +0000)]
Fix some parsing issues in add_exten_to_pattern_tree().
* Simplify compare_char() and avoid potential sign extension issue.
* Fix infinite loop in add_exten_to_pattern_tree() handling of character
set escape handling.
* Added buffer overflow checks in add_exten_to_pattern_tree() character
set collection.
* Made ignore empty character sets.
* Added escape character handling to end-of-range character in character
sets. This has a slight change in behavior if the end-of-range character
is an escape character. You must now escape it.
* Fix potential sign extension issue when expanding character set ranges.
* Made remove duplicated characters from character sets. The duplicate
characters lower extension matching priority and prevent duplicate
extension detection.
* Fix escape character handling when the escape character is trying to
escape the end-of-string. We could have continued processing characters
after the end of the exten string. We could have added the previous
character to the pattern matching tree incorrectly.
Walter Doekes [Thu, 8 Dec 2011 21:31:00 +0000 (21:31 +0000)]
Fix regression when using tcpenable=no and tlsenable=yes.
The tlsenable settings are tucked away in main/tcptls.c, so I missed
them when resolving ASTERISK-18837. This should resolve the test suite
breakage of the sip tls tests.
Review: https://reviewboard.asterisk.org/r/1615
Reviewed by: Matt Jordan
........
Merged revisions 347718 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Thu, 8 Dec 2011 20:43:20 +0000 (20:43 +0000)]
Fix regressed behavior of queue set penalty to work without specifying 'in <queuename>'
r325483 caused a regression in Asterisk 10+ that would make Asterisk segfault when
attempting to set penalty on an interface without specifying a queue in the queue set
penalty CLI command. In addition, no attempt would be made whatsoever to perform the
penalty setting on all the queues in the core list with either the cli command or the
non-segfaulting ami equivalent. This patch fixes that and also makes an attempt to
document and rename some functions required by this command to better represent what
they actually do. Oh yeah, and the use of this command without specifying a specific
queue actually works now.
Richard Mudgett [Thu, 8 Dec 2011 17:53:24 +0000 (17:53 +0000)]
Mark channel running the h exten with the soft-hangup flag.
When a bridge is broken, ast_bridge_call() might execute the h exten on
the calling channel. However, that channel may not have been the channel
that broke the bridge by hanging up. The channel executing the h exten
must be in a hung up state so things like AGI run in the correct mode.
* Make sure ast_bridge_call() marks the channel it is executing the h
exten on as hung up. (The AST_SOFTHANGUP_APPUNLOAD flag is used so as to
match the pbx.c main dialplan execution loop when it executes the h
exten.)
(closes issue ASTERISK-18811)
Reported by: David Hajek
Patches:
jira_asterisk_18811_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: David Hajek, rmudgett
........
Merged revisions 347595 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Terry Wilson [Thu, 8 Dec 2011 16:20:25 +0000 (16:20 +0000)]
Don't crash on INFO automon request with no channel
AST-2011-014. When automon was enabled in features.conf, it was possible
to crash Asterisk by sending an INFO request if no channel had been
created yet.
(closes issue ASTERISK-18805)
........
Merged revisions 347530 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2
........
Merged revisions 347531 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Wed, 7 Dec 2011 20:27:59 +0000 (20:27 +0000)]
Fix: Meetme recording variables from realtime DB use null entries over channel variables
Meetme would attempt to substitute the realtime values of RECORDING_FILE and
RECORDING_FORMAT from the meetme db entry instead of using the channel variable set
for those variables in spite of those database entries being NULL or even lacking
a column to represent them.
(closes issue ASTERISK-18873)
Reported by: Byron Clark
Patches:
ASTERISK-18873-1.patch uploaded by Byron Clark (license 6157)
........
Merged revisions 347369 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Tue, 6 Dec 2011 21:53:00 +0000 (21:53 +0000)]
Documents CHANNEL(musicclass) taking priority over m([x]) in waitExten
If waitExten specifies a music class to use with its music on hold option, it will use
CHANNEL(musicclass) instead if that channel variable has been set on the initiating
channel. This documents that behavior in the waitExten app so that this can be known
without checking the documentation of the code in function local_ast_moh_start.
(closes issue ASTERISK-18804)
........
Merged revisions 347239 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Tue, 6 Dec 2011 19:42:53 +0000 (19:42 +0000)]
Don't allow transport=tcp when tcpenable=no.
When tcpenable=no, sending to transport=tcp hosts was still allowed.
Resolving the source address wasn't possible and yielded the string
"(null)" in SIP messages. Fixed that and a couple of not-so-correct
log messages.
(closes issue ASTERISK-18837)
Reported by: Andreas Topp
Review: https://reviewboard.asterisk.org/r/1585
Reviewed by: Matt Jordan
........
Merged revisions 347166 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Tue, 6 Dec 2011 19:20:10 +0000 (19:20 +0000)]
Move setting of voicemail zonetag and locale up a bit.
The voicemail [general] zonetag and locale variables weren't loaded
until after the mailboxes were initialized. This caused the settings to
be unset for those mailboxes until a reload was performed.
(closes issue ASTERISK-18838)
Review: https://reviewboard.asterisk.org/r/1570
Reviewed by: Matt Jordan
........
Merged revisions 347111 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Tue, 6 Dec 2011 17:24:51 +0000 (17:24 +0000)]
Fixed crash from orphaned MWI subscriptions in chan_sip
This patch resolves the issue where MWI subscriptions are orphaned
by subsequent SIP SUBSCRIBE messages. When a peer is removed, either
by pruning realtime SIP peers or by unloading / loading chan_sip, the
MWI subscriptions that were orphaned would still be on the event engine
list of valid subscriptions but have a pointer to a peer that no longer
was valid. When an MWI event would occur, this would cause a seg fault.
(closes issue ASTERISK-18663)
Reported by: Ross Beer
Tested by: Ross Beer, Matt Jordan
Patches:
blf_mwi_diff_12_06_11.txt uploaded by Matt Jordan (license 6283)
Richard Mudgett [Mon, 5 Dec 2011 17:42:36 +0000 (17:42 +0000)]
Restore call progress code for analog ports.
Extracting sig_analog from chan_dahdi lost call progress detection
functionality.
* Fix analog ports from considering a call answered immediately after
dialing has completed if the callprogress option is enabled.
(closes issue ASTERISK-18841)
Reported by: Richard Miller
Patches:
chan_dahdi.diff (license #5685) patch uploaded by Richard Miller (Modified by me)
sig_analog.c.diff (license #5685) patch uploaded by Richard Miller (Modified by me)
sig_analog.h.diff (license #5685) patch uploaded by Richard Miller
........
Merged revisions 347006 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Mon, 5 Dec 2011 15:02:00 +0000 (15:02 +0000)]
Resolve duplicate label used in multiple priorities for the same extension.
Prior to this patch, if labels with the same name were used for different priorities in
the same extension, the new label would be accepted, but it would be unusable since
attempts to reach that label would just go to the first one. Now pbx.c detects this,
generates a warning in logs, and culls the label before adding it to the dialplan.
Kinsey Moore [Mon, 5 Dec 2011 14:46:25 +0000 (14:46 +0000)]
Fix chan_jingle/gtalk load regression introduced in r346087
Add missing symbol exports for ast_aji_client_destroy and ast_aji_buddy_destroy
for usage outside res_jabber. Testing of these changes focused on res_jabber
itself, so this problem was missed.
Reported-by: Michael Spiceland
........
Merged revisions 346951 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Sun, 4 Dec 2011 10:03:31 +0000 (10:03 +0000)]
For SIP REGISTER fix domain-only URIs and domain ACL bypass.
The code that allowed admins to create users with domain-only uri's had
stopped to work in 1.8 because of the reqresp parser rewrites. This is
fixed now: if you have a [mydomain.com] sip user, you can register with
useraddr sip:mydomain.com. Note that in that case -- if you're using
domain ACLs (a configured domain list) -- mydomain.com must be in the
allow list as well.
Reviewboard r1606 shows a list of registration combinations and which
SIP response codes are returned.
Review: https://reviewboard.asterisk.org/r/1533/
Reviewed by: Terry Wilson
Matthew Jordan [Fri, 2 Dec 2011 23:27:10 +0000 (23:27 +0000)]
Update SIP MESSAGE To parsing to correctly handle URI
The previous patch (r346040) incorrectly parsed the URI in the presence
of a port, e.g., user@hostname:port would fail as the port would be
double appended to the SIP message. This patch uses the parse_uri function
to correctly parse the URI into its username and hostname parts, and places
them in the correct fields in the sip_pvt structure.