Russell Bryant [Wed, 20 Aug 2008 22:16:36 +0000 (22:16 +0000)]
Merged revisions 139213 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r139213 | russell | 2008-08-20 17:14:35 -0500 (Wed, 20 Aug 2008) | 11 lines
Fix a crash in the ChanSpy application. The issue here is that if you call
ChanSpy and specify a spy group, and sit in the application long enough looping
through the channel list, you will eventually run out of stack space and the
application with exit with a seg fault. The backtrace was always inside of
a harmless snprintf() call, so it was tricky to track down. However, it turned
out that the call to snprintf() was just the biggest stack consumer in this
code path, so it would always be the first one to hit the boundary.
Backport support for Zaptel/DAHDI channel-level alarms from trunk/1.6, because not doing so just makes it difficult for people with channels that are in alarm when Asterisk starts up to get them going once the alarm is cleared
The specialized reset routine is tromping on the
flags field of the CDR. I made a change to not
reset the DISABLED bit. This should get rid of this
problem.
Add a lock and unlock prior to the destruction of the chanspy_ds
lock to ensure that no other threads still have it locked. While
this should not happen under normal circumstances, it appears that
if the spyer and spyee hang up at nearly the same time, the following
may occur.
1. ast_channel_free is called on the spyee's channel.
2. The chanspy datastore is removed from the spyee's channel in
ast_channel_free.
3. In the spyer's thread, the spyer attempts to remove and destroy the datastore
from the spyee channel, but the datastore has already been removed in step 2,
so the spyer continues in the code.
4. The spyee's thread continues and calls the datastore's destroy callback,
chanspy_ds_destroy. This involves locking the chanspy_ds.
5. Now the spyer attempts to destroy the chanspy_ds lock. The problem is that in step 4,
the spyee has locked this lock, meaning that the spyer is attempting to destroy a lock
which is currently locked by another thread.
The backtrace provided in issue #12969 supports the idea that this is possible
(and has even occurred). This commit does not close the issue, but should help
in preventing one type of crash associated with the use of app_chanspy.
Michiel van Baak [Tue, 19 Aug 2008 16:56:50 +0000 (16:56 +0000)]
chan_skinny now respects callwaiting=no
(closes issue #12691)
Reported by: sbisker
Patches:
callwaitingv1.diff uploaded by wedhorn (license 30)
Tested by: wedhorn on old skinny phones, mvanbaak on 7960 and 7905 with latest firmware
Steve Murphy [Tue, 19 Aug 2008 15:59:12 +0000 (15:59 +0000)]
These changes are in regards to bug 13249, where users are being surprised by the changes made
to the Set app in trunk/1.6.x, as they come from the 1.4 world. They are only bitten if
they write their AEL dialplan in the 1.4 world, and then carry it over to a trunk/1.6.x
installation where a "make samples" was executed, or where they hand-edited the
asterisk.conf file and added the [compat] category with app_set = 1.6 (or higher).
(this commit does not totally solve 13249, at least not yet)
The change involves issueing a single warning while the AEL file is loading, if:
1. app_set is present in the config file, and set to 1.6 or higher.
2. there are double quotes in an assignment statement (eg x = "hi there";)
3. the warning was not already issued.
The standalone app, aelparse, does not (yet) issue this warning. I'd have to
have it read in the asterisk.conf file, and that's a bit of hassle. I'll add
it if users request it, tho.
Richard Mudgett [Mon, 18 Aug 2008 21:07:28 +0000 (21:07 +0000)]
channels/chan_misdn.c
* Made bearer2str() use allowed_bearers_array[]
* Made use the causes.h defines instead of hardcoded numbers.
* Made use Asterisk presentation indicator values if either of the
mISDN presentation or screen options are negative.
* Updated the misdn_set_opt application option descriptions.
* Renamed the awkward Caller ID presentation misdn_set_opt
application option value not_screened to restricted.
Deprecated the not_screened option value.
channels/misdn/isdn_lib.c
* Made use the causes.h defines instead of hardcoded numbers.
* Fixed some spelling errors and typos.
* Added all defined facility code strings to fac2str().
channels/misdn/isdn_lib.h
* Added doxygen comments to struct misdn_bchannel.
channels/misdn/isdn_lib_intern.h
* Added doxygen comments to struct misdn_stack.
channels/misdn_config.c
configs/misdn.conf.sample
* Updated the mISDN presentation and screen parameter descriptions.
doc/tex/misdn.tex
* Updated the misdn_set_opt application option descriptions.
* Fixed some spelling errors and typos.
Sean Bright [Sat, 16 Aug 2008 16:40:43 +0000 (16:40 +0000)]
Since it's introduction in revision 3497, cdr_tds has *never* read
the port configuration option from cdr_tds.conf. So go ahead and
remove it from the sample config.
Fixes the dahdi restart functionality. Dahdi restart allows one to restart all DAHDI channels, even if they are currently in use. This is different from unloading and then loading the module since unloading requires the use count to be zero. Reloading the module is different in that the signalling is not changed from what it was originally configured. Also, this fixes not closing all the file descriptors for D-channels upon module unload (which would prevent loading the module afterwards).
(closes issue #11017)
........
r138151 | jpeeler | 2008-08-15 14:41:29 -0500 (Fri, 15 Aug 2008) | 1 line
declared static mutexes using AST_MUTEX_DEFINE_STATIC macro
........
r138238 | jpeeler | 2008-08-15 16:28:26 -0500 (Fri, 15 Aug 2008) | 1 line
initialize condition variable ss_thread_complete using ast_cond_init
........
Russell Bryant [Fri, 15 Aug 2008 15:09:46 +0000 (15:09 +0000)]
Merged revisions 138027 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r138027 | russell | 2008-08-15 10:07:16 -0500 (Fri, 15 Aug 2008) | 9 lines
Ensure that when a hangup occurs in autoservice, that a hangup frame gets
properly deferred to be read from the channel owner when it gets taken out
of autoservice.
When creating the secondary subchannel name, it is necessary to compare to
the existing channel name without the "Zap/" or "DAHDI/" prefix, since our
test string is also without that prefix.
(closes issue #13027)
Reported by: dferrer
Patches:
chan_zap-1.4.21.1_fix2.patch uploaded by dferrer (license 525)
(Slightly modified by me, to compensate for both names)
Sean Bright [Thu, 14 Aug 2008 15:03:03 +0000 (15:03 +0000)]
If we detect that we are no longer connected, try to reconnect a few times
before giving up. This relies on the timeout settings in the freetds.conf
file and, unfortunately, on a recent version of FreeTDS (0.82 or newer).
I either need to change the current execs to be non-blocking (which I do
not want to do) or we have to force people to run with the latest and
greatest of FreeTDS. I'm on the fence...
Russell Bryant [Thu, 14 Aug 2008 14:15:50 +0000 (14:15 +0000)]
Merged revisions 137731 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r137731 | russell | 2008-08-14 09:05:23 -0500 (Thu, 14 Aug 2008) | 4 lines
Comments in this config file were aligned only if your tab size was set to 8.
So, convert tabs to spaces so that things should be aligned regardless of what
tab size you use in your editor.
Tilghman Lesher [Wed, 13 Aug 2008 17:36:15 +0000 (17:36 +0000)]
Convert deprecated routines to the new names.
(closes issue #13297)
Reported by: snuffy
Patches:
bug13297_20080814.diff uploaded by snuffy (license 35)
Bring cdr_tds in line with the other CDR backends and have it try to store
CDR(userfield) if it is set. The new behavior is to check for the userfield
column on module load, and if it exists, we will store CDR(userfield) when
CDRs are written. A similar patch already went into trunk and 1.6.0.
Sean Bright [Mon, 11 Aug 2008 14:25:15 +0000 (14:25 +0000)]
Log the userfield CDR variable like the other CDR backends, assuming the
column is actually there. If it's not, we still log everything else as
before.
Sean Bright [Sat, 9 Aug 2008 12:53:57 +0000 (12:53 +0000)]
Merge more changes from the resolve-shadow-warnings branch (henceforth known
as RSW since i am too lazy to keep typing it all out). This time a few of
the channels.
Tilghman Lesher [Sat, 9 Aug 2008 01:15:38 +0000 (01:15 +0000)]
Update documentation as to the behavior of AGI in 1.6.0 and higher. Also, add
an OOB message that answers the question of, if AGI no longer shuts down the
connection on hangup, how will FastAGI know when to stop processing the call?
I regrouped and ran a new strategy for
setting the ~~MACRO~~ value; I set it once
per extension, up near the top. It is only
set if there is a switch in the extension.
So, I had to put in a chunk of code to detect
a switch in the pval tree.
I moved the code to insert the set of ~~exten~~
up to the beginning of the gen_prios routine,
instead of down in the switch code.
I learned that I have to push the detection
of the switches down into the code, so everywhere
I create a new exten in gen_prios, I make sure
to pass onto it the values of the mother_exten
first, and the exten next.
I had to add a couple fields to the exten
struct to accomplish this, in the ael_structs.h
file. The checked field makes it so we don't
repeat the switch search if it's been done.
Mark Michelson [Thu, 7 Aug 2008 22:25:50 +0000 (22:25 +0000)]
Merging the imap_consistency_trunk branch to
trunk.
For an explanation of what "imap_consistency" is,
please see svn revision 134223 to the 1.4 branch.
Coincidentally, this also fixes a recent bug report
regarding the inability to save messages to the new
folder when using IMAP storage since they will would
be flagged as "seen" and not be recognized as new
messages.
Mark Michelson [Thu, 7 Aug 2008 19:54:27 +0000 (19:54 +0000)]
Fix a calculation error I had made in the poll. The poll
would reset to 500 ms every time a non-voice frame
was received. The total time we poll should be 500 ms, so
now we save the amount of time left after the poll returned
and use that as our argument for the next call to poll
Mark Michelson [Thu, 7 Aug 2008 19:36:46 +0000 (19:36 +0000)]
Scrap the 500 ms delay when Asterisk auto-answers a channel.
Instead, poll the channel until receiving a voice frame. The
cap on this poll is 500 ms.
The optional delay is still allowable in the Answer() application,
but the delay has been moved back to its original position, after
the call to the channel's answer callback. The poll for the voice
frame will not happen if a delay is specified when calling Answer().