Tilghman Lesher [Thu, 3 Dec 2009 20:10:19 +0000 (20:10 +0000)]
Deprecate "cz" in favor of "cs".
Also, change the use of language codes so that language registers as a prefix,
rather than an exact match.
(closes issue #16272)
Reported by: patrol-cz
Patches:
20091203__issue16272.diff.txt uploaded by tilghman (license 14)
Jeff Peeler [Tue, 1 Dec 2009 21:29:31 +0000 (21:29 +0000)]
Fix crash with invalid frame data
The crash was happening as a result of a frame containing an invalid data
pointer, but was set with data length of zero. The few times the issue was
reproduced it _seemed_ that the frame was queued properly, that is the data
pointer was set to NULL. I never could reproduce the crash so as a last resort
the crash has been fixed, but a check in __ast_read has been added to give as
much information about the source of problematic frames in the future.
Remove duplicate entries from voicemail format lists. This prevents app_voicemail from entering an infinite loop when the same format is specified twice in the format list.
David Vossel [Mon, 30 Nov 2009 16:32:58 +0000 (16:32 +0000)]
app_queue crashes randomly, often during call-transfers
In app_queue, it is possible for a call_queue to be destroyed
while another object still holds a pointer to it. This patch
converts call_queue objects to ao2 objects allowing them to be
ref counted. This makes it safe for the queue_ent object in
queue_exec() to reference it's parent call_queue even after it
has left the queue.
Kevin P. Fleming [Mon, 23 Nov 2009 15:31:02 +0000 (15:31 +0000)]
When 'sip set debug' is enabled, and the last line of an incoming SIP message
is not properly newline terminated, ensure that that line is included in the
debug output.
Copy the peer CDR's userfield to the bridge CDR if it exists. This is necessary for the recordagentcalls option in chan_agent to store the recorded file name in the bridge CDR.
Tilghman Lesher [Tue, 10 Nov 2009 22:09:16 +0000 (22:09 +0000)]
If two pattern classes start with the same digit and have the same number of characters, they will compare equal.
The example given in the issue report is that of [234] and [246], which have
these characteristics, yet they are clearly not equivalent. The code still
uses these two characteristics, yet when the two scores compare equal, an
additional check will be done to compare all characters within the class to
verify equality.
(closes issue #15421)
Reported by: jsmith
Patches:
20091109__issue15421__2.diff.txt uploaded by tilghman (license 14)
Tested by: jsmith, thedavidfactor
Joshua Colp [Tue, 10 Nov 2009 20:03:14 +0000 (20:03 +0000)]
Remove broken support for direct transcoding between G.726 RFC3551 and G.726 AAL2.
On some systems the translation core would actually consider g726aal2 -> g726 -> signed linear
to be a quicker path then g726aal2 -> signed linear which exposed this problem.
David Ruggles [Tue, 10 Nov 2009 17:23:59 +0000 (17:23 +0000)]
Document ExternalIVR event tag collision
ExternalIVR uses the D tag for two different event types. This documents that
behavior and how to differentiate between the two cases. Also includes a minor
spelling fix and clarification
David Vossel [Fri, 6 Nov 2009 22:33:27 +0000 (22:33 +0000)]
fixes audiohook write crash occuring in chan_spy whisper mode.
After writing to the audiohook list in ast_write(), frames
were being freed incorrectly. Under certain conditions this
resulted in a double free crash.
David Vossel [Fri, 6 Nov 2009 17:07:13 +0000 (17:07 +0000)]
fixes segfault in iLBC
For reasons not yet known, it appears possible for an ast_frame
to have a datalen greater than zero while the actual data is NULL
during Packet Loss Concealment. Most codecs don't support PLC so
this doesn't affect them. This patch catches the malformed frame
and prevents the crash from occuring. Additional efforts to determine
why it is possible for a frame to look like this are still being
investigated.
David Brooks [Thu, 5 Nov 2009 18:59:41 +0000 (18:59 +0000)]
chan_misdn Asterisk 1.4.27-rc2 crash
Crash related to chan_misdn connection. Patch submitted by gknispel_proformatique, tested
by francesco_r. "I have many crash since i have upgraded to Asterisk 1.4.27-rc2. Attached
a full bt." This patch zeros out an ast_frame.
Jeff Peeler [Wed, 4 Nov 2009 23:47:08 +0000 (23:47 +0000)]
Fix incorrect filename comparsion after monitor file change
The logic to detect if a requested file is indeed a different file from the
current file was incorrect. The main issue being confusion of the use of
filename_base which was previously set without pathing information and then
compared to another full path. Robust file comparison logic has been added
to properly check if two files are the same even if symlinks are used.
(closes issue #15313)
Reported by: caspy
Patches:
20091103__issue15313__1.4.diff.txt uploaded by jpeeler (license 325)
but mostly tilghman's work
Modify the SDP parsing code to parse session and media level items separately.
With the new code, media level proprieties should no longer be confused with session level proprieties. This change also reorganizes some of the SDP parsing code which should make it easier to manage in the future.
Joshua Colp [Wed, 4 Nov 2009 19:17:39 +0000 (19:17 +0000)]
Fix a security issue where sending a REGISTER with a differing username in the From
URI and Authorization header would reveal whether it was valid or not.
David Brooks [Mon, 2 Nov 2009 20:52:53 +0000 (20:52 +0000)]
SIP channel name uniqueness
SIP channel names were supposed to be unique by way of a name suffix derived from the
pointer to the channel's private data. Uniqueness was preserved on 32-bit systems, but
not on 64-bit systems. This patch, as suggested by kpfleming, replaces this suffix with
a simple incremented unsigned int.
Joshua Colp [Mon, 2 Nov 2009 18:08:11 +0000 (18:08 +0000)]
Fix a bug where the recorded privacy introduction file would not get removed if the caller hung up
while the called party had not yet answered.
This was fixed by introducing an argument to the 'n' option which, when enabled, removes the introduction
file under all scenarios. This was done to preserve the behavior that has existed for quite some time.
Tilghman Lesher [Mon, 2 Nov 2009 17:14:20 +0000 (17:14 +0000)]
Don't allow two separate instances of safe_asterisk when restarting from the init script.
(closes issue #14562)
Reported by: davidw
Patches:
Initially 20091022__issue14562.diff.txt uploaded by tilghman (license 14)
Modified to 20091030__Issue14562_diff.txt uploaded by davidw (license 780)
Tested by: davidw
Leif Madsen [Wed, 28 Oct 2009 20:06:13 +0000 (20:06 +0000)]
Update documentation in sip.conf.sample.
Update the documentation in sip.conf.sample in order to make it more clear
that directmedia/canreinvite do not cause Asterisk to ignore reINVITEs. It
is only used to stop Asterisk from generating a reINVITE, but does not stop
it from accepting them if necessary.
Tilghman Lesher [Tue, 27 Oct 2009 20:16:49 +0000 (20:16 +0000)]
Manager output is not always NULL-terminated, so force a NULL at the end of the filestream.
(closes issue #15495)
Reported by: pdf
Patches:
20090916__issue15495.diff.txt uploaded by tilghman (license 14)
Tested by: pdf
Tzafrir Cohen [Mon, 26 Oct 2009 22:13:25 +0000 (22:13 +0000)]
detect ARM Linux EABI OSARCH as linux-gnu instead of linux-gnueabi
* Set OSARCH to linux-gnu even if host_os is linux-gnueabi
* When checking if we are Linux, check OSARCH rather than host_os
The newer ARM ABI ("EABI") shows the OS name 'linux-gnueabi' rather than
'linux-gnu' . This patch sets OSARCH to be 'linux-gnu' even in such a case.
OSARCH is tested for the value of 'linux-gnu' in one or two places in the
tree. This patch also fixes the check libcap to check for $OSARCH rather
than $host_os .
Kevin P. Fleming [Fri, 23 Oct 2009 14:00:01 +0000 (14:00 +0000)]
Don't force menuselect.makeopts to be rebuilt on every build.
For some reason the menuselect.makeopts file was listed as PHONY in the Makefile,
resulting in 'make' needing to rebuild it for every build. This then resulted in
the embedded module rules being rebuilt on every build, which can be slow and is
unnecessary.
This patch fixes the problem by properly allowing 'make' to know when the
menuselect.makeopts file needs to be rebuilt (defining the proper dependencies).
Leif Madsen [Thu, 22 Oct 2009 21:51:52 +0000 (21:51 +0000)]
Clean valgrind output by suppressing false errors.
Update valgrind.txt documentation and add valgrind.supp file in order to
allow those who are creating valgrind output to have less false errors in
the logfile.
David Vossel [Wed, 21 Oct 2009 20:58:08 +0000 (20:58 +0000)]
IAX2: VNAK loop caused by signaling frames with no destination call number
It is possible for the PBX thread to queue up signaling frames before
a destination call number is received. This can result in signaling
frames being sent out with no destination call number. Since recent
versions of Asterisk require accurate destination callnumbers for all
Full Frames, this can cause a VNAK loop to occur. To resolve this
no signaling frames are sent until a destination callnumber is received,
and destination call numbers are now only required for iax_pvt matching
when the frame is an ACK.
David Vossel [Wed, 21 Oct 2009 14:37:04 +0000 (14:37 +0000)]
IAX/SIP shrinkcallerid option
The shrinking of caller id removes '(', ' ', ')', non-trailing '.',
and '-' from the string. This means values such as 555.5555 and
test-test result in 555555 and testtest. There are instances,
such as Skype integration, where a specific value is passed via
caller id that must be preserved unmodified. This patch makes
the shrinking of caller id optional in chan_sip and chan_iax in
order to support such cases. By default this option is on to
preserve previous expected behavior.
Tilghman Lesher [Tue, 20 Oct 2009 22:07:11 +0000 (22:07 +0000)]
Pay attention to the return value of the manipulate function.
While this looks like an optimization, it prevents a crash from occurring
when used with certain audiohook callbacks (diagnosed with SVN trunk,
backported to 1.4 to keep the source consistent across versions).
Kevin P. Fleming [Mon, 19 Oct 2009 23:44:07 +0000 (23:44 +0000)]
Correct timestamp calculations when RTP sample rates over 8kHz are used.
While testing some endpoints that support 16kHz and 32kHz sample rates, some
log messages were generated due to calc_rxstamp() computing timestamps in a way
that produced odd results, so this patch sanitizes the result of the
computations.
Jeff Peeler [Sat, 17 Oct 2009 01:32:47 +0000 (01:32 +0000)]
Fix stale caller id data from being reported in AMI NewChannel event
The problem here is that chan_dahdi is designed in such a way to set
certain values in the dahdi_pvt only once. One of those such values
is the configured caller id data in chan_dahdi.conf. For PRI, the
configured caller id data could be overwritten during a call. Instead
of saving the data and restoring, it was decided that for all non-analog
channels it was simply best to not set the configured caller id in the
first place and also clear it at the end of the call.
Richard Mudgett [Fri, 16 Oct 2009 20:25:23 +0000 (20:25 +0000)]
Never released PRI channels when using Busy() or Congestion() dialplan apps.
When the Busy() or Congestion() application is used towards ISDN (an ISDN
progress is sent), the responding ISDN Disconnect or Release may contain
the ISDN cause user busy or one of the congestion causes. In chan_dahdi.c
these causes will only set the needbusy or needcongestion flags and not
activate the softhangup procedure. Unfortunately only the latter can
interrupt the endless wait loop of Busy()/Congestion().
Result: PRI channels staying in state busy for the rest of asterisk life
or until the other end times out and forces the call to clear.
(in issue 0014292)
Reported by: tomaso
Patches:
disc_rel_userbusy.patch uploaded by tomaso (license 564)
(This patch is unrelated to the issue.)
Kevin P. Fleming [Mon, 12 Oct 2009 15:30:40 +0000 (15:30 +0000)]
Remove automatic switching from T.38 to voice mode in chan_sip.
chan_sip has some code to automatically switch from T.38 mode to voice mode when
a voice frame is written to the channel while it is in T.38 mode; this was
intended to handle the situation when a FAX transmission has ended and the channel
is not yet hung up, but is causing problems at the beginning of FAX sessions as
well when there are still voice frames 'in flight' at the time the T.38 negotiation
completes. This patch removes the automatic switchover.
Russell Bryant [Sun, 11 Oct 2009 17:22:52 +0000 (17:22 +0000)]
Don't use data outside of its scope.
The purpose of this code was to have a hangup frame put on the list of deferred
frames. However, the code that read the hangup frame was outside of the scope
of where the hangup frame was declared.
Russell Bryant [Thu, 8 Oct 2009 19:45:47 +0000 (19:45 +0000)]
Make filestream frame handling safer by isolating frames before returning them.
This patch is related to a number of issues on the bug tracker that show
crashes related to freeing frames that came from a filestream. A number of
fixes have been made over time while trying to figure out these problems, but
there re still people seeing the crash. (Note that some of these bug reports
include information about other problems. I am specifically addressing
the filestream frame crash here.)
I'm still not clear on what the exact problem is. However, what is _very_
clear is that we have seen quite a few problems over time related to unexpected
behavior when we try to use embedded frames as an optimization. In some cases,
this optimization doesn't really provide much due to improvements made in other
areas.
In this case, the patch modifies filestream handling such that the embedded frame
will not be returned. ast_frisolate() is used to ensure that we end up with a
completely mallocd frame. In reality, though, we will not actually have to malloc
every time. For filestreams, the frame will almost always be allocated and freed
in the same thread. That means that the thread local frame cache will be used.
So, going this route doesn't hurt.
With this patch in place, some people have reported success in not seeing the
crash anymore.
(SWP-150)
(AST-208)
(ABE-1834)
(issue #15609)
Reported by: aragon
Patches:
filestream_frisolate-1.4.diff2.txt uploaded by russell (license 2)
Tested by: aragon, russell
Richard Mudgett [Thu, 8 Oct 2009 16:33:06 +0000 (16:33 +0000)]
Fix memory leak if chan_misdn config parameter is repeated.
Memory leak when the same config option is set more than once in an
misdn.conf section. Why must this be considered? Templates! Defining a
template with default port options and later adding to or overriding some
of them.
Richard Mudgett [Wed, 7 Oct 2009 21:51:24 +0000 (21:51 +0000)]
chan_misdn.c:process_ast_dsp() memory leak
misdn.conf: astdtmf must be set to "yes". With "no", buffer loss does not
occur.
The translated frame "f2" when passing through ast_dsp_process() is not
freed whenever it is not used further in process_ast_dsp(). Then in the
end it is never ever freed.