aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_console.c
AgeCommit message (Collapse)AuthorFilesLines
2010-12-03Merged revisions 297534 via svnmerge from seanbright1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r297534 | seanbright | 2010-12-03 12:40:52 -0500 (Fri, 03 Dec 2010) | 3 lines The CLI command should not contain <placeholder>s, these are for descriptions. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@297535 f38db490-d61c-443f-a65b-d21fe96a405b
2010-07-20Add load priority order, such that preload becomes unnecessary in most casestilghman1-1/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@278132 f38db490-d61c-443f-a65b-d21fe96a405b
2010-07-14ast_callerid restructuringrmudgett1-1/+3
The purpose of this patch is to eliminate struct ast_callerid since it has turned into a miscellaneous collection of various party information. Eliminate struct ast_callerid and replace it with the following struct organization: struct ast_party_name { char *str; int char_set; int presentation; unsigned char valid; }; struct ast_party_number { char *str; int plan; int presentation; unsigned char valid; }; struct ast_party_subaddress { char *str; int type; unsigned char odd_even_indicator; unsigned char valid; }; struct ast_party_id { struct ast_party_name name; struct ast_party_number number; struct ast_party_subaddress subaddress; char *tag; }; struct ast_party_dialed { struct { char *str; int plan; } number; struct ast_party_subaddress subaddress; int transit_network_select; }; struct ast_party_caller { struct ast_party_id id; char *ani; int ani2; }; The new organization adds some new information as well. * The party name and number now have their own presentation value that can be manipulated independently. ISDN supplies the presentation value for the name and number at different times with the possibility that they could be different. * The party name and number now have a valid flag. Before this change the name or number string could be empty if the presentation were restricted. Most channel drivers assume that the name or number is then simply not available instead of indicating that the name or number was restricted. * The party name now has a character set value. SIP and Q.SIG have the ability to indicate what character set a name string is using so it could be presented properly. * The dialed party now has a numbering plan value that could be useful to have available. The various channel drivers will need to be updated to support the new core features as needed. They have simply been converted to supply current functionality at this time. The following items of note were either corrected or enhanced: * The CONNECTEDLINE() and REDIRECTING() dialplan functions were consolidated into func_callerid.c to share party id handling code. * CALLERPRES() is now deprecated because the name and number have their own presentation values. * Fixed app_alarmreceiver.c write_metadata(). The workstring[] could contain garbage. It also can only contain the caller id number so using ast_callerid_parse() on it is silly. There was also a typo in the CALLERNAME if test. * Fixed app_rpt.c using ast_callerid_parse() on the channel's caller id number string. ast_callerid_parse() alters the given buffer which in this case is the channel's caller id number string. Then using ast_shrink_phone_number() could alter it even more. * Fixed caller ID name and number memory leak in chan_usbradio.c. * Fixed uninitialized char arrays cid_num[] and cid_name[] in sig_analog.c. * Protected access to a caller channel with lock in chan_sip.c. * Clarified intent of code in app_meetme.c sla_ring_station() and dial_trunk(). Also made save all caller ID data instead of just the name and number strings. * Simplified cdr.c set_one_cid(). It hand coded the ast_callerid_merge() function. * Corrected some weirdness with app_privacy.c's use of caller presentation. Review: https://reviewboard.asterisk.org/r/702/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@276347 f38db490-d61c-443f-a65b-d21fe96a405b
2010-05-13Fix an off by one error that causes a crash.russell1-1/+1
Thanks to Raymond Burke for pointing it out. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@262897 f38db490-d61c-443f-a65b-d21fe96a405b
2010-05-10fixes crash in chan_consoledvossel1-1/+8
There is a race condition between console_hangup() and start_stream(). It is possible for console_hangup() to be called and then the stream thread to begin after the hangup. To avoid this a check in start_stream() to make sure the pvt-owner still exists while the pvt lock is held is made. If the owner is gone that means the channel hung up and start_stream should be aborted. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@262236 f38db490-d61c-443f-a65b-d21fe96a405b
2010-03-02fixes adaptive jitterbuffer configurationdvossel1-1/+2
When configuring the adaptive jitterbuffer, the target_extra value not only could not be set from the configuration, but was not even being set to its proper default. This value is required in order for the adaptive jitterbuffer to work correctly. To resolve this a config option has been added to expose this value to the conf files, and a default value is provided when no config specific value is present. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@249893 f38db490-d61c-443f-a65b-d21fe96a405b
2009-11-09Fix various problems detected with Valgrind.tilghman1-0/+1
* chan_console accessed pvts after deallocation. * cdr_mysql stored a pointer that was freed by realloc() * The module loader did not check usecount on shutdown, which led to chan_iax2 reading a timer that was already unloaded. * The event subsystem sometimes creates an event with no IEs. Due to a corner condition, the code would read beyond the memory boundary. * res_pktccops did not correctly check whether its monitor thread was started. (closes issue #16062) Reported by: alexanderheinz Patches: 20091109__issue16062.diff.txt uploaded by tilghman (license 14) Tested by: tilghman git-svn-id: http://svn.digium.com/svn/asterisk/trunk@228798 f38db490-d61c-443f-a65b-d21fe96a405b
2009-11-04Expand codec bitfield from 32 bits to 64 bits.tilghman1-17/+14
Reviewboard: https://reviewboard.asterisk.org/r/416/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@227580 f38db490-d61c-443f-a65b-d21fe96a405b
2009-10-06Recorded merge of revisions 222152 via svnmerge from kpfleming1-1/+7
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r222152 | kpfleming | 2009-10-05 20:16:36 -0500 (Mon, 05 Oct 2009) | 20 lines Fix ao2_iterator API to hold references to containers being iterated. See Mantis issue for details of what prompted this change. Additional notes: This patch changes the ao2_iterator API in two ways: F_AO2I_DONTLOCK has become an enum instead of a macro, with a name that fits our naming policy; also, it is now necessary to call ao2_iterator_destroy() on any iterator that has been created. Currently this only releases the reference to the container being iterated, but in the future this could also release other resources used by the iterator, if the iterator implementation changes to use additional resources. (closes issue #15987) Reported by: kpfleming Review: https://reviewboard.asterisk.org/r/383/ ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@222176 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-30Fixes numerous spelling errors. Patch submitted by alecdavis.dbrooks1-1/+1
(closes issue #15595) Reported by: alecdavis git-svn-id: http://svn.digium.com/svn/asterisk/trunk@209554 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-28Define side-effect-safe MIN and MAX macros and remove duplicate definitions ↵kpfleming1-7/+0
from various files. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@209400 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-26Merge the new Channel Event Logging (CEL) subsystem.russell1-7/+7
CEL is the new system for logging channel events. This was inspired after facing many problems trying to represent what is possible to happen to a call in Asterisk using CDR records. For more information on CEL, see the built in HTML or PDF documentation generated from the files in doc/tex/. Many thanks to Steve Murphy (murf) and Brian Degenhardt (bmd) for their hard work developing this code. Also, thanks to Matt Nicholson (mnicholson) and Sean Bright (seanbright) for their assistance in the final push to get this code ready for Asterisk trunk. Review: https://reviewboard.asterisk.org/r/239/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@203638 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-28Eliminate several needless checks and fix a few memory leakstilghman1-2/+1
(closes issue #14833) Reported by: contactmayankjain Patches: all_changes.patch uploaded by contactmayankjain (license 740) slightly modified by me git-svn-id: http://svn.digium.com/svn/asterisk/trunk@197616 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-21Const-ify the world (or at least a good part of it)kpfleming1-1/+2
This patch adds 'const' tags to a number of Asterisk APIs where they are appropriate (where the API already demanded that the function argument not be modified, but the compiler was not informed of that fact). The list includes: - CLI command handlers - CLI command handler arguments - AGI command handlers - AGI command handler arguments - Dialplan application handler arguments - Speech engine API function arguments In addition, various file-scope and function-scope constant arrays got 'const' and/or 'static' qualifiers where they were missing. Review: https://reviewboard.asterisk.org/r/251/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@196072 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-25This is basically a complete rollback of r155401, as it was determined thatseanbright1-4/+4
it would be best to maintain API compatibility. Instead, this commit introduces ao2_callback_data() which is functionally identical to ao2_callback() except that it allows you to pass arbitrary data to the callback. Reviewed by Mark Michelson via ReviewBoard: http://reviewboard.digium.com/r/64 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@158959 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-15Use the new case insensitive hash function for console interfaces. The ↵russell1-1/+1
comparison function is case insensitive. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@157039 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-07Add ability to pass arbitrary data to the ao2_callback_fn (called fromseanbright1-4/+4
ao2_callback and ao2_find). Currently, passing OBJ_POINTER to either of these mandates that the passed 'arg' is a hashable object, making searching for an ao2 object based on outside criteria difficult. Reviewed by Russell and Mark M. via ReviewBoard: http://reviewboard.digium.com/r/36/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@155401 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-28Merge the cli_cleanup branch.mvanbaak1-8/+6
This work is done by lmadsen, junky and mvanbaak during AstriDevCon. This is the second audit the CLI got, and this time lmadsen made sure he had _ALL_ modules loaded that have CLI commands in them. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@145121 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-12Create a new config file status, CONFIG_STATUS_FILEINVALID for differentiatingtilghman1-0/+3
when a file is invalid from when a file is missing. This is most important when we have two configuration files. Consider the following example: Old system: sip.conf users.conf Old result New result ======== ========== ========== ========== Missing Missing SIP doesn't load SIP doesn't load Missing OK SIP doesn't load SIP doesn't load Missing Invalid SIP doesn't load SIP doesn't load OK Missing SIP loads SIP loads OK OK SIP loads SIP loads OK Invalid SIP loads incompletely SIP doesn't load Invalid Missing SIP doesn't load SIP doesn't load Invalid OK SIP doesn't load SIP doesn't load Invalid Invalid SIP doesn't load SIP doesn't load So in the case when users.conf doesn't load because there's a typo that disrupts the syntax, we may only partially load users, instead of failing with an error, which may cause some calls not to get processed. Worse yet, the old system would do this with no indication that anything was even wrong. (closes issue #10690) Reported by: dtyoo Patches: 20080716__bug10690.diff.txt uploaded by Corydon76 (license 14) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@142992 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-29Merged revisions 140488 via svnmerge from mmichelson1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r140488 | mmichelson | 2008-08-29 12:34:17 -0500 (Fri, 29 Aug 2008) | 22 lines After working on the ao2_containers branch, I noticed something a bit strange. In all cases where we provide a callback function to ao2_container_alloc, the callback function would only return 0 or CMP_MATCH. After inspecting the ao2_callback() code carefully, I found that if you're only looking for one specific item, then you should return CMP_MATCH | CMP_STOP. Otherwise, astobj2 will continue traversing the current bucket until the end searching for more matches. In cases like chan_iax2 where in 1.4, all the peers are shoved into a single bucket, this makes for potentially terrible performance since the entire bucket will be traversed even if the peer is one of the first ones come across in the bucket. All the changes I have made were for cases where the callback function defined was passed to ao2_container_alloc so that calls to ao2_find could find a unique instance of whatever object was being stored in the container. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@140489 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-09Merge more changes from the resolve-shadow-warnings branch (henceforth knownseanbright1-14/+14
as RSW since i am too lazy to keep typing it all out). This time a few of the channels. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@136888 f38db490-d61c-443f-a65b-d21fe96a405b
2008-08-04Be explicit that we don't want a result from this callback. The callback wouldrussell1-1/+1
never indicate a match, so nothing would have been returned anyway, but it was still a poor example of proper usage. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@135439 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-08This was accidentally reverted.jpeeler1-1/+1
Fixes a bug where if a stream monitor thread was not created (caused from failure of opening or starting the stream) pthread_cancel was called with an invalid thread ID. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@121163 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-22chan_console fixes because of ast_frame.data => ast_frame.data.ptrmvanbaak1-3/+3
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@117834 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-22- revert change to ast_queue_hangup and create ast_queue_hangup_with_causemvanbaak1-1/+1
- make data member of the ast_frame struct a named union instead of a void Recently the ast_queue_hangup function got a new parameter, the hangupcause Feedback came in that this is no good and that instead a new function should be created. This I did. The hangupcause was stored in the seqno member of the ast_frame struct. This is not very elegant, and since there's already a data member that one should be used. Problem is, this member was a void *. Now it's a named union so it can hold a pointer, an uint32 and there's a padding in case someone wants to store another type in there in the future. This commit is so massive, because all ast_frame.data uses have to be altered to ast_frame.data.data Thanks russellb and kpfleming for the feedback. (closes issue #12674) Reported by: mvanbaak git-svn-id: http://svn.digium.com/svn/asterisk/trunk@117802 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-30Merged revisions 114891 via svnmerge from russell1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r114891 | russell | 2008-04-30 11:30:01 -0500 (Wed, 30 Apr 2008) | 28 lines Merge changes from team/russell/iax2_find_callno and iax2_find_callno_1.4 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/trunk@114892 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-30Fixes a bug where if a stream monitor thread was not created (caused from ↵jpeeler1-1/+1
failure of opening or starting the stream) pthread_cancel was called with an invalid thread ID. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114888 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-25Speaking of building...seanbright1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114644 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-21(closes issue #6113)jpeeler1-1/+7
Reported by: oej Tested by: jpeeler This patch implements multiple parking lots for parked calls. The default parkinglot is used by default, however setting the channel variable PARKINGLOT in the dialplan will allow use of any other configured parkinglot. See configs/features.conf.sample for more details on setting up another non-default parkinglot. Also, one can (currently) set the default parkinglot to use in the driver configuration file via the parkinglot option. Patch initially written by oej, brought up to date and finalized by mvanbaak, and then stabilized and converted to astobj2 by me. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114487 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-05Merged revisions 106235 via svnmerge from file1-0/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r106235 | file | 2008-03-05 18:32:10 -0400 (Wed, 05 Mar 2008) | 4 lines Add a control frame to indicate the source of media has changed. Depending on the underlying technology it may need to change some things. (closes issue #12148) Reported by: jcomellas ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@106239 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-21Remove compiler warning for uninitialized variableoej1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99384 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-20Add a "console active" CLI command, which lets you find out which console devicerussell1-19/+82
is currently active for the Asterisk CLI, or to set it. Also, knock multiple device support off of the to-do list. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99248 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-20Merge changes from team/russell/console_devicesrussell1-99/+446
- Add support for multiple devices. All devices are configured in console.conf. - Add "console list devices" CLI command to show configured devices. Also, changed the old "list devices" to be "list available", which queries PortAudio for all audio devices that are available for use. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99227 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-17Make the output of "console list devices" a bit prettier.russell1-8/+14
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99011 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-17List which devices are inputs and outputs in "console list devices"russell1-1/+3
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99009 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-08Change reference to external library so it appears on the extref listingoej1-1/+1
http://www.asterisk.org/doxygen/trunk/extref.html git-svn-id: http://svn.digium.com/svn/asterisk/trunk@97200 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-05Add the URL to the home page for portaudio. Also add the location of therussell1-0/+5
svn repository to check out portaudio v19. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@96692 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-02Add support for generating a ringing sound on an incoming call. This is a bitrussell1-5/+8
of a hack. It just asks the core to generate the same tone that it would when you hear ringback when making an outbound call. But hey, it works, and you get the localized ring tone for the appropriate language set on the channel. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@96079 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-02Note that this module doesn't actually play a ringing sound for an incoming callrussell1-0/+1
... oops git-svn-id: http://svn.digium.com/svn/asterisk/trunk@96077 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-02Show the correct CLI command to answer the callrussell1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@96076 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-31Update chan_console to natively use a 16 kHz sample rate. If it is talkingrussell1-20/+12
to an 8 kHz endpoint, then codec_resample will automatically be used to properly resample the audio before sending it to/from chan_console. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@95527 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-31Merge the main set of changes from team/russell/chan_console.russell1-0/+1094
Add a new console channel driver, chan_console, which is a console channel driver that uses portaudio as a cross platform audio interface. It was written to provide a console channel driver that works with Mac CoreAudio, but it supports a number of other audio interfaces, as well, including OSS and ALSA. It could one day be the single console channel driver, but does not yet have as many features as chan_oss. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@95412 f38db490-d61c-443f-a65b-d21fe96a405b