David Vossel [Tue, 2 Mar 2010 21:58:03 +0000 (21:58 +0000)]
adds 'p' option to PickupChan
The 'p' option allows the PickupChan app to pickup
a ringing phone by looking for the first match to a
partial channel name rather than requiring a full match.
Leif Madsen [Tue, 2 Mar 2010 21:09:27 +0000 (21:09 +0000)]
Update IMAP documentation.
Update the IMAP documentation to make it clear that storing voicemails
in the same folder as a large number of emails could potentially cause
significant slow downs when writing or retrieving voicemails.
David Vossel [Tue, 2 Mar 2010 19:08:38 +0000 (19:08 +0000)]
fixes adaptive jitterbuffer configuration
When configuring the adaptive jitterbuffer, the target_extra
value not only could not be set from the configuration, but was
not even being set to its proper default. This value is required
in order for the adaptive jitterbuffer to work correctly. To resolve
this a config option has been added to expose this value to the conf
files, and a default value is provided when no config specific value
is present.
Jeff Peeler [Tue, 2 Mar 2010 18:22:05 +0000 (18:22 +0000)]
Add new application VMSayName for use with voicemail.
VMSayName that will play the recorded name of the voicemail user if it exists,
otherwise will play the mailbox number. A unit test has been written to verify
correct functionality called test_voicemail_vmsayname.
This patch splits transmit_displaymessage into transmit_clear_display_message and transmit_display_message which better aligns with the skinny protocol. The new transmit_display_message is not used in the current code, but will be and so it is commented.
Moved handle_datetime from this function to onhook and offhook functions (display now properly cleared at the end of a call on 30VIP).
Removed skinny debug messages from inline code as there's an ast_verb in transmit_clear_display_message. Also, removed commentary that it was a clear display as it is now apparent from the function name.
Split transmit_displaypromptmessage into display and clear.
(closes issue #16878)
Reported by: wedhorn
Patches:
skinny-clean02.diff uploaded by wedhorn (license 30)
skinny-clean03.diff uploaded by wedhorn (license 30)
Modify queued frames from local channels to not set the other side to up
In this case, attended transfers were broken due to ast_feature_request_and_dial
detecting the channel being set to up before the answer frame could be read and
therefore failing to mark the channel as ready. This fix is a regression fix for
244785, which should continue to work properly as well.
Alec L Davis [Sat, 27 Feb 2010 22:49:51 +0000 (22:49 +0000)]
overlap receiving: automatically send CALL PROCEEDING when dialplan starts
Following Q.931 5.2.4
When the user has determined that sufficient call information has been received the
user shall stop T302 and send CALL PROCEEDING to the network.
Previously timeouts were possible if the dialplan took a long time to issue any
response back to the network.
Tilghman Lesher [Fri, 26 Feb 2010 18:41:57 +0000 (18:41 +0000)]
Cleanups to fix bugs in the VM count API functions.
- Urgent voicemails were not attached, because the attachment code looked in the wrong folder.
- Urgent voicemails were sometimes counted twice when displaying the count of new messages.
- Backends were inconsistent as to which voicemails each API counted.
- Unit tests added to verify behavior in the future.
Some platforms clear /var/run at boot, which makes connecting a remote console... difficult.
Previously, we only created the default /var/run/asterisk directory at install
time. While we could create it in the init script, that would not work for
those who start asterisk manually from the command line. So the safest thing
to do is to create it as part of the Asterisk boot process. This also changes
the ownership of the directory, because the pid and ctl files are created after
we setuid/setgid.
(closes issue #16802)
Reported by: Brian
Patches:
20100224__issue16802.diff.txt uploaded by tilghman (license 14)
Tested by: tzafrir
........
Tilghman Lesher [Wed, 24 Feb 2010 22:44:55 +0000 (22:44 +0000)]
Also kill the .i files, or else the build process will not recreate them, when we
change flags. Fixes a weird symbol problem mmichelson was having in a group branch,
but also applies to trunk.
Remove color code sequences from verbose messages that go to logfiles.
(closes issue #16786)
Reported by: dodo
Patches:
logger2.patch uploaded by dodo (license 989)
Tested by: tilghman
........
Mark Michelson [Mon, 22 Feb 2010 20:19:00 +0000 (20:19 +0000)]
Move the REF_DEBUG comment higher in the include list.
Uncommenting the REF_DEBUG definition where it was in the source
resulted in only a small part of the astobj2 references being logged
to a file. Moving this up higher in the include list causes all references
to be logged as they should be.
Make chan_misdn DTMF processing consistent with other channel technologies.
The processing of DTMF tones on the receiving side of an ISDN channel is
inconsistent with the way it is handled in other channels, especially
DAHDI analog. This causes DTMF tones sent from an ISDN phone to be
doubled at the connected party.
We are using the following 2 options of misdn.conf
1) astdtmf=yes
2) senddtmf=yes
Option one is necessary because the asterisk DSP DTMF detection is better
than mISDN's internal DSP. Not as many false positives.
Option two is necessary to transmit DTMF tones end to end when mISDN
channels are connected to SIP channels with out of band DTMF for example.
The symptom is that DTMF tones sent by an ISDN phone are doubled on the
way through asterisk when two mISDN channels are connected with a Local
channel in between or if it is bridged to an analog channel.
The doubling of DTMF tones is because DTMF is passed inband to asterisk by
the mISDN channel and passed out of band once again after the release of
the DTMF tone. Passing it inband is wrong. Neither an analog channel nor
SIP channel passes DTMF inband if configured to inband DTMF. Analog and
SIP channels filter out the DTMF tones because they use the voice frames
returned by ast_dsp_process. But chan_misdn passes the unfiltered input
voice frames instead.
To overcome one aspect of the problem, the doubling of DTMF tones when two
mISDN channels are directly bridged, someone made an 'optimization', where
in that case the DTMF tone passed out-of-band to the peer channel is not
translated to an inband tone at the transmit side. This optimization is
bad because it does not work in general. For example, analog channels or
mISDN channels when bridged through an intermediary local channel will
generate DTMF tones from out-of-band information. Also, of course, it
must not be done when there is no inband DTMF available.
This patch fixes the issue. Now chan_misdn will filter the received
inband DTMF signal the same as other channel types.
Another change included: No need to build an extra translation path
because ast_process_dsp does it if required.
Tilghman Lesher [Thu, 18 Feb 2010 21:42:53 +0000 (21:42 +0000)]
If the peer record is from realtime, it could be set to 0, due to MySQL not representing NULL well in integer columns.
NULL means the value is not specified for the column, which normally means
the driver uses whatever is the default value. However, on MySQL, placing
a NULL in either a float or integer column results in a retrieval of the 0
value. Hence, users get an errant error on load. This patch suppresses
that error and makes the value as if it was not there.
Note that this cannot be done in the realtime driver, because the lack of
difference between NULL and 0 can only be intepreted correctly by the
driver itself. If we did it in the realtime driver, then it would be
effectively impossible to set any realtime field to 0, because it would act
as if the field were unspecified and possibly take on a different value.
Richard Mudgett [Thu, 18 Feb 2010 18:31:44 +0000 (18:31 +0000)]
Fix placing ISDN calls on hold preventing native bridging from being reexamined after a transfer.
Consider the following scenario:
/-- B
A == * == Network
\-- C
Party B calls party A (EuroISDN BRI phone)
Party A puts B on hold using the HOLD/RETRIEVE messages.
Party A calls party C.
Party A puts C on hold to talk with party B again.
Party A transfers B to C by hanging up.
The call does not get the opportunity to get re-transferred into the ISDN
network by the native bridge because native bridging is not being
reexamined after the initial transfer.
Russell Bryant [Thu, 18 Feb 2010 04:20:11 +0000 (04:20 +0000)]
Merged revisions 247422 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r247422 | russell | 2010-02-17 22:19:01 -0600 (Wed, 17 Feb 2010) | 10 lines
Tweak argument handling for wget in the sounds Makefile.
1) Fix the check to see if we are using wget to not be full of fail. The
configure script populates this variable with the absolute path to wget if
it is found, so it didn't work.
2) Allow some extra arguments to be passed in for wget. This is just a simple
change to allow our Bamboo build script to tell wget to be quiet and not fill
up our logs with download status output.
........
Mark Michelson [Wed, 17 Feb 2010 21:22:40 +0000 (21:22 +0000)]
Fix two problems in ast_str functions found while writing a unit test.
1. The documentation for ast_str_set and ast_str_append state that
the max_len parameter may be -1 in order to limit the size of the
ast_str to its current allocated size. The problem was that the max_len
parameter in all cases was a size_t, which is unsigned. Thus a -1 was
interpreted as UINT_MAX instead of -1. Changing the max_len parameter
to be ssize_t fixed this issue.
2. Once issue 1 was fixed, there was an off-by-one error in the case
where we attempted to write a string larger than the current allotted
size to a string when -1 was passed as the max_len parameter. When trying
to write more than the allotted size, the ast_str's __AST_STR_USED was
set to 1 higher than it should have been. Thanks to Tilghman for quickly
spotting the offending line of code.
Oh, and the unit test that I referenced in the top line of this commit
will be added to reviewboard shortly. Sit tight...
Jeff Peeler [Wed, 17 Feb 2010 19:51:53 +0000 (19:51 +0000)]
Add support for GROUP_MATCH_COUNT regex matching on category
Current support for regex matching was previously only available on the group.
Also, error reporting for regex failures has been added. In addition to this
feature enhancement a unit test has been written to check the regular expression
logic to ensure the count operation is working as expected.
David Vossel [Wed, 17 Feb 2010 18:29:48 +0000 (18:29 +0000)]
addition of dynamic parkinglots feature
This feature allows for parkinglots to be created dynamically within
the dialplan. Thanks to all who were involved with getting this patch
written and tested!
Tilghman Lesher [Wed, 17 Feb 2010 06:25:15 +0000 (06:25 +0000)]
Make all of the various rtpqos parameters in this branch available from the CHANNEL function.
Also includes a test for retrieving rtpqos parameters, including a NULL RTP
driver. Additionally, some further separation of the SIP internal API into
headers was necessary.
Mark Michelson [Tue, 16 Feb 2010 23:44:33 +0000 (23:44 +0000)]
Add va_end calls to __ast_str_helper.
According to the man page for stdarg(3),
"Each invocation of va_copy() must be matched by a
corresponding invocation of va_end() in the same
function."
There were several cases in __ast_str_helper where
va_copy was not matched with a corresponding call
to va_end.
Mark Michelson [Tue, 16 Feb 2010 18:29:42 +0000 (18:29 +0000)]
Add unit test for dialplan pattern matching.
This test works by reading input from arrays to build a sample
dialplan. From there, patterns are attempted to be matched against
said dialplan, with the expected match given. We then search in our
example dialplan to see if we find a match and if what we find matches
what we expected it to match.
David Vossel [Tue, 16 Feb 2010 17:07:41 +0000 (17:07 +0000)]
fixes sample rate conversion issue with Monitor application
When using ast_seekstream with the read/write streams of a monitor,
the number of samples we are seeking must be of the same rate as the
stream or the jump calculation will be incorrect. This patch adds logic
to correctly convert the number of samples to jump to the sample rate
the read/write stream is using.
For example, if the call is G722 (16khz) and the read/write stream is
recording a 8khz wav, seeking 320 samples of 16khz audio is not the
same as seeking 320 samples of 8khz audio when performing the ast_seekstream
on the stream.
Tilghman Lesher [Tue, 16 Feb 2010 00:52:45 +0000 (00:52 +0000)]
Change the blanket rules to delete .lastclean on all CFLAGS menuselect targets to be more particular.
This change builds upon the recent change to menuselect to add 'touch_on_change'
as an attribute of both categories and members. This should allow only the most
invasive defines to cause a complete rebuild, while defines which only affect a
subset of modules will only cause a rebuild of that smaller set.
David Vossel [Mon, 15 Feb 2010 15:45:02 +0000 (15:45 +0000)]
chan_sip parse code refactoring plus two new unit tests
Code Refactoring Changes
- read_to_parts() moved to reqresp_parser.c and has been renamed as
get_name_and_number()
- get_in_brackets() moved to reqresp_parser.c
- find_closing_quotes() added to sip_utils.h
Logic Changes
- get_name_and_number() now uses parse_uri() and get_calleridname()
for parsing. Before this change only names within quotes were
found, when names not within quotes are possible.
New Unit Tests
-sip_get_name_and_number_test
-sip_get_in_brackets_test
On channel destruction the channel's datastores are removed and
destroyed. Since there are public API calls to find and remove
datastores on a channel, a lock should be held whenever datastores are
removed and destroyed. This resolves a crash caused by a race
condition in app_chanspy.c.
(closes issue #16678)
Reported by: tim_ringenbach
Patches:
datastore_destroy_race.diff uploaded by tim ringenbach (license 540)
Tested by: dvossel
........
David Vossel [Fri, 12 Feb 2010 17:59:39 +0000 (17:59 +0000)]
fixes areas where port should be removed from domain during parsing
A patch was committed recently that converted duplicate uri parsing
code to use the parse_uri function. There were two instances where
this conversion did not mimic previous behavior exactly because the
port was not being parsed off the end of the domain. In order to do
this, a dummy pointer argument needs to be passed into parse_uri so
it will know it must parse out the port from the domain. If a port
output paramenter is not present, the domain is returned with the
port still attached.