Steve Murphy [Sat, 22 Sep 2007 19:39:16 +0000 (19:39 +0000)]
This closes issue #10788 -- The exact same fixes are made here for the first arg in the for(arg1; arg2; arg3) {} statement, as were done for the 3rd arg. It can now be an assignment that will embedded in a Set() app, or a macro call, or an app call.
Steve Murphy [Sat, 22 Sep 2007 16:41:43 +0000 (16:41 +0000)]
This closes issue #10788 -- the 3rd arg in the for statement is now wrapped in Set() only if there's an '=' in that string. Otherwise, if it begins with '&', then a Macro call is generated; otherwise it is made into an app call. A bit more accomodating, keeps the new guys happy, and the guys with ael-1 code should be happy, too
Russell Bryant [Fri, 21 Sep 2007 14:37:20 +0000 (14:37 +0000)]
gcc 4.2 has a new set of warnings dealing with cosnt pointers. This set of
changes gets all of Asterisk (minus chan_alsa for now) to compile with gcc 4.2.
(closes issue #10774, patch from qwell)
Fix video under certain circumstances. It would have been possible for the formats on the channel to not contain the video format.
(closes issue #10782)
Reported by: cwhuang
Russell Bryant [Thu, 20 Sep 2007 21:16:48 +0000 (21:16 +0000)]
When daemonizing, don't change working directory to "/". It makes it not be
able to do a core dump when not running as uid=root.
(closes issue #10766, xrg)
Make sure the minimum T1 timer value is obeyed in all cases.
(closes issue #10768)
Reported by: flefoll
Patches:
chan_sip.c.trunk.83071.retrans-patch uploaded by flefoll (license 244)
chan_sip.c.br14.83070.retrans-patch uploaded by flefoll (license 244)
Russell Bryant [Wed, 19 Sep 2007 19:50:48 +0000 (19:50 +0000)]
The System() and TrySystem() applications can take a substantial amount of
time to execute while not servicing the channel. So, put the channel in
autoservice while the command is being executed.
(closes issue #10726, reported by mnicholson)
Russell Bryant [Wed, 19 Sep 2007 19:34:25 +0000 (19:34 +0000)]
Using curl can take a substantial amount of time, so the channel should be
autoserviced while waiting for it to complete.
(closes issue #10725, reported by mnicholson)
Russell Bryant [Wed, 19 Sep 2007 19:13:29 +0000 (19:13 +0000)]
When handling a reload of chan_iax2, don't use an ao2_callback() to POKE all
peers. Instead, use an iterator. By using an iterator, the peers container
is not locked while the POKE is being done. It can cause a deadlock if the
peers container is locked because poking a peer will try to lock pvt structs,
while there is a lot of other code that will hold a pvt lock when trying to
go lock the peers container.
(reported to me directly by Loic Didelot. Thank you for the debug info!)
Russell Bryant [Wed, 19 Sep 2007 15:10:14 +0000 (15:10 +0000)]
Fix up another potential race condition. Do the loop decrementing use count
on events with the eventq protected from being changed.
(reported on IRC by Ivan)
Protect the CDR record from modification by pbx_exec so that the application data contains the Queue data.
(closes issue #10761)
Reported by: snar
Patches:
app-queue-mixmonitor.patch uploaded by snar (license 245)
(closes issue #10760)
Reported by: dimas
Patches:
chan_sip.patch uploaded by dimas (license 88)
Read in subscribecontext option in general to be the default.
added 'astdtmf' option to allow configuring the asterisk dtmf detector instead of the mISDN_dsp ones. also added the patch from irroot #10190, so that dtmf tones detected by the asterisk detector are passed outofband to asterisk, to make any use of dtmf tones at all.
Russell Bryant [Wed, 19 Sep 2007 00:19:49 +0000 (00:19 +0000)]
Change the description of app_flash to note how it can be a useful tool instead
of just saying that it is generally a worthless feature.
(Thanks to Jim Van Meggelen for pointing it out and providing the proposed text)
Russell Bryant [Tue, 18 Sep 2007 22:42:27 +0000 (22:42 +0000)]
Add a new patch to handle interrupting the fgets() call when using FastAGI.
This version of the patch maintains the original behavior of the code when
not using FastAGI.
(closes issue #10553)
Reported by: juggie
Patches:
res_agi_fgets-4.patch uploaded by juggie (license 24)
res_agi_fgets_1.4svn.patch uploaded by juggie (license 24)
Slight mods by me
Tested by: juggie, festr
Russell Bryant [Tue, 18 Sep 2007 20:56:43 +0000 (20:56 +0000)]
Fix a memory leak that can occur on systems under higher load. The issue is
that when events are appended to the master event queue, they use the number
of active sessions as a use count so it will know when all active sessions
at the time the event happened have consumed it. However, the handling of
the number of sessions was not properly synchronized, so the use count was
not always correct, causing an event to disappear early, or get stuck in
the event queue for forever.
(closes issue #9238, reported by bweschke, patch from Ivan, modified by me)
Mark Michelson [Tue, 18 Sep 2007 20:09:02 +0000 (20:09 +0000)]
Moving the logic for handling an empty membername to the create_member function so that there is a common place
where this occurs instead of being spread out to several different places.
Russell Bryant [Tue, 18 Sep 2007 16:31:01 +0000 (16:31 +0000)]
When copying the contents from the wildcard peer, do a deep copy instead of
shallow copy so that it doesn't crash when beging destroyed.
(closes issue #10546, patch by me)
Russell Bryant [Mon, 17 Sep 2007 20:16:25 +0000 (20:16 +0000)]
Put a memset in ast_localtime() instead of a couple places in app_voicemail
to prevent the problem everywhere instead of just a couple of places.
(related to issue #10746)
Russell Bryant [Mon, 17 Sep 2007 20:00:32 +0000 (20:00 +0000)]
Initialize some memory to fix crashes when leaving voicemail. This problem
was fixed by running Asterisk under valgrind.
(closes issue #10746, reported by arcivanov, patched by me)
*** IMPORTANT NOTE: We need to check to see if this same bug exists elsewhere.
Russell Bryant [Mon, 17 Sep 2007 16:46:59 +0000 (16:46 +0000)]
Handle the case where there are multiple dynamic features with the same digit
mapping, but won't always match the activated on/by access controls. In that
case, the code needs to keep trying features for a match.
(reported by Atis on the asterisk-dev list, patched by me)
Steve Murphy [Fri, 14 Sep 2007 21:19:27 +0000 (21:19 +0000)]
closes issue #10668; thanks to arkadia for his patch; had to leave out the bit about ending the previous cdr in the fork; it would destroy current implementations.
Russell Bryant [Fri, 14 Sep 2007 15:42:42 +0000 (15:42 +0000)]
Remove chan_usbradio from the main 1.4 branch. It can't live here because we
have a strict policy to not include new features in release branches. However,
I'm going to merge it into trunk, and I also have a special 1.4 based branch that
includes this module.
svn co http://svn.digium.com/svn/asterisk/team/jdixon/chan_usbradio-1.4
Jason Parker [Thu, 13 Sep 2007 20:11:40 +0000 (20:11 +0000)]
Fix a crash that could occur in cdr_csv when mutliple threads tried to close the same file.
Do we actually need the locking here? What happens if you open the same file twice, and
two threads try to write to it at the same time? Is fputs() going to write out the entire
line at once? I suspect that it could be possible for the second fopen to run during the
first fputs, so the position could be in the middle of the previously written line...
Issue 10347, initial patch by explidous (but I removed all of the paranoia stuff..)
Russell Bryant [Thu, 13 Sep 2007 18:45:59 +0000 (18:45 +0000)]
Only compile in tracking astobj2 statistics if dev-mode is enabled. Also, when
dev mode is enabled, register the CLI command that can be used to run the astobj2
test and print out statistics.
Mark Michelson [Thu, 13 Sep 2007 16:25:59 +0000 (16:25 +0000)]
Added logic to handle the unlikely case that someone has two queues with the same name.
Asterisk will log a warning message letting the user know that one was already defined with that
name and is it skipping all further instances. This also will work for realtime queues but in order
for that to happen, the user would have to trigger a perfectly timed reload as a realtime queue is being
looked up, which is highly unlikely (but taken care of nonetheless).
Working on issue #10531 exposed a rather nasty 64-bit issue on ast_mktime, so we
updated the localtime.c file from source. Next we'll have to write ast_strptime
to match.
Mark Michelson [Wed, 12 Sep 2007 14:24:53 +0000 (14:24 +0000)]
We should only initialize a realtime queue when it is allocated, not every time we access it. This prevents the members ao2_container
from being reallocated every time the queue is accessed.
I also removed a debug message I had accidentally left in on a previous commit.
Russell Bryant [Tue, 11 Sep 2007 20:49:34 +0000 (20:49 +0000)]
Fix another missing unref of member objects. This one was pointed out by Marta.
When building the outgoing list in try_calling(), a member reference is stored
in each outgoing entry. However, when this list got destroyed, the reference
was not released.
Steve Murphy [Tue, 11 Sep 2007 20:36:15 +0000 (20:36 +0000)]
this change should fix issue # 10659 -- what I worry about is how many other bug reports it may generate. Hopefully, we can please the/a majority. Hopefully. We shall see. Calls not marked ANSWERED and with only one channel name will not be posted. This should eliminate the double CDR's.
Mark Michelson [Tue, 11 Sep 2007 16:05:56 +0000 (16:05 +0000)]
All instances of ao2_iterators which were just named 'i' have been renamed
to 'mem_iter' so that when refcounted queues are merged into trunk, there will be
little confusion regarding iterator names, especially when a queue and member iterator
are used in the same function.
Russell Bryant [Tue, 11 Sep 2007 16:03:42 +0000 (16:03 +0000)]
The sample dundi.conf claims support for a wildcard peer entry - [*], but the
code did not support it. This patch makes it work.
(closes issue #10546, patch by dds, with some changes by me)
Russell Bryant [Sat, 8 Sep 2007 13:42:26 +0000 (13:42 +0000)]
(closes issue #10672)
Bump the cleancount so that a "make clean" will be forced. This is needed
because my fix in revision 81599 made a change to a data structure in file.h,
and since file dependency tracking is only on with dev-mode enabled, file
format modules that don't get rebuilt may crash, as is the case with this issue.
This makes me wonder - how much faster does the code build without the file
dependency tracking enabled? If it doesn't make much of a difference, then it
may be worth just keeping it on all of the time, or perhaps just not in release
tarballs, so that this type of issue is avoided.
Russell Bryant [Thu, 6 Sep 2007 22:28:57 +0000 (22:28 +0000)]
(closes issue #9724, closes issue #10374)
Reported by: kenw
Patches:
9724.txt uploaded by russell (license 2)
Tested by: kenw, russell
Resolve a deadlock that occurs when doing a SIP transfer to parking.
I come across this type of deadlock fairly often it seems. It is very important
to mind the boundary between the channel driver and the core in respect to the
channel lock and the channel-pvt lock. Channel drivers lock to lock the
pvt and then the channel once it calls into the core, while the core will do
it in the opposite order. The way this is avoided is by having channel drivers
either release their pvt lock while calling into the core, or such as in this
case, unlocking the pvt just long enough to acquire the channel lock.
(closes issue #10122)
Reported by: stevefeinstein
Patches:
meetme-unmute-manager.diff uploaded by qwell (license 4)
Tested by: stevefeinstein
After looking over the code I agree with Qwell. Setting the file descriptor to conference each time just causes a fight back and forth.
Russell Bryant [Wed, 5 Sep 2007 20:53:41 +0000 (20:53 +0000)]
Fix an issue that can occur when you do an attended transfer to parking. If
you complete the transfer before the announcement of the parking spot finishes,
then the channel being parked will hear the remainder of the announcement.
These changes make it so that will not happen anymore.
Basically, res_features sets a flag on the channel is playing the announcement
to so that the file streaming core knows that it needs to watch out for a
channel masquerade, and if it occurs, to abort the announcement.
Russell Bryant [Tue, 4 Sep 2007 18:37:44 +0000 (18:37 +0000)]
Remove the typedefs on ao2_container and ao2_iterator. This is simply because
we don't typedef objects anywhere else in Asterisk, so we might as well make
this follow the same convention.