aboutsummaryrefslogtreecommitdiffstats
path: root/channels
AgeCommit message (Collapse)AuthorFilesLines
2008-04-30Merge changes from team/russell/iax2_find_callno and iax2_find_callno_1.4russell1-123/+248
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
2008-04-30Don't crash on bad SIP replys.oej1-4/+6
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
2008-04-30use the ARRAY_LEN macro for indexing through the iaxs/iaxsl arrays so that ↵kpfleming2-18/+32
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
2008-04-28When modules are embedded, they take on a different name, without the ".so"tilghman1-2/+7
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
2008-04-25Use consistent logic for checking to see if a call number has been chosen yet.russell1-5/+5
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
2008-04-24Re-invite RTP during a masquerade so that, for instance, an AMImmichelson1-0/+7
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
2008-04-24Resolve a deadlock in chan_local by releasing the channel lockmmichelson1-0/+6
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
2008-04-24Ensure that when we set the accountcode, it actually shows up in the CDR.tilghman1-0/+1
(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
2008-04-24Fix a silly mistake in a change I made yesterday that caused chan_iax2 to blowrussell1-2/+2
up very quickly. (issue #12515) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114608 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-24Only have one max-forwards header in outbound REFERs.oej1-1/+0
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
2008-04-23Fix find_callno_locked() to actually return the callno locked in some more ↵russell1-2/+4
cases. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114587 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-23Add 502 support for both directions, not only one... (see r114571)oej1-0/+1
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114584 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-22Treat a 502 just like a 503, when it comes to processing a response codetilghman1-0/+1
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114571 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-22When we receive a full frame that is supposed to contain our call number,russell1-22/+38
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
2008-04-22If the dial string passed to the call channel callback does not indicate anrussell1-2/+6
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
2008-04-22Merge changes from team/russell/issue_9520russell1-36/+109
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
2008-04-21Only drop audio if we receive it without a progress indication. We allow ↵file1-1/+1
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
2008-04-18Clearing up error messages so they make a bit more sense. Also removing a ↵mmichelson1-4/+1
redundant error message. Issue AST-15 git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114257 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-18Ensure that we don't ast_strdupa(NULL)russell1-1/+1
(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
2008-04-18Only complete the SIP channel name once for 'sip show channel <channel>'seanbright1-0/+4
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114245 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-16use the ZT_SET_DIALPARAMS ioctl properly by initializing the structure to ↵kpfleming1-0/+2
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
2008-04-16Backport revisions for latest vpb drivers to 1.4tilghman1-1316/+1157
(Closes issue #12457) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114180 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-16Fix "fallthrough" behavior here, so config options in a previously ↵qwell1-5/+4
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
2008-04-15Handle subscribe queues in all situations... Thanks to festr_ on irc for ↵oej1-1/+6
telling me about this bug. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114148 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-14The call_token on the pvt can occasionally be NULL, causing a crash.qwell1-1/+1
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
2008-04-14It is possible for the remote side to say they want T38 but not give any ↵file1-1/+1
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
2008-04-11Several places in the code called find_callno() (which releases the lock on ↵twilson1-12/+29
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
2008-04-10Be sure that we're not about to set bridgepvt NULL prior to dereferencing it.mmichelson1-1/+1
(closes issue #11775) Reported by: fujin git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@114045 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-10Don't add custom URI options if they don't exist OR they are empty.file1-1/+1
(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
2008-04-09We need to set the persistant_route [sic] parameter for the sip_pvtmmichelson1-2/+3
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
2008-04-09If we receive an AUTHREQ from the remote server and we are unable to reply ↵file1-0/+4
(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
2008-04-09If Asterisk receives a 488 on an INVITE (not a reinvite), thenmmichelson1-1/+4
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
2008-04-09Initialize fr->cacheable to make valgrind happytwilson1-0/+1
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113596 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-08Add a little more that is required for previously added devices.qwell1-0/+21
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@113504 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-08Add support for several new(ish) devices - most notably, 7942/7945, ↵qwell1-0/+23
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
2008-04-08Move check for still-bridged channels out a little further, to avoid possibletilghman1-10/+26
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
2008-04-07(closes issue #12362) [redo of 113012]jpeeler1-2/+2
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
2008-04-07Allow playback with noanswer (and add earlyrtp option).qwell1-14/+37
(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
2008-04-07(closes issue #12362)jpeeler1-1/+1
(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
2008-04-04Free newly allocated channel before returningphsultan1-1/+2
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@112820 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-04Prevent call connections when codecs don't match.phsultan1-44/+123
(closes issue #10604) Reported by: keepitcool Patches: branch-1.4-10604-2.diff uploaded by phsultan (license 73) Tested by: phsultan git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@112766 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-03Fix the testing of the "res" variable so that it is more logically correct and mmichelson1-14/+16
makes the correct warning and debug messages print. (closes issue #12361) Reported by: one47 Patches: chan_zap_deferred_digit.patch uploaded by one47 (license 23) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@112599 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-01Do not pass audio until the remote side has indicated they are providing ↵file1-0/+5
early media, or if the channel has been answered. (closes issue #11823) Reported by: SDamm git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@112204 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-28Remove unimplemented softkeys. Prompted by issue #12325.qwell1-3/+3
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@111720 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-26If we are requested to authenticate a reinvite make sure that it contains ↵file1-1/+1
T38 SDP if need be. (closes issue #11995) Reported by: fall git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@111020 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-26Make sure that full video frames are sent whenever the 15 bit timestamp ↵file1-3/+27
rolls over. (closes issue #11923) Reported by: mihai Patches: asterisk-fullvideo.patch uploaded by mihai (license 94) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@111014 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-25This one line change makes an if inside a for loop (in realtime_peer) check ↵jpeeler1-1/+1
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@110727 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-25When reverting a commit, I accidentally left in this bit which was an experimentmmichelson1-1/+3
to see what would happen. It passed the compile test, and I didn't notice I had left this change in too. So this is a revert of a revert...sort of. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@110635 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-24This is a revert for revision 108288. The reason is that that revisionmmichelson1-6/+3
was not for an actual bug fix per se, and so it really should not have been in 1.4 in the first place. Plus, people who compile with DO_CRASH are more likely to encounter a crash due to this change. While I think the usage of DO_CRASH in ast_sched_del is a bit absurd, this sort of change is beyond the scope of 1.4 and should be done instead in a developer branch based on trunk so that all scheduler functions are fixed at once. I also am reverting the change to trunk and 1.6 since they also suffer from the DO_CRASH potential. (closes issue #12272) Reported by: qq12345 git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@110618 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-24Turn a NOTICE into a DEBUG message.russell1-4/+4
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@110614 f38db490-d61c-443f-a65b-d21fe96a405b