Age | Commit message (Collapse) | Author | Files | Lines |
|
(closes issue #14006)
Reported by: alphaque
Patches:
astobj2.h-patch uploaded by alphaque (license 259)
(Slightly modified by seanbright)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@161421 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@136945 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
version
of my IAX2 improvements.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@115511 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.2@115296 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@109488 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
was reporting "No such file or directory"...
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@76934 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@76409 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
when several targets are specified for a dial, if any one them reports FAIL, the whole call gets FAIL, even though others were ringing OK. I rearranged the priorities, so that a new disposition, NULL, is at the lowest level, and the disposition get init'd to NULL. Then, next up is FAIL, and next up is BUSY, then NOANSWER, then ANSWERED. All the related set routines will only do so if the disposition value to be set to is greater than what's already there. This gives the intended effect. So, if all the targets are busy, you'd get BUSY for the call disposition. If all get BUSY, but one, and that one rings is not answered, you get NOANSWER. If by some freak of nature, the NULL value doesn't get overridden, then the disp2str routine will report NOANSWER as before.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@65172 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
documentation, until now?
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@64819 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
counting. (issue #9657 reported by ramonpeek)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@63285 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
list of the channels. That was bad, mmmk? (issue #7497 reported by sabbathbh)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@61804 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
should never happen anyway). It might could happen, though, if another thread messed with the priority, so safeguard against that (reported via -dev list).
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@60849 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
#9254 reported by darrell budic)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@58832 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
handling to use the linked list macros and most importantly, implements
reference counting on the ast_conference objects. The reference counting was
first backported from 1.4. However, that code has some problems that caused
the reference count to never hit zero. Those problems are fixed in this patch
and will be resolved in 1.4 and trunk next, with a different patch.
(issues #7647, #9073, #9106, BE-115).
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@55750 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@53134 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
exits early because of invalid arguments instead of just leaving it empty.
(issue #8975)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@53133 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
forwarded messages (BE-96, fix by me after corydon used his clue-bat on me)
ensure that duration in the message metadata is updated if prepending is done during forwarding (related to BE-96)
remove prototype for API call that does not exist
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@47677 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@47274 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
Linux (thanks to Brian Candler on the asterisk-dev list for the tip)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@44955 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@43924 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@43705 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
issues people have been seeing by distinctly separating what each component (core/spy) is responsible for. Core is responsible for adding a spy to a channel, feeding frames to the spy, removing the spy from a channel, and telling the spy to stop. Spy is responsible for reading frames in, and cleaning up after itself.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@42054 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
committed, and thereby also fix issue #7438
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@41716 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
reported by arkadia)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@41390 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
- in pbx_builtin_serialize_variables(), the variable list traversal would stop
on a variables with empty name/values, which is not appropriate
- When removing the GROUP variables, use AST_LIST_REMOVE_CURRENT instead of
AST_LIST_REMOVE
- During masquerading, when copying the variables list from one channel to the
other, using AST_LIST_INSERT_TAIL is not valid for appending a whole list.
It leaves the tail pointer of the list invalid. Introduce a new macro,
AST_LIST_APPEND_LIST that appends a list properly.
(issue #7802, softins)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@40994 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@34087 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
spy structure so that the core can modify it.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@33724 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@31738 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
stuck waiting for the call to hang up
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@31520 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@29732 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
bug(s). (jcollie and supczinskib) #7064
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@25014 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@24019 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
a lot it can cause a seg fault.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@19303 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
API approved by Russell)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@16192 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
'previous entry' pointer so when entries _are_ removed the list does not get damaged
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@15896 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@14610 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
successfully (Reported by tracinet)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@14234 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@11503 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@11165 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
variables and device state watchers)
remove unusued variable to silence compiler warning
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@10863 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@9581 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7827 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
put in correct (simpler) fix
add doxygen docs for channel spy 'state' values
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7740 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
changed).
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7508 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7433 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7429 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7226 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
f38db490-d61c-443f-a65b-d21fe96a405b
|
|
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7219 f38db490-d61c-443f-a65b-d21fe96a405b
|
|
waiting onthe condition
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@7213 f38db490-d61c-443f-a65b-d21fe96a405b
|