Age | Commit message (Collapse) | Author | Files | Lines |
|
Content-Type: text/plain;charset=Södermanländska
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@116230 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
and fixed by mmichelson and me.
We observed a system that had a bunch of threads stuck in ast_autoservice_stop().
The reason these threads were waiting around is because this function waits to
ensure that the channel list in the autoservice thread gets rebuilt before the
stop() function returns. However, the autoservice thread was also locked, so
the autoservice channel list was never getting rebuilt.
The autoservice thread was stuck waiting for the channel lock on a local channel.
However, the local channel was locked by a thread that was stuck in the autoservice
stop function.
It turned out that the issue came down to the local_queue_frame() function in
chan_local. This function assumed that one of the channels passed in as an
argument was locked when called. However, that was not always the case. There
were multiple cases in which this channel was not locked when the function was
called. We fixed up chan_local to indicate to this function whether this channel
was locked or not. The previous assumption had caused local_queue_frame() to
improperly return with the channel locked, where it would then never get unlocked.
(closes issue #12584)
(related to issue #12603)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@116038 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(closes issue #12616)
Reported by: nicklewisdigiumuser
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115944 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115568 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r115564 | russell | 2008-05-08 14:14:04 -0500 (Thu, 08 May 2008) | 25 lines
Fix a race condition that bbryant just found while doing some IAX2 testing.
He was running Asterisk trunk running IAX2 calls through a few Asterisk boxes,
however, the audio was extremely choppy. We looked at a packet trace and saw
a storm of INVAL and VNAK frames being sent from one box to another.
It turned out that what had happened was that one box tried to send a CONTROL
frame before the 3 way handshake had completed. So, that frame did not include
the destination call number, because it didn't have it yet. Part of our recent
work for security issues included an additional check to ensure that frames that
are supposed to include the destination call number have the correct one. This
caused the frame to be rejected with an INVAL. The frame would get retransmitted
for forever, rejected every time ...
This race condition exists in all versions that got the security changes,
in theory. However, it is really only likely that this would cause a problem in
Asterisk trunk. There was a control frame being sent (SRCUPDATE) at the _very_
beginning of the call, which does not exist in 1.2 or 1.4. However, I am fixing
all versions that could potentially be affected by the introduced race condition.
These changes are what bbryant and I came up with to fix the issue. Instead of
simply dropping control frames that get sent before the handshake is complete,
the code attempts to wait a little while, since in most cases, the handshake
will complete very quickly. If it doesn't complete after yielding for a little
while, then the frame gets dropped.
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115565 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
Timeout.
(closes issue #12323)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115561 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
a qualify ping or a subscription. This fixes some realtime related crashes.
(closes issue #12588)
(closes issue #12555)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115517 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r115511 | russell | 2008-05-07 11:22:49 -0500 (Wed, 07 May 2008) | 3 lines
Remove remnants of dlinkedlists. I didn't actually use them in the final version
of my IAX2 improvements.
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115512 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
switchvox.
It fixes authentication with Primus in Canada, and has been in use for a very long
time without causing problems with any other providers.
(closes issue AST-36)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115304 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
reasons.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115257 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
These changes address a critical performance issue introduced in the latest
release. The fix for the latest security issue included a change that made
Asterisk randomly choose call numbers to make them more difficult to guess by
attackers. However, due to some inefficient (this is by far, an understatement)
code, when Asterisk chose high call numbers, chan_iax2 became unusable after
just a small number of calls. On a small embedded platform, it would not be
able to handle a single call. On my Intel Core 2 Duo @ 2.33 GHz, I couldn't
run more than about 16 IAX2 channels. Ouch.
These changes address some performance issues of the find_callno() function
that have bothered me for a very long time. On every incoming media frame,
it iterated through every possible call number trying to find a matching
active call. This involved a mutex lock and unlock for each call number
checked. So, if the random call number chosen was 20000, then every media
frame would cause 20000 locks and unlocks. Previously, this problem was
not as obvious since Asterisk always chose the lowest call number it could.
A second container for IAX2 pvt structs has been added. It is an astobj2
hash table. When we know the remote side's call number, the pvt goes into
the hash table with a hash value of the remote side's call number. Then,
lookups for incoming media frames are a very fast hash lookup instead of an
absolutely insane array traversal.
In a quick test, I was able to get more than 3600% more IAX2 channels
on my machine with these changes.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114891 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
Fix created in Huntsville together with Mark M (putnopvut)
(closes issue #12363)
Reported by: jvandal
Tested by: putnopvut, oej
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114890 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
the size of the arrays can be adjusted in one place, and change the size of the arrays from 32768 calls to 2048 calls when LOW_MEMORY is defined
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114880 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
extension. Specifically check for this name, when we're checking if a module
is loaded.
(Closes issue #12534)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114708 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
Also, remove some redundant logic I recently added in a fix.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114673 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
redirect of two channels which are natively bridged will preserve audio
on both channels. This prevents a problem with Asterisk not re-inviting
due to one of the channels having being a zombie.
(closes issue #12513)
Reported by: mneuhauser
Patches:
asterisk-1.4-114602_restore-RTP-on-fixup.patch uploaded by mneuhauser (license 425)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114632 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
temporarily.
(closes issue #11712)
Reported by: callguy
Patches:
11712.patch uploaded by putnopvut (license 60)
Tested by: acunningham
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114624 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(Fix for AMI Originate)
(Closes issue #12007)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114621 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
up very quickly.
(issue #12515)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114608 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
Discovered in the Asterisk SIP Masterclass in Orlando. Thanks Joe!
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114603 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
cases.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114587 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114584 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114571 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
ensure that it has the correct one.
(closes issue #10078)
(AST-2008-006)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114558 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
extension, then consider the extension on the channel before falling back
to the default.
(closes issue #12479)
Reported by: darren1713
Patches:
exten_dial_fix_chan_iax2.c.patch uploaded by darren1713 (license 116)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114537 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
These changes make sure that the reference count for sip_peer objects properly
reflects the fact that the peer is sitting in the scheduler for a scheduled
callback for qualifying peers or for expiring registrations. Without this, it
was possible for these callbacks to happen at the same time that the peer was
being destroyed. This was especially likely to happen with realtime peers, and
for people making use of the realtime prune CLI command.
(closes issue #9520)
Reported by: kryptolus
Committed patch by me
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114522 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
other frames through such as DTMF because they may be needed to complete the call.
(closes issue #12440)
Reported by: aragon
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114322 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
redundant error
message.
Issue AST-15
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114257 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(closes issue #12476)
Reported by: davidw
Patch by me
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114248 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114245 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
all zeroes in case it contains fields that we don't write values into (which it does as of Zaptel 1.4.10)
(closes issue #12456)
Reported by: fnordian
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114184 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(Closes issue #12457)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114180 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
configured user don't override settings in general.
(closes issue #12458)
Reported by: tzafrir
Patches:
chanzap_users_sections.diff uploaded by tzafrir (license 46)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114173 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
telling me about this bug.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114148 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
If it is NULL, we can skip this channel, since it can't the one we're looking for.
(closes issue #9299)
Reported by: vazir
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114120 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
capabilities.
(closes issue #12414)
Reported by: MVF
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114103 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
the pvt structure) and then immediately locked the call and did things with it. Unfortunately, the call can disappear between the find_callno and the lock, causing Bad Stuff(tm) to happen.
Added find_callno_locked() function to return the callno withtout unlocking for instances that it is needed.
(issue #12400)
Reported by: ztel
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114083 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(closes issue #11775)
Reported by: fujin
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114045 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(closes issue #12407)
Reported by: homesick
Patches:
uri_options-1.4.diff uploaded by homesick (license 91)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114021 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
during the initial INVITE, no matter if we're building the route set from
an INVITE request or response.
(closes issue #12391)
Reported by: benjaminbohlmann
Tested by: benjaminbohlmann
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113927 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(for example they have a secret configured, but we do not) then queue a hangup frame on the Asterisk channel. This will cause the channel to hangup and a HANGUP to be sent via IAX2 to the remote side which is the proper thing to do in this scenario.
(closes issue #12385)
Reported by: viraptor
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113784 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
we should not send a BYE.
(closes issue #12392)
Reported by: fnordian
Patches:
chan_sip.patch uploaded by fnordian (license 110) with small modification from me
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113681 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113596 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113504 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
7962/7965, 7975.
Thanks to Greg Oliver for providing me the required information.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113454 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
deadlocks. (Closes issue #12252)
Reported by: callguy
Patches:
20080319__bug12252.diff.txt uploaded by Corydon76 (license 14)
Tested by: callguy
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113348 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
This fixes a for loop (in realtime_peer) to check all the ast_variables the loop was intending to test rather than just the first one. The change exposed the problem of calling memcpy on a NULL pointer, in this case the passed in sockaddr_in struct which is now checked.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113240 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(closes issue #9077)
Reported by: pj
Patches:
earlyrtp.diff uploaded by wedhorn (license 30)
Tested by: pj, qwell, DEA, wedhorn
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113118 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
(closes issue #12372)
Reported by: vinsik
Tested by: tecnoxarxa
This one line change makes an if inside a for loop (in realtime_peer) check all the ast_variables the loop was intending to test rather than just the first one.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113012 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@112820 f38db490-d61c-443f-a65b-d21fe96a405b
|