Russell Bryant [Wed, 27 Jan 2010 17:32:07 +0000 (17:32 +0000)]
Fix the ability to specify an OSP token for an outbound IAX2 call.
When this patch was originally submitted, the code allowed for the token to be
set via a channel variable. I decided that a cleaner approach would be to
integrate it into the CHANNEL() function. Unfortunately, that is not a suitable
approach. It's not possible to get the value set on the channel soon enough
using that method. So, go back to the simple channel variable method.
Jeff Peeler [Tue, 26 Jan 2010 18:07:57 +0000 (18:07 +0000)]
Fix crash resulting from frames with invalid data pointers.
In ast_frdup the frame data union does not get set to point to malloced memory
if the datalen is zero, so make sure to handle the same case in ast_frisolate
appropriately.
David Vossel [Tue, 26 Jan 2010 17:40:02 +0000 (17:40 +0000)]
modify 'test show registered' cli output format
In order to improve readability, the output from 'test show
registered' has been modified to truncate fields to fit within
the format output if they are over a certain length.
David Vossel [Tue, 26 Jan 2010 16:30:08 +0000 (16:30 +0000)]
RFC compliant uri and display-name encode/decode
1. URI Encoding
This patch changes ast_uri_encode()'s behavior when doreserved is enabled.
Previously when doreserved was enabled only a small set of reserved
characters were encoded. This set was comprised primarily of the reserved
characters defined in RFC3261 section 25.1, but contained other characters as
well. Rather than only escaping the reserved set, doreserved now escapes
all characters not within the unreserved set as defined by RFC 3261 and
RFC 2396. Also, the 'doreserved' variable has been renamed to 'do_special_char'
in attempts to avoid confusion.
When doreserve is not enabled, the previous logic of only encoding the
characters <= 0X1F and > 0X7f remains, except for the '%' character, which
must always be encoded as it signifies a HEX escaped character during the decode
process.
2. URI Decoding: Break up URI before decode.
In chan_sip.c ast_uri_decode is called on the entire URI instead of it's
individual parts after it is parsed. This is not good as ast_uri_decode
can introduce special characters back into the URI which can mess up parsing.
This patch resolves this by not decoding a URI until parsing is completely
done. There are many instances where we check to see if pedantic checking
is enabled before we decode a URI. In these cases a new macro,
SIP_PEDANTIC_DECODE, is used on the individual parsed segments of the URI
rather than constantly putting if (pedantic) { decode() } checks everywhere
in the code. In the areas where ast_uri_decode is not dependent upon
pedantic checking this macro is not used, but decoding is still moved to
each individual part of the URI. The only behavior that should change from
this patch is the time at which decoding occurs.
Since I had to look over every place URI parsing occurs to create this
patch, I found several places where we use duplicate code for parsing.
To consolidate the code, those areas have updated to use the parse_uri()
function where possible.
3. SIP display-name decoding according to RFC3261 section 25.
To properly decode the display-name portion of a FROM header, chan_sip's
get_calleridname() function required a complete re-write. More information
about this change can be found in the comments at the beginning of this function.
4. Unit Tests.
Unit tests for ast_uri_encode, ast_uri_decode, and get_calleridname() have been
written. This involved the addition of the test_utils.c file for testing the
utils api.
Olle Johansson [Mon, 25 Jan 2010 21:13:20 +0000 (21:13 +0000)]
Change api for pbx_builtin_setvar to actually return error code if a function can't be written to.
This patch removes code that was duplicated from pbx.c to manager.c
in order to prevent API change in released versions of Asterisk.
There are propably also other places that would benefit from reading the
return code and react if a function returns error codes on writing a value into it.
Terry Wilson [Mon, 25 Jan 2010 18:01:08 +0000 (18:01 +0000)]
Fix INTERNAL_OBJ error on stop when calendars.conf missing
Initialize the calendars container before calling load_config and return FAILURE
on allocation failure. Also, use the AST_MODULE_LOAD_* values for return values.
Thanks to rmudgett for pointing out the error and the need to use the defined
values for return
Alexandr Anikin [Sun, 24 Jan 2010 22:42:11 +0000 (22:42 +0000)]
AST_CONTROL_CONNECTED_LINE frame type processing added to setup DisplayIE field
incorrect q.931 message order filtered on incoming calls (first msg must be setup,
next must be not setup)
Only rebuild bison and flex source files on demand, if bison and flex are detected by the configure script.
Changed after discussion on the -dev list about possible unnecessary build
failures, due to checkouts/untars causing these special source files to
possibly be newer than their resulting C files. This should additionally
ensure that nobody need learn about extra Makefile arguments to ensure the
proper files get rebuilt when changes are made to these special source files.
........
Russell Bryant [Thu, 21 Jan 2010 13:59:41 +0000 (13:59 +0000)]
Modify test results XML format to match the JUnit format.
When this code was developed, we came up with our own XML format for the test
output. I have since started looking at integration with other tools, namely
continuous integration frameworks, and this format seems to be supported
across a number of applications. With these changes in place, I was able
to get Atlassian Bamboo to interpret the test results.
Alec L Davis [Wed, 20 Jan 2010 08:18:45 +0000 (08:18 +0000)]
Update CDR variables as pbx starts
Allows CDR variables added in cdr.c:set_one_cid to become visable during the call,
by executing ast_cdr_update() early in __ast_pbx run.
Reverts sig_pri changes in trunk that are specific to isdn technology only.
Fix deadlock in agent_read by removing call to agent_logoff.
One must always lock the agents list lock before the agent private. agent_read
locks the private immediately, so locking the agents list lock is not an
option (which is what agent_logoff requires). Because agent_read already
has access to the agent private all that is necessary is to do the required
hanging up that agent_logoff performed.
Jeff Peeler [Mon, 18 Jan 2010 22:31:25 +0000 (22:31 +0000)]
Extend max call limit duration from 24.8 days to 292+ million years.
If the limit was set past MAX_INT upon answering, the call was immediately
hung up due to overflow from the return of ast_tvdiff_ms (in ast_check_hangup).
The time calculation functions ast_tvdiff_sec and ast_tvdiff_ms have been
changed to return an int64_t to prevent overflow. Also the reporter suggested
adding a message indicating the reason for the call hanging up. Given that the
new limit is so much higher, the message (which would only really be useful in
the overflow scenario) has been made a debug message only.
Plug a memory leak when reading configs with their comments.
While reading through configuration files with the intent of returning their
full contents (comments specifically) we allocated some memory and then forgot
to free it. This doesn't fix 16554 but clears up a leak I had in the lab.
David Vossel [Mon, 18 Jan 2010 17:45:18 +0000 (17:45 +0000)]
transmit_silence_during_record replaced by transmit_silence
In asterisk.conf, transmit_silence_during_record has been removed
in favor of using only the transmit_silence option. The
transmit_silence_during_record option remains a valid option in
asterisk.conf, but has been removed from the sample config and
noted in CHANGES.
David Ruggles [Mon, 18 Jan 2010 17:41:44 +0000 (17:41 +0000)]
Add notification of interrupted file
Add file information to data element of T event so
the file information is sent to the client when it is
interrupted. Previously only notification of pending
files that were dropped was sent
updated transmit_silence option documentation in asterisk.conf
This patch updates the transmit_silence option to better document
why the option exists, and what it affects. Thanks to russell
for providing the verbage for this update.
........
David Vossel [Mon, 18 Jan 2010 16:45:28 +0000 (16:45 +0000)]
updated transmit_silence option documentation in asterisk.conf
This patch updates the transmit_silence option to better document
why the option exists, and what it affects. Thanks to russell
for providing the verbage for this update.
Tilghman Lesher [Fri, 15 Jan 2010 21:40:14 +0000 (21:40 +0000)]
The previous attempt at using a pipe to guarantee astcanary shutdown did not work.
We're revisiting the previous patch, albeit with a method that overcomes the
prior criticism that it was not POSIX-compliant.
(closes issue #16602)
Reported by: frawd
Patches:
20100114__issue16602.diff.txt uploaded by tilghman (license 14)
Tested by: frawd
Mark Michelson [Fri, 15 Jan 2010 20:58:24 +0000 (20:58 +0000)]
Make sure to set owner_line, ownder_func, and owner_file in ast_calloc_with_stringfields.
Asterisk would crash on startup if MALLOC_DEBUG were set in menuselect. This is because
the manager action UpdateConfig had to resize its string field allocation to set the
description. When the resize occurred, ast_copy_string would crash because we were
attempting to copy a string from a NULL pointer. Setting the strings initially makes
the code much less crashy.
Disallow leaving more than maxmsg voicemails.
This is a possibility because our previous method assumed that no messages are
left in parallel, which is not a safe assumption. Due to the vmu structure
duplication, it was necessary to track in-process messages via a separate
structure. If at some point, we switch vmu to an ao2-reference-counted
structure, which would eliminate the prior noted duplication of structures,
then we could incorporate this new in-process structure directly into vmu.
(closes issue #16271)
Reported by: sohosys
Patches:
20100108__issue16271.diff.txt uploaded by tilghman (license 14)
20100108__issue16271__trunk.diff.txt uploaded by tilghman (license 14)
20100108__issue16271__1.6.0.diff.txt uploaded by tilghman (license 14)
Tested by: jsutton
........
Jeff Peeler [Thu, 14 Jan 2010 18:03:31 +0000 (18:03 +0000)]
Fix broken call pickup
The problem was the OUTGOING flag was not getting set properly on the channel,
resulting in pickup failing as ast_read thought the call was inbound. Refer to
170393 for a more verbose description as this is the same exact change.
Tilghman Lesher [Thu, 14 Jan 2010 16:52:22 +0000 (16:52 +0000)]
Ensure that the callerid is NULL when the parent is effectively NULL.
This applies only to pattern-match hints, which create exact-match
hints on the fly.
Leif Madsen [Thu, 14 Jan 2010 14:38:01 +0000 (14:38 +0000)]
Add documentation about how to build queues.
Add a how-to set of documentation about building queues with Asterisk.
This documentation is based on Asterisk 1.6.2 but should work on most
versions with minor modifications.
(closes issue #16237)
Reported by: lmadsen
Patches:
Building Queues (FINAL).txt uploaded by lmadsen (license 10)
Tested by: pdhales, lmadsen, cmdrwalrus
Tilghman Lesher [Wed, 13 Jan 2010 21:27:34 +0000 (21:27 +0000)]
Add the TESTTIME() dialplan function, which permits testing GotoIfTime.
Specifically, by setting TESTTIME() to a particular date and time, you
can test whether a dialplan correctly branches as was intended. This was
developed after recent questions on the -users list on how to test their
holiday dialplan logic.
(closes issue #16464)
Reported by: tilghman
Patches:
20100112__issue16464.diff.txt uploaded by tilghman (license 14)
Fix regression for timed out parked call returning to caller
This issue seems to have been exposed by the fix in 160390 whereby using a
masquerade prevented a crash. The new channel used in the masquerade was
not copying the macro information from the old channel.
Tilghman Lesher [Wed, 13 Jan 2010 18:16:13 +0000 (18:16 +0000)]
Code previously added to ast_expr2f.c warranted a change in the source file ast_expr2.fl.
Also, made a Makefile change to ensure that the expression parser C source files get
regenerated correctly, when we need that to happen.