aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_externalivr.c
AgeCommit message (Collapse)AuthorFilesLines
2009-12-03Merged revisions 232587 via svnmerge from diruggles1-46/+45
https://origsvn.digium.com/svn/asterisk/trunk ........ r232587 | diruggles | 2009-12-02 17:17:22 -0500 (Wed, 02 Dec 2009) | 12 lines Prevent double closing of FDs by EIVR This caused a problem when asterisk was under heavy load and running both AGI and EIVR applications. EIVR would close an FD at which point it would be considered freed and be used by a new AGI instance the second close would then close the FD now in use by AGI. (closes issue #16305) Reported by: diLLec Tested by: thedavidfactor, diLLec Review: https://reviewboard.asterisk.org/r/436/ ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@232813 f38db490-d61c-443f-a65b-d21fe96a405b
2009-11-05Merged revisions 228015 via svnmerge from tilghman1-0/+5
https://origsvn.digium.com/svn/asterisk/trunk ........ r228015 | tilghman | 2009-11-05 11:08:02 -0600 (Thu, 05 Nov 2009) | 4 lines Don't crash if no arguments are passed. (closes issue #16119) Reported by: thedavidfactor ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@228017 f38db490-d61c-443f-a65b-d21fe96a405b
2009-10-22Merged revisions 225445 via svnmerge from dvossel1-3/+1
https://origsvn.digium.com/svn/asterisk/trunk ........ r225445 | dvossel | 2009-10-22 14:55:51 -0500 (Thu, 22 Oct 2009) | 50 lines SIP TCP/TLS: move client connection setup/write into tcp helper thread, various related locking/memory fixes. What this patch fixes 1.Moves sip TCP/TLS connection setup into the TCP helper thread: Connection setup takes awhile and before this it was being done while holding the monitor lock. 2.Moves TCP/TLS writing to the TCP helper thread: Through the use of a packet queue and an alert pipe, the TCP helper thread can now be woken up to write data as well as read data. 3.Locking error: sip_xmit returned an XMIT_ERROR without giving up the tcptls_session lock. This lock has been completely removed from sip_xmit and placed in the new sip_tcptls_write() function. 4.Memory leak: When creating a tcptls_client the tls_cfg was alloced but never freed unless the tcptls_session failed to start. Now the session_args for a sip client are an ao2 object which frees the tls_cfg on destruction. 5.Pointer to stack variable: During sip_prepare_socket the creation of a client's ast_tcptls_session_args was done on the stack and stored as a pointer in the newly created tcptls_session. Depending on the events that followed, there was a slight possibility that pointer could have been accessed after the stack returned. Given the new changes, it is always accessed after the stack returns which is why I found it. Notable code changes 1.I broke tcptls.c's ast_tcptls_client_start() function into two functions. One for creating and allocating the new tcptls_session, and a separate one for starting and handling the new connection. This allowed me to create the tcptls_session, launch the helper thread, and then establish the connection within the helper thread. 2.Writes to a tcptls_session are now done within the helper thread. This is done by using an alert pipe to wake up the thread if new data needs to be sent. The thread's sip_threadinfo object contains the alert pipe as well as the packet queue. 3.Since the threadinfo object contains the alert pipe, it must now be accessed outside of the helper thread for every write (queuing of a packet). For easy lookup, I moved the threadinfo objects from a linked list to an ao2_container. (closes issue #13136) Reported by: pabelanger Tested by: dvossel, whys (closes issue #15894) Reported by: dvossel Tested by: dvossel Review: https://reviewboard.asterisk.org/r/380/ ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@225489 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-18Merged revisions 195316 via svnmerge from mmichelson1-17/+8
https://origsvn.digium.com/svn/asterisk/trunk ........ r195316 | mmichelson | 2009-05-18 13:58:26 -0500 (Mon, 18 May 2009) | 18 lines Fix externalivr's setvariable command so that it properly sets multiple variables. The command had a for loop that was guaranteed to only execute once since the continuation operation of the loop would set the input buffer NULL. I rewrote the loop so that its operation was more obvious, and it would set multiple variables correctly. I also reduced stack space required for the function, constified the input string, and modified the function so that it would not modify the input string while I was at it. (closes issue #15114) Reported by: chris-mac Patches: 15114.patch uploaded by mmichelson (license 60) Tested by: chris-mac ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@195319 f38db490-d61c-443f-a65b-d21fe96a405b
2009-02-09Fixes issue with hangups not being sent and external process never terminating. dvossel1-1/+1
The ignore_hangup, run_dead, and noanswer flags were never initilized to zero causing hangups to never be issued. If the external script expects to be notified of a hangup and never receives one, it runs indefinitely. (closes issue #14251) Reported by: chris-mac Tested by: dvossel git-svn-id: http://svn.digium.com/svn/asterisk/trunk@174325 f38db490-d61c-443f-a65b-d21fe96a405b
2008-12-13Merge ast_str_opaque branch (discontinue usage of ast_str internals)tilghman1-4/+5
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@163991 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-19cleaup of the TCP/TLS socket API:kpfleming1-4/+5
1) rename 'struct server_args' to 'struct ast_tcptls_session_args', to follow coding guidelines 2) make ast_make_file_from_fd() static and rename it to something that indicates what it really is for (again coding guidelines) 3) rename address variables inside 'struct ast_tcptls_session_args' to be more descriptive (dare i say it... coding guidelines) 4) change ast_tcptls_client_start() to use the new 'remote_address' field of the session args for the destination of the connection, and use the 'local_address' field to bind() the socket to the proper source address, if one is supplied 5) in chan_sip, ensure that we pass in the PP address we are bound to when creating outbound (client) connections, so that our connections will appear from the correct address git-svn-id: http://svn.digium.com/svn/asterisk/trunk@151101 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-19Missing commatilghman1-1/+1
(closes issue #12891) Reported by: chris-mac git-svn-id: http://svn.digium.com/svn/asterisk/trunk@123865 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-17Updates all usages of ast_tcptls_session_instance to be managed by reference ↵bbryant1-2/+1
counts so that they only get destroyed when all threads are done using them, and memory does not get free'd causing strange issues with SIP. This code was originally written by russellb in the team/group/issue_11972/ branch. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@123546 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-16Changes response to the ExternalIVR() P command from pipe delimited to comma ↵ctooley1-1/+1
delimited. closes issue #12804 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@123115 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-22- revert change to ast_queue_hangup and create ast_queue_hangup_with_causemvanbaak1-2/+2
- 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-05-22Enhance ExternalIVR with new options and commands.tilghman1-80/+176
(closes issue #12705) Reported by: ctooley Patches: new_externalivr_argument_format-v2.diff uploaded by ctooley (license 136) new_externalivr_documentation.diff uploaded by ctooley (license 136) and a few additional fixes by me git-svn-id: http://svn.digium.com/svn/asterisk/trunk@117725 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-21On socket-based connections, there is no error FD, so don't try waiting on one.tilghman1-3/+3
(closes issue #12697) Reported by: ctooley Patches: fix_externalivr_waitfor_nandfds-v3.diff uploaded by ctooley (license 136) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@117431 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-14Merged revisions 116296 via svnmerge from tilghman1-1/+8
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r116296 | tilghman | 2008-05-14 11:46:48 -0500 (Wed, 14 May 2008) | 2 lines Detect another way for a connection to have gone away. (closes issue #12618) Reported by: ctooley Patches: 1.4-externalivr-test_fd.diff uploaded by ctooley (license 136) trunk-externalivr-test_fd.diff uploaded by ctooley (license 136) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@116298 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-30Lock around variables retrieved, and copy the values, if they stay persistent,tilghman1-2/+5
since another thread could remove them. (closes issue #12541) Reported by: snuffy Patches: bug_12156_apps.diff uploaded by snuffy (license 35) Several additional changes by me git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114904 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-25Whitespace changes onlytilghman1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114667 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-24Pass the hangup cause all the way to the calling app/channel.mvanbaak1-0/+3
(closes issue #11328) Reported by: rain Patches: 20071207__pass_cause_in_hangup_control_frame.diff.txt uploaded by Corydon76 (license 14) brought up-to-date to trunk by me git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114637 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-16Standardized routines for forking processes (keeps all the specialized code ↵tilghman1-12/+2
in one place). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114188 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-13documenting changes as a result of adding TCP functionality to ExternalIVRjpeeler1-7/+7
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@108639 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-13set variable to NULL to prevent uninitialized warningjpeeler1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@108523 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-13(closes issue #11827)jpeeler1-86/+142
Reported by: ctooley Patches: eivr_tcp_generic.patch uploaded by jpeeler (license 325) This change adds the ability to communicate over a TCP socket instead of forking a child process. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@108404 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-14a few syntax changes and safer codejpeeler1-20/+14
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103682 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-14Formatting fixesoej1-7/+8
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103668 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-13(closes issue #11825)jpeeler1-230/+319
Reported by: ctooley Patches: additional_eivr_commands.patch uploaded by ctooley (license 136) Tested by: ctooley git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103662 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-09whitespace fixes only.mvanbaak1-11/+11
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103249 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-23Merged revisions 99975 via svnmerge from mmichelson1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r99975 | mmichelson | 2008-01-23 14:25:00 -0600 (Wed, 23 Jan 2008) | 3 lines Fixing a typo. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99976 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-21remove another set of redundant #include "asterisk/options.h"rizzo1-1/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89512 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-19more errno.h removalrizzo1-1/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89432 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-19include "logger.h" and errno.h from asterisk.h - usage shows that theyrizzo1-1/+0
were included almost everywhere. Remove some of the instances. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89424 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-16Start untangling header inclusion in a way that does not affectrizzo1-4/+0
build times - tested, there is no measureable difference before and after this commit. In this change: use asterisk/compat.h to include a small set of system headers: inttypes.h, unistd.h, stddef.h, stddint.h, sys/types.h, stdarg.h, stdlib.h, alloca.h, stdio.h Where available, the inclusion is conditional on HAVE_FOO_H as determined by autoconf. Normally, source files should not include any of the above system headers, and instead use either "asterisk.h" or "asterisk/compat.h" which does it better. For the time being I have left alone second-level directories (main/db1-ast, etc.). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89333 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-06(closes issue #10381)file1-3/+2
Reported by: yehavi Use the filename we parsed using the standard parsing when launching the application specified to ExternalIVR. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@78168 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-23Merge the dialplan_aesthetics branch. Most of this patch simply converts ↵tilghman1-6/+6
applications using old methods of parsing arguments to using the standard macros. However, the big change is that the really old way of specifying application and arguments separated by a comma will no longer work (e.g. NoOp,foo|bar). Instead, the way that has been recommended since long before 1.0 will become the only method available (e.g. NoOp(foo,bar). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@76703 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-16Applications no longer need to call ast_module_user_add and ↵file1-6/+0
ast_module_user_remove. This is now taken care of in the pbx_exec function outside of the application. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@75200 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-16It is no longer required for each module that deals with a channel to call ↵file1-7/+1
ast_module_user_hangup_all in it's unload function. The loader will automatically perform this action for it. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@75183 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-06Issue 9869 - replace malloc and memset with ast_calloc, and other coding ↵tilghman1-5/+5
guidelines changes git-svn-id: http://svn.digium.com/svn/asterisk/trunk@67864 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-23Make 'H' command do as advertised and add 'E' and 'V' commands to ↵file1-0/+15
ExternalIVR. (issue #8165 reported by mnicholson) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@51592 f38db490-d61c-443f-a65b-d21fe96a405b
2006-12-11Merged revisions 48396 via svnmerge from mogorman1-1/+1
https://svn.digium.com/svn/asterisk/branches/1.4 ................ r48396 | mogorman | 2006-12-11 16:11:35 -0600 (Mon, 11 Dec 2006) | 12 lines Merged revisions 48394 via svnmerge from https://svn.digium.com/svn/asterisk/branches/1.2 ........ r48394 | mogorman | 2006-12-11 15:55:43 -0600 (Mon, 11 Dec 2006) | 4 lines app_externalivr needs a real silence file, and additional changes to add silence files into core instead of extra patch provided by bug 8177 with minor additions. ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48397 f38db490-d61c-443f-a65b-d21fe96a405b
2006-12-11Merged revisions 48375 via svnmerge from tilghman1-1/+11
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r48375 | tilghman | 2006-12-10 18:47:21 -0600 (Sun, 10 Dec 2006) | 13 lines Merged revisions 48374 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r48374 | tilghman | 2006-12-10 18:33:59 -0600 (Sun, 10 Dec 2006) | 5 lines When doing a fork() and exec(), two problems existed (Issue 8086): 1) Ignored signals stayed ignored after the exec(). 2) Signals could possibly fire between the fork() and exec(), causing Asterisk signal handlers within the child to execute, which caused nasty race conditions. ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48376 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-27Merged revisions 46363 via svnmerge from russell1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r46363 | russell | 2006-10-27 12:39:31 -0500 (Fri, 27 Oct 2006) | 5 lines We should always be using _exit() after a fork() or vfork() instead of exit(). This is because exit() does some extra cleanup which in some implementations of vfork(), for example, can actually modify the state of the parent process, causing very weird bugs or crashes. (issue #7971, Nick Gavrikov) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@46364 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-19Merged revisions 45692 via svnmerge from file1-2/+2
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r45692 | file | 2006-10-19 13:19:47 -0400 (Thu, 19 Oct 2006) | 10 lines Merged revisions 45691 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r45691 | file | 2006-10-19 13:16:37 -0400 (Thu, 19 Oct 2006) | 2 lines Respect language selection when seeing if the file exists (issue #8178 reported by mnicholson) ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@45693 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-03bug #8076 check option_debug before printing to debug channel.mogorman1-2/+4
patch provided in bugnote, with minor changes. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@44253 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-21merge new_loader_completion branch, including (at least):kpfleming1-19/+8
- restructured build tree and makefiles to eliminate recursion problems - support for embedded modules - support for static builds - simpler cross-compilation support - simpler module/loader interface (no exported symbols) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40722 f38db490-d61c-443f-a65b-d21fe96a405b
2006-06-07simplify autoconfig include mechanism (make tholo happy he can use lint ↵kpfleming1-5/+4
again :-) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32846 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-11 - The recent change to linklists.h broke the build on linux for some reason.russell1-5/+5
So, I have removed all of the uses of AST_LIST_HEAD_INIT and replaced them with the equivalent static initializations. - On passing, fix a memory leak in the unload_module() function of chan_agent. The agents list mutex was never destroyed, and the elements in the agents list were not freed. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@26990 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-10remove almost all of the checks of the result from ast_strdupa() or alloca().russell1-4/+1
As it turns out, all of these checks were useless, because alloca will never return NULL. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@26451 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-01Merged revisions 24019 via svnmerge from tilghman1-0/+4
https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r24019 | tilghman | 2006-05-01 15:44:24 -0500 (Mon, 01 May 2006) | 2 lines Bug 6864 - drop realtime priority on ALL external processes ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@24053 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-14This rather large commit changes the way modules are loaded. rizzo1-15/+7
As partly documented in loader.c and include/asterisk/module.h, modules are now expected to return all of their methods and flags into a structure 'mod_data', and are normally loaded with RTLD_NOW | RTLD_LOCAL, so symbols are resolved immediately and conflicts should be less likely. Only in a small number of cases (res_*, typically) modules are loaded RTLD_GLOBAL, so they can export symbols. The core of the change is only the two files loader.c and include/asterisk/module.h, all the rest is simply adaptation of the existing modules to the new API, a rather mechanical (but believe me, time and finger-consuming!) process whose detail you can figure out by svn diff'ing any single module. Expect some minor compilation issue after this change, please report it on mantis http://bugs.digium.com/view.php?id=6968 so we collect all the feedback in one place. I am just sorry that this change missed SVN version number 20000! git-svn-id: http://svn.digium.com/svn/asterisk/trunk@20003 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-08since the module API is changing, it's a good time to const-ify the ↵kpfleming1-2/+2
description() and key() return values git-svn-id: http://svn.digium.com/svn/asterisk/trunk@18552 f38db490-d61c-443f-a65b-d21fe96a405b
2006-03-12README files have changed names, better change references too :-)oej1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@12572 f38db490-d61c-443f-a65b-d21fe96a405b
2006-02-16Bug 6516 - u->chan not definedtilghman1-0/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@10339 f38db490-d61c-443f-a65b-d21fe96a405b