Russell Bryant [Mon, 30 Jun 2008 16:05:08 +0000 (16:05 +0000)]
Fix a typo in the non-DEBUG_THREADS version of the recently added DEADLOCK_AVOIDANCE()
macro. This caused the lock to not actually be released, and as a result, not
avoid deadlocks at all. This resolves the issues reported in the last while about
Asterisk locking up all over the place (and most commonly, in chan_iax2).
Olle Johansson [Mon, 30 Jun 2008 12:50:55 +0000 (12:50 +0000)]
Send all responses to an INVITE reliably, so that we retransmit if we don't get an ACK and
also fail if we don't get the very same precious ACK. Based on patch by tsearle, with
my own additions.
(closes issue #12951)
Reported by: tsearle
Patches:
busy_retransmit.patch uploaded by tsearle (license 373)
Tilghman Lesher [Fri, 27 Jun 2008 16:46:05 +0000 (16:46 +0000)]
Since HAVE_DAHDI is defined to HAVE_ZAPTEL in dahdi_compat.h, we must first
check for HAVE_ZAPTEL.
(closes issue #12938)
Reported by: opticron
Patches:
tonezone_compat.diff uploaded by opticron (license 267)
Mark Michelson [Thu, 26 Jun 2008 22:52:39 +0000 (22:52 +0000)]
Add the interface of a queue member to the output of the "queue show" command
so that it can easily be associated with a queue member's name. This helps
so that the appropriate queue member can be removed or paused since the
interface is required, not the member's name.
(closes issue #12783)
Reported by: davevg
Patches:
app_queue.diff uploaded by davevg (license 209) with small mod from me
Mark Michelson [Thu, 26 Jun 2008 20:56:01 +0000 (20:56 +0000)]
Prior to this patch, the "queue show" command used cached
information for realtime queues instead of giving up-to-date
info. Now realtime is queried for the latest and greatest in
queue info.
Kevin P. Fleming [Thu, 26 Jun 2008 15:30:33 +0000 (15:30 +0000)]
ensure that (whenever possible) if we generate a log message because an ioctl() call to DAHDI/Zaptel failed, that we include the reason it failed by including the stringified error number
Kevin P. Fleming [Wed, 25 Jun 2008 22:21:30 +0000 (22:21 +0000)]
allow tonezone to live in a different place than DAHDI/Zaptel, since dahdi-tools and dahdi-linux are now separate packages and can be installed in different places
don't include tonezone.h in dahdi_compat.h, because only a couple of modules need it
get app_rpt building again after the DAHDI changes
Tilghman Lesher [Tue, 24 Jun 2008 21:08:52 +0000 (21:08 +0000)]
Occasionally control characters find their way into CallerID. These need to
be stripped prior to placing CallerID in the headers of an email.
(closes issue #12759)
Reported by: RobH
Patches:
20080602__bug12759__2.diff.txt uploaded by Corydon76 (license 14)
Tested by: RobH
Tilghman Lesher [Tue, 24 Jun 2008 20:52:43 +0000 (20:52 +0000)]
Don't access the pvt structure if unable to acquire the lock.
(closes issue #12162)
Reported by: norman
Patches:
12162-lockfail.diff uploaded by qwell (license 4)
Steve Murphy [Sun, 22 Jun 2008 02:54:52 +0000 (02:54 +0000)]
(closes issue #12910)
Reported by: chris-mac
Sorry, my testing did not contain the simple case of forkCDR(v),
I am much embarrassed to admit. If I had, I would have
more solidly initialized the opts element for varset.
Tilghman Lesher [Fri, 20 Jun 2008 23:12:33 +0000 (23:12 +0000)]
usleep with a value over 1,000,000 is nonportable. Changing to use sleep()
instead. (closes issue #12814)
Reported by: pputman
Patches:
app_rtp_sleep.patch uploaded by pputman (license 81)
Tilghman Lesher [Fri, 20 Jun 2008 20:16:02 +0000 (20:16 +0000)]
When using a Local channel, started by a call file, with a destination of an
AGI script, the AGI script does not always get notified of a hangup if the
underlying channel hangs up early.
(closes issue #11833)
Reported by: IgorG
Patches:
local_hangup-v1.diff uploaded by IgorG (license 20)
Tilghman Lesher [Thu, 19 Jun 2008 22:53:22 +0000 (22:53 +0000)]
It's possible for a hangup to be received, even just after the initial cid
spill.
(closes issue #12453)
Reported by: Alex728
Patches:
20080604__bug12453.diff.txt uploaded by Corydon76 (license 14)
Tilghman Lesher [Thu, 19 Jun 2008 16:26:03 +0000 (16:26 +0000)]
Only process 40 arguments (20 files) at once with xargs, because some older
shells may force xargs to separate on an odd boundary.
(Closes issue #12883)
Reported by Nik Soggia
Tilghman Lesher [Thu, 19 Jun 2008 16:07:23 +0000 (16:07 +0000)]
The RDTSC instruction was introduced on the Pentium line of microprocessors,
and is not compatible with certain 586 clones, like Cyrix. Hence, asking for
i386 compatibility was always incorrect. See http://en.wikipedia.org/wiki/RDTSC
(Closes issue #12886)
Reported by tecnoxarxa
Tilghman Lesher [Wed, 18 Jun 2008 22:08:30 +0000 (22:08 +0000)]
Add support for saying numbers in Hebrew.
(closes issue #11662)
Reported by: greenfieldtech
Patches:
say.c.patch-12042008 uploaded by greenfieldtech (license 369)
Hebrew-Sounds.ods uploaded by greenfieldtech
(with signficant changes to the spreadsheet by me)
Tilghman Lesher [Wed, 18 Jun 2008 20:22:42 +0000 (20:22 +0000)]
Set the variables top-down, so that if a script sets a variable more than once,
the last one will take precedence.
(closes issue #12673)
Reported by: phber
Patches:
20080519__bug12673.diff.txt uploaded by Corydon76 (license 14)
Mark Michelson [Tue, 17 Jun 2008 18:09:16 +0000 (18:09 +0000)]
Cisco BTS sends SIP responses with a tab between the Cseq number and
SIP request method in the Cseq: header. Asterisk did not handle this
properly, but with this patch, all is well.
Mark Michelson [Tue, 17 Jun 2008 15:56:55 +0000 (15:56 +0000)]
davidw pointed out that the holdtime calculation used by
app_queue does not use "boxcar" filtering as the comments
say. The term "boxcar" means that the number of samples used
to calculate stays constant, with new samples replacing the
oldest ones. The queue holdtime calculation uses all holdtime
samples collected since the queue was loaded, so the comment
has been changed to be accurate.
Russell Bryant [Tue, 17 Jun 2008 15:48:31 +0000 (15:48 +0000)]
Fix a memory leak in astobj2 that was pointed out by seanbright. When a container
got destroyed, the underlying bucket list entry for each object that was in the
container at that time did not get free'd.
Tilghman Lesher [Mon, 16 Jun 2008 19:21:58 +0000 (19:21 +0000)]
People expect that if "hasvoicemail" is set in users.conf, even if "mailbox"
isn't set, that SIP will detect a mailbox.
(closes issue #12855)
Reported by: PLL
Patches:
20080614__bug12855__2.diff.txt uploaded by Corydon76 (license 14)
Tested by: PLL
Joshua Colp [Mon, 16 Jun 2008 12:31:09 +0000 (12:31 +0000)]
Only compare the first 15 characters so that even if the charset is specified we still accept it as SDP.
(closes issue #12803)
Reported by: lanzaandrea
Patches:
chan_sip.c.diff uploaded by lanzaandrea (license 496)
Joshua Colp [Mon, 16 Jun 2008 12:08:28 +0000 (12:08 +0000)]
Don't send a BYE on a dialog that is already gone during a REFER.
(closes issue #12865)
Reported by: flefoll
Patches:
chan_sip.c.br14.121495.patch-ALREADYGONE uploaded by flefoll (license 244)
Mark Michelson [Fri, 13 Jun 2008 21:44:53 +0000 (21:44 +0000)]
Short circuit the loop in autoservice_run if there are no channels to poll.
If we continued, then the result would be calling poll() with a NULL
pollfd array. While this is fine with POSIX's poll(2) system call, those
who use Asterisk's internal poll mechanism (Darwin systems) would have
a failed assertion occur when poll is called.
Terry Wilson [Fri, 13 Jun 2008 16:29:07 +0000 (16:29 +0000)]
This should fix the behavior of the 'T' dial feature being passed incorrectly to the transferee when builtin_atxfers are used.
Also, doing a builtin_atxfer to parking was broken and is fixed here as well.
Tilghman Lesher [Thu, 12 Jun 2008 15:18:39 +0000 (15:18 +0000)]
Flipflop the sections for two options, since the section for 'X' (exit context)
may otherwise absorb keypresses meant for 's' (admin/user menu).
(closes issue #12836)
Reported by: blitzrage
Patches:
20080611__bug12836.diff.txt uploaded by Corydon76 (license 14)
Tested by: blitzrage
Tilghman Lesher [Thu, 12 Jun 2008 15:11:30 +0000 (15:11 +0000)]
Occasionally, the alertpipe loses its nonblocking status, so detect and correct
that situation before it causes a deadlock. (Reported and tested by ctooley
via #asterisk-dev)
Steve Murphy [Thu, 12 Jun 2008 14:51:44 +0000 (14:51 +0000)]
Arkadia tried to warn me, but the code added to ast_cdr_busy, _failed, and _noanswer was redundant. Didn't spot it until I was resolving conflicts in trunk. Ugh. Redundant code removed. It wasn't harmful. Just dumb.
Options added to forkCDR() app and the CDR() func to
remove some roadblocks for CDR applications.
The "show application ForkCDR" output was upgraded
to more fully explain the inner workings of forkCDR.
The A option was added to forkCDR to force the
CDR system to NOT change the disposition on the
original CDR, after the fork. This involves
ast_cdr_answer, _busy, _failed, and so on.
The T option was added to forkCDR to force
obedience of the cdr LOCKED flag in the
ast_cdr_end, all the disposition changing
funcs (ast_cdr_answer, etc), and in the
ast_cdr_setvar func.
The CHANGES file was updated to explain ALL
the new options added to satisfy this bug report
(and some requests made verbally and via
email, irc, etc, over the past months/year)
The 's' option was added to the CDR() func,
to force it to skip LOCKED cdr's in the
chain.
Again, the new options should be totally transparent
to existing apps! Current behavior of CDR,
forkCDR, and the rest of the CDR system should
not change one little bit. Until you add the
new options, at least!
Joshua Colp [Tue, 10 Jun 2008 13:34:27 +0000 (13:34 +0000)]
If we are destroying a dialog only set the MWI dialog pointer on the related peer to NULL if it is the dialog currently being destroyed.
(closes issue #12828)
Reported by: ramonpeek
Joshua Colp [Tue, 10 Jun 2008 12:52:06 +0000 (12:52 +0000)]
Update BRIDGEPEER variable before we do a generic bridge in case we just broke out of a native bridge and fell through to generic.
(closes issue #12815)
Reported by: ramonpeek
Russell Bryant [Mon, 9 Jun 2008 16:35:40 +0000 (16:35 +0000)]
Do not attempt to do emulation if an END digit is received and the length is
less than the defined minimum digit length, and the other end only wants END
digits (SIP INFO, for example).
(closes issue #12778)
Reported by: tsearle
Patches:
12778.rev1.txt uploaded by russell (license 2)
Tested by: tsearle
Mark Michelson [Mon, 9 Jun 2008 15:02:37 +0000 (15:02 +0000)]
A unique situation of timeouts brought forth a failure situation for
autologoff in chan_agent. If using AgentCallbackLogin-style agents,
then if the timeout specified by the Dial() to reach the agent's phone
was shorter than the timeout specified in queues.conf, then autologoff
would only work if the caller hung up while the agent's phone was ringing.
This patch allows autologoff to work in this situation when the call in
queue transfers to the next available agent (as it would have if the timeout
in queues.conf were less than the timeout in the Dial()).
Jeff Peeler [Fri, 6 Jun 2008 15:33:15 +0000 (15:33 +0000)]
This fixes a crash when LOW_MEMORY is turned on. Two allocations of the ast_rtp struct that were previously allocated on the stack have been modified to use thread local storage instead.
Russell Bryant [Thu, 5 Jun 2008 16:38:52 +0000 (16:38 +0000)]
It turns out that searching on the forwarding station isn't very useful for
most people, so pull in the changes that allow searching for SMDI messages
based on other components of the SMDI message. Also, update the SMDI
documentation.
Tilghman Lesher [Wed, 4 Jun 2008 18:35:47 +0000 (18:35 +0000)]
If we fail to setup the PRI request channel, don't continue, exit with an error.
(closes issue #11989)
Reported by: Corydon76
Patches:
20080213__zap_memleak.diff.txt uploaded by Corydon76 (license 14)
Russell Bryant [Wed, 4 Jun 2008 16:26:43 +0000 (16:26 +0000)]
Make the "dialplan remove include" CLI command actually work. Also, tweak
some formatting, and make the success message a little bit more clear.
(closes AST-52)
Joshua Colp [Wed, 4 Jun 2008 13:31:09 +0000 (13:31 +0000)]
Fix a log message and add a message for when the dialplan is done reloading.
(closes issue #12716)
Reported by: chappell
Patches:
dialplan_reload_2.diff uploaded by chappell (license 8)
Tilghman Lesher [Tue, 3 Jun 2008 22:41:04 +0000 (22:41 +0000)]
Due to incorrect use of the AST_LIST_INSERT_HEAD() macro the loopback switch
cannot perform any translation on the extension number before searching for it
in the target context.
(closes issue #12473)
Reported by: chappell
Patches:
pbx_loopback.c.diff uploaded by chappell (license 8)
This change decreases the buffer size allocated on the stack substantially in config_text_file_load when LOW_MEMORY is turned on. This change combined with the fix from revision 117462 (making mkintf not copy the zt_chan_conf structure) was enough to prevent the crash.
Russell Bryant [Tue, 3 Jun 2008 21:34:55 +0000 (21:34 +0000)]
Fix another place where peer->callno could change at a very bad time, and also
fix a place where a peer was used after the reference was released.
(inspired by rev 120001)
Tilghman Lesher [Tue, 3 Jun 2008 18:23:32 +0000 (18:23 +0000)]
When listing the manager users, managers in users.conf are not shown, even
though they are allowed to connect.
(closes issue #12594)
Reported by: bkruse
Patches:
12594-managerusers-2.diff uploaded by qwell (license 4)
Tested by: bkruse
Tilghman Lesher [Tue, 3 Jun 2008 16:10:53 +0000 (16:10 +0000)]
Save the callno when we're poking, because our peer structure could change
during destruction (and thus we unlock the wrong callno, causing a
cascade failure).
(closes issue #12717)
Reported by: gewfie
Patches:
20080525__bug12717.diff.txt uploaded by Corydon76 (license 14)
Tested by: gewfie
Steve Murphy [Tue, 3 Jun 2008 15:26:56 +0000 (15:26 +0000)]
Updated the regressions on AEL. Hadn't updated
this for the changes I made to preserve ${EXTEN}
in switches, which affected several tests because
it adds extra priorities, and at least one needed to be updated
because of the removal of the empty extension warning
message.
Steve Murphy [Tue, 3 Jun 2008 14:49:46 +0000 (14:49 +0000)]
as per http://lists.digium.com/pipermail/asterisk-users/2008-June/212934.html,
which is a message from Philipp Kempgen, requesting that the WARNING
that an extension is empty be reduced to a NOTICE or less, as empty
extensions are syntactically possible, and no big deal.
With which I agree, and have removed that WARNING message entirely.
I think it is not necessary to see this message. It didn't
state that a NoOp() was inserted automatically on your behalf,
and really, as users, who cares? Why freak out dialplan writers
with unnecessary warnings? The details of the machinations a compiler goes
thru to produce working assembly code is of little interest
to most programmers-- we will follow the unix principal of
doing our work silently.
Russell Bryant [Mon, 2 Jun 2008 20:08:04 +0000 (20:08 +0000)]
Revert a change made for issue #12479. This change caused a regression such that
a dial string such as (IAX2/foo) did not automatically fall back to dialing the 's'
extension anymore.
Russell Bryant [Mon, 2 Jun 2008 14:39:45 +0000 (14:39 +0000)]
Improve CLI command blacklist checking for the command manager action. Previously,
it did not handle case or whitespace properly. This made it possible for blacklisted
commands to get executed anyway.
(closes issue #12765)
Added counter for unhandled_bmsg Print, this prevents the logs to be flooded to fast and save CPU in this error scenario. Added 'last_used' element to bc structure, when a bchannel changes from used to free this exact time will be marked in last_used. When a new channel is requested the find_free_chan function will check if the new empty channel was used within the last second, if yes it will search for the next channel, if no it will return this channel. This simple mechanism has prooven to prevent race conditions where the NT and TE tried to allocate the exact same channel at the same time (RELEASE cause: 44).