[asterisk-commits] seanbright: branch group/bindings r168563 - in /team/group/bindings: ./ apps/...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Jan 13 13:27:08 CST 2009
Author: seanbright
Date: Tue Jan 13 13:27:08 2009
New Revision: 168563
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=168563
Log:
Merged revisions 168479,168481,168485,168497,168508,168517,168522-168523,168526,168539,168547 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r168479 | oej | 2009-01-12 09:35:09 -0500 (Mon, 12 Jan 2009) | 2 lines
Don't include swap.h unless we have swapctl
................
r168481 | russell | 2009-01-12 09:57:49 -0500 (Mon, 12 Jan 2009) | 10 lines
Merged revisions 168480 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r168480 | russell | 2009-01-12 08:57:27 -0600 (Mon, 12 Jan 2009) | 2 lines
s/ringdance/ringcadence/ for Bulgaria
........
................
r168485 | mmichelson | 2009-01-12 10:00:00 -0500 (Mon, 12 Jan 2009) | 13 lines
Merged revisions 168482 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r168482 | mmichelson | 2009-01-12 08:58:25 -0600 (Mon, 12 Jan 2009) | 5 lines
I am reverting the fix made in revision 168128 (and its upward merges)
after being contacted by Olle Johansson and being shown how this fix is
incorrect. Thanks to Olle for clearing this up for me.
........
................
r168497 | oej | 2009-01-12 11:31:27 -0500 (Mon, 12 Jan 2009) | 2 lines
Better to use the proper app name
................
r168508 | jpeeler | 2009-01-12 15:53:04 -0500 (Mon, 12 Jan 2009) | 15 lines
Merged revisions 168507 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r168507 | jpeeler | 2009-01-12 14:26:22 -0600 (Mon, 12 Jan 2009) | 9 lines
(closes issue #12269)
Reported by: IgorG
Tested by: denisgalvao
This gits rid of the notion of an owning_app allowing the request and hangup to be initiated by different threads. Originating from an active agent channel requires this. The implementation primarily changes __login_exec to wait on a condition variable rather than a lock.
Review: http://reviewboard.digium.com/r/35/
........
................
r168517 | jpeeler | 2009-01-12 16:51:46 -0500 (Mon, 12 Jan 2009) | 12 lines
Merged revisions 168516 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r168516 | jpeeler | 2009-01-12 15:42:34 -0600 (Mon, 12 Jan 2009) | 5 lines
(closes issue #13881)
Reported by: hoowa
Update the app CDR field for AGI commands that are not executing an application via "exec".
........
................
r168522 | tilghman | 2009-01-12 18:06:12 -0500 (Mon, 12 Jan 2009) | 3 lines
Some platforms (notably, the BSDs) have a more efficient implementation called
closefrom(3).
................
r168523 | mmichelson | 2009-01-12 18:12:30 -0500 (Mon, 12 Jan 2009) | 11 lines
bump the verbosity of a message in srv.c up by one. It used to be
at this level prior to a large patch merge which converted ast_verbose
calls to ast_verb
(closes issue #14221)
Reported by: jcovert
Patches:
srv.c.patch uploaded by jcovert (license 551)
................
r168526 | tilghman | 2009-01-12 18:45:51 -0500 (Mon, 12 Jan 2009) | 12 lines
Merged revisions 167095 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r167095 | tilghman | 2008-12-31 18:01:22 -0600 (Wed, 31 Dec 2008) | 5 lines
Repeat attempts to write when we receive -EAGAIN from the driver, as detailed
in the ALSA sample code (see http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html#a32)
Reported by: Jerry Geis (via the -users list)
Fixed by: me (license 14)
........
................
r168539 | dhubbard | 2009-01-13 11:02:13 -0500 (Tue, 13 Jan 2009) | 1 line
correct a CLI description
................
r168547 | tilghman | 2009-01-13 12:51:12 -0500 (Tue, 13 Jan 2009) | 13 lines
Merged revisions 168546 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r168546 | tilghman | 2009-01-13 11:48:00 -0600 (Tue, 13 Jan 2009) | 6 lines
If either conditional is NULL, don't try copying it.
(closes issue #14226)
Reported by: caspy
Patches:
20090113__bug14226.diff.txt uploaded by Corydon76 (license 14)
........
................
Modified:
team/group/bindings/ (props changed)
team/group/bindings/apps/app_minivm.c
team/group/bindings/channels/chan_agent.c
team/group/bindings/channels/chan_alsa.c
team/group/bindings/channels/chan_sip.c
team/group/bindings/configs/indications.conf.sample
team/group/bindings/configure
team/group/bindings/configure.ac
team/group/bindings/funcs/func_logic.c
team/group/bindings/include/asterisk/autoconfig.h.in
team/group/bindings/main/app.c
team/group/bindings/main/asterisk.c
team/group/bindings/main/srv.c
team/group/bindings/main/taskprocessor.c
team/group/bindings/res/res_agi.c
Propchange: team/group/bindings/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/group/bindings/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Jan 13 13:27:08 2009
@@ -1,1 +1,1 @@
-/trunk:1-168377
+/trunk:1-168560
Modified: team/group/bindings/apps/app_minivm.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/apps/app_minivm.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/apps/app_minivm.c (original)
+++ team/group/bindings/apps/app_minivm.c Tue Jan 13 13:27:08 2009
@@ -2261,7 +2261,7 @@
if(!(vmu = find_account(domain, username, TRUE))) {
/* We could not find user, let's exit */
ast_log(LOG_WARNING, "Could not allocate temporary memory for '%s@%s'\n", username, domain);
- pbx_builtin_setvar_helper(chan, "MVM_NOTIFY_STATUS", "FAILED");
+ pbx_builtin_setvar_helper(chan, "MVM_ACCMESS_STATUS", "FAILED");
return -1;
}
@@ -2292,7 +2292,7 @@
if(ast_test_flag(vmu, MVM_ALLOCED))
free_user(vmu);
- pbx_builtin_setvar_helper(chan, "MVM_NOTIFY_STATUS", "SUCCESS");
+ pbx_builtin_setvar_helper(chan, "MVM_ACCMESS_STATUS", "SUCCESS");
/* Ok, we're ready to rock and roll. Return to dialplan */
return 0;
Modified: team/group/bindings/channels/chan_agent.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/channels/chan_agent.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/channels/chan_agent.c (original)
+++ team/group/bindings/channels/chan_agent.c Tue Jan 13 13:27:08 2009
@@ -256,7 +256,8 @@
char name[AST_MAX_AGENT];
int inherited_devicestate; /*!< Does the underlying channel have a devicestate to pass? */
ast_mutex_t app_lock; /**< Synchronization between owning applications */
- volatile pthread_t owning_app; /**< Owning application thread id */
+ int app_lock_flag;
+ ast_cond_t app_complete_cond;
volatile int app_sleep_cond; /**< Sleep condition for the login app */
struct ast_channel *owner; /**< Agent */
char loginchan[80]; /**< channel they logged in from */
@@ -451,7 +452,8 @@
ast_copy_string(p->agent, agt, sizeof(p->agent));
ast_mutex_init(&p->lock);
ast_mutex_init(&p->app_lock);
- p->owning_app = (pthread_t) -1;
+ ast_cond_init(&p->app_complete_cond, NULL);
+ p->app_lock_flag = 0;
p->app_sleep_cond = 1;
p->group = group;
p->pending = pending;
@@ -509,12 +511,14 @@
chan->tech_pvt = NULL;
p->app_sleep_cond = 1;
/* Release ownership of the agent to other threads (presumably running the login app). */
- ast_mutex_unlock(&p->app_lock);
+ p->app_lock_flag = 0;
+ ast_cond_signal(&p->app_complete_cond);
if (chan)
ast_channel_free(chan);
if (p->dead) {
ast_mutex_destroy(&p->lock);
ast_mutex_destroy(&p->app_lock);
+ ast_cond_destroy(&p->app_complete_cond);
ast_free(p);
}
return 0;
@@ -1001,6 +1005,7 @@
} else if (p->dead) {
ast_mutex_destroy(&p->lock);
ast_mutex_destroy(&p->app_lock);
+ ast_cond_destroy(&p->app_complete_cond);
ast_free(p);
} else {
if (p->chan) {
@@ -1011,8 +1016,10 @@
ast_mutex_unlock(&p->lock);
}
/* Release ownership of the agent to other threads (presumably running the login app). */
- if (ast_strlen_zero(p->loginchan))
- ast_mutex_unlock(&p->app_lock);
+ if (ast_strlen_zero(p->loginchan)) {
+ p->app_lock_flag = 0;
+ ast_cond_signal(&p->app_complete_cond);
+ }
}
return 0;
}
@@ -1099,6 +1106,7 @@
static struct ast_channel *agent_new(struct agent_pvt *p, int state)
{
struct ast_channel *tmp;
+ int alreadylocked;
#if 0
if (!p->chan) {
ast_log(LOG_WARNING, "No channel? :(\n");
@@ -1144,11 +1152,15 @@
* implemented in the kernel for this.
*/
p->app_sleep_cond = 0;
- if(ast_strlen_zero(p->loginchan) && ast_mutex_trylock(&p->app_lock)) {
+
+ alreadylocked = p->app_lock_flag;
+ p->app_lock_flag = 1;
+
+ if(ast_strlen_zero(p->loginchan) && alreadylocked) {
if (p->chan) {
ast_queue_frame(p->chan, &ast_null_frame);
ast_mutex_unlock(&p->lock); /* For other thread to read the condition. */
- ast_mutex_lock(&p->app_lock);
+ p->app_lock_flag = 1;
ast_mutex_lock(&p->lock);
} else {
ast_log(LOG_WARNING, "Agent disconnected while we were connecting the call\n");
@@ -1157,7 +1169,8 @@
p->app_sleep_cond = 1;
ast_channel_free( tmp );
ast_mutex_unlock(&p->lock); /* For other thread to read the condition. */
- ast_mutex_unlock(&p->app_lock);
+ p->app_lock_flag = 0;
+ ast_cond_signal(&p->app_complete_cond);
return NULL;
}
} else if (!ast_strlen_zero(p->loginchan)) {
@@ -1175,14 +1188,6 @@
}
if (p->chan)
ast_indicate(p->chan, AST_CONTROL_UNHOLD);
- p->owning_app = pthread_self();
- /* After the above step, there should not be any blockers. */
- if (p->chan) {
- if (ast_test_flag(p->chan, AST_FLAG_BLOCKING)) {
- ast_log( LOG_ERROR, "A blocker exists after agent channel ownership acquired\n" );
- ast_assert(ast_test_flag(p->chan, AST_FLAG_BLOCKING) == 0);
- }
- }
return tmp;
}
@@ -1347,6 +1352,7 @@
if (!p->chan) {
ast_mutex_destroy(&p->lock);
ast_mutex_destroy(&p->app_lock);
+ ast_cond_destroy(&p->app_complete_cond);
ast_free(p);
} else {
/* Cause them to hang up */
@@ -2233,15 +2239,17 @@
ast_mutex_unlock(&p->lock);
AST_LIST_UNLOCK(&agents);
/* Synchronize channel ownership between call to agent and itself. */
- ast_mutex_lock( &p->app_lock );
+ ast_mutex_lock(&p->app_lock);
+ if (p->app_lock_flag == 1) {
+ ast_cond_wait(&p->app_complete_cond, &p->app_lock);
+ }
+ ast_mutex_unlock(&p->app_lock);
ast_mutex_lock(&p->lock);
- p->owning_app = pthread_self();
ast_mutex_unlock(&p->lock);
if (p->ackcall > 1)
res = agent_ack_sleep(p);
else
res = ast_safe_sleep_conditional( chan, 1000, agent_cont_sleep, p );
- ast_mutex_unlock( &p->app_lock );
if ((p->ackcall > 1) && (res == 1)) {
AST_LIST_LOCK(&agents);
ast_mutex_lock(&p->lock);
@@ -2276,6 +2284,7 @@
if (p->dead && !p->owner) {
ast_mutex_destroy(&p->lock);
ast_mutex_destroy(&p->app_lock);
+ ast_cond_destroy(&p->app_complete_cond);
ast_free(p);
}
}
Modified: team/group/bindings/channels/chan_alsa.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/channels/chan_alsa.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/channels/chan_alsa.c (original)
+++ team/group/bindings/channels/chan_alsa.c Tue Jan 13 13:27:08 2009
@@ -381,13 +381,17 @@
state = snd_pcm_state(alsa.ocard);
if (state == SND_PCM_STATE_XRUN)
snd_pcm_prepare(alsa.ocard);
- res = snd_pcm_writei(alsa.ocard, sizbuf, len / 2);
+ while ((res = snd_pcm_writei(alsa.ocard, sizbuf, len / 2)) == -EAGAIN) {
+ usleep(1);
+ }
if (res == -EPIPE) {
#if DEBUG
ast_debug(1, "XRUN write\n");
#endif
snd_pcm_prepare(alsa.ocard);
- res = snd_pcm_writei(alsa.ocard, sizbuf, len / 2);
+ while ((res = snd_pcm_writei(alsa.ocard, sizbuf, len / 2)) == -EAGAIN) {
+ usleep(1);
+ }
if (res != len / 2) {
ast_log(LOG_ERROR, "Write error: %s\n", snd_strerror(res));
res = -1;
Modified: team/group/bindings/channels/chan_sip.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/channels/chan_sip.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/channels/chan_sip.c (original)
+++ team/group/bindings/channels/chan_sip.c Tue Jan 13 13:27:08 2009
@@ -15150,7 +15150,6 @@
unsigned int event;
const char *c = get_header(req, "Content-Type");
- check_via(p, req);
/* Need to check the media/type */
if (!strcasecmp(c, "application/dtmf-relay") ||
!strcasecmp(c, "application/vnd.nortelnetworks.digits")) {
@@ -17530,7 +17529,6 @@
char *eventid = NULL;
char *sep;
- check_via(p, req);
if( (sep = strchr(event, ';')) ) { /* XXX bug here - overwriting string ? */
*sep++ = '\0';
eventid = sep;
@@ -17690,7 +17688,6 @@
(this needs to be fixed in 1.4 as well)
*/
- check_via(p, req);
if (p->lastinvite) {
/* if this is a request in an active dialog, just confirm that the dialog exists. */
transmit_response_with_allow(p, "200 OK", req, 0);
@@ -19067,7 +19064,6 @@
int res = 0;
- check_via(p, req);
if (req->debug)
ast_verbose("Call %s got a SIP call transfer from %s: (REFER)!\n", p->callid, ast_test_flag(&p->flags[0], SIP_OUTGOING) ? "callee" : "caller");
@@ -19607,7 +19603,6 @@
static int handle_request_message(struct sip_pvt *p, struct sip_request *req)
{
if (!req->ignore) {
- check_via(p, req);
if (req->debug)
ast_verbose("Receiving message!\n");
receive_message(p, req);
Modified: team/group/bindings/configs/indications.conf.sample
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/configs/indications.conf.sample?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/configs/indications.conf.sample (original)
+++ team/group/bindings/configs/indications.conf.sample Tue Jan 13 13:27:08 2009
@@ -117,7 +117,7 @@
[bg]
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
description = Bulgaria
-ringdance = 1000,4000
+ringcadence = 1000,4000
;
dial = 425
busy = 425/500,0/500
Modified: team/group/bindings/configure.ac
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/configure.ac?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/configure.ac (original)
+++ team/group/bindings/configure.ac Tue Jan 13 13:27:08 2009
@@ -346,7 +346,7 @@
AC_FUNC_STRTOD
AC_FUNC_UTIME_NULL
AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([asprintf atexit dup2 endpwent ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday ioperm inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtol strtoq unsetenv utime vasprintf getpeereid sysctl swapctl])
+AC_CHECK_FUNCS([asprintf atexit closefrom dup2 endpwent ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday ioperm inet_ntoa isascii localtime_r memchr memmove memset mkdir munmap putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtol strtoq unsetenv utime vasprintf getpeereid sysctl swapctl])
AC_CHECK_FUNCS([glob])
Modified: team/group/bindings/funcs/func_logic.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/funcs/func_logic.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/funcs/func_logic.c (original)
+++ team/group/bindings/funcs/func_logic.c Tue Jan 13 13:27:08 2009
@@ -157,7 +157,7 @@
if (iffalse)
iffalse = ast_strip_quoted(iffalse, "\"", "\"");
- ast_copy_string(buf, ast_check_timing(&timing) ? iftrue : iffalse, len);
+ ast_copy_string(buf, ast_check_timing(&timing) ? S_OR(iftrue, "") : S_OR(iffalse, ""), len);
ast_destroy_timing(&timing);
return 0;
Modified: team/group/bindings/include/asterisk/autoconfig.h.in
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/include/asterisk/autoconfig.h.in?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/include/asterisk/autoconfig.h.in (original)
+++ team/group/bindings/include/asterisk/autoconfig.h.in Tue Jan 13 13:27:08 2009
@@ -152,6 +152,9 @@
/* Define to 1 if your system has a working `chown' function. */
#undef HAVE_CHOWN
+
+/* Define to 1 if you have the `closefrom' function. */
+#undef HAVE_CLOSEFROM
/* Define this to indicate the ${COS_DESCRIP} library */
#undef HAVE_COS
@@ -1236,6 +1239,9 @@
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
/* Define like PROTOTYPES; this can be used by system headers. */
#undef __PROTOTYPES
Modified: team/group/bindings/main/app.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/main/app.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/main/app.c (original)
+++ team/group/bindings/main/app.c Tue Jan 13 13:27:08 2009
@@ -33,6 +33,9 @@
#include <regex.h>
#include <sys/file.h> /* added this to allow to compile, sorry! */
#include <signal.h>
+#include <sys/time.h> /* for getrlimit(2) */
+#include <sys/resource.h> /* for getrlimit(2) */
+#include <stdlib.h> /* for closefrom(3) */
#include "asterisk/paths.h" /* use ast_config_AST_DATA_DIR */
#include "asterisk/channel.h"
@@ -1839,18 +1842,24 @@
void ast_close_fds_above_n(int n)
{
+#ifdef HAVE_CLOSEFROM
+ closefrom(n + 1);
+#else
int x, null;
+ struct rlimit rl;
+ getrlimit(RLIMIT_NOFILE, &rl);
null = open("/dev/null", O_RDONLY);
- for (x = n + 1; x <= (null >= 8192 ? null : 8192); x++) {
+ for (x = n + 1; x < rl.rlim_max; x++) {
if (x != null) {
/* Side effect of dup2 is that it closes any existing fd without error.
* This prevents valgrind and other debugging tools from sending up
* false error reports. */
- dup2(null, x);
+ while (dup2(null, x) < 0 && errno == EINTR);
close(x);
}
}
close(null);
+#endif
}
int ast_safe_fork(int stop_reaper)
Modified: team/group/bindings/main/asterisk.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/main/asterisk.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/main/asterisk.c (original)
+++ team/group/bindings/main/asterisk.c Tue Jan 13 13:27:08 2009
@@ -81,7 +81,9 @@
#elif defined(HAVE_SYSCTL)
#include <sys/param.h>
#include <sys/sysctl.h>
+#if defined(HAVE_SWAPCTL)
#include <sys/swap.h>
+#endif
#endif
#include <regex.h>
Modified: team/group/bindings/main/srv.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/main/srv.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/main/srv.c (original)
+++ team/group/bindings/main/srv.c Tue Jan 13 13:27:08 2009
@@ -224,7 +224,7 @@
ast_copy_string(host, current->host, hostlen);
*port = current->port;
ast_free(current);
- ast_verb(3, "ast_get_srv: SRV lookup for '%s' mapped to host %s, port %d\n",
+ ast_verb(4, "ast_get_srv: SRV lookup for '%s' mapped to host %s, port %d\n",
service, host, *port);
} else {
host[0] = '\0';
Modified: team/group/bindings/main/taskprocessor.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/main/taskprocessor.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/main/taskprocessor.c (original)
+++ team/group/bindings/main/taskprocessor.c Tue Jan 13 13:27:08 2009
@@ -114,7 +114,7 @@
static char *cli_tps_report(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static struct ast_cli_entry taskprocessor_clis[] = {
- AST_CLI_DEFINE(cli_tps_ping, "Ping a named task processors"),
+ AST_CLI_DEFINE(cli_tps_ping, "Ping a named task processor"),
AST_CLI_DEFINE(cli_tps_report, "List instantiated task processors and statistics"),
};
Modified: team/group/bindings/res/res_agi.c
URL: http://svn.digium.com/svn-view/asterisk/team/group/bindings/res/res_agi.c?view=diff&rev=168563&r1=168562&r2=168563
==============================================================================
--- team/group/bindings/res/res_agi.c (original)
+++ team/group/bindings/res/res_agi.c Tue Jan 13 13:27:08 2009
@@ -2752,6 +2752,11 @@
the module we are using */
if (c->mod != ast_module_info->self)
ast_module_ref(c->mod);
+ /* If the AGI command being executed is an actual application (using agi exec)
+ the app field will be updated in pbx_exec via handle_exec */
+ if (chan->cdr && !ast_check_hangup(chan) && strcasecmp(argv[0], "EXEC"))
+ ast_cdr_setapp(chan->cdr, "AGI", buf);
+
res = c->handler(chan, agi, argc, argv);
if (c->mod != ast_module_info->self)
ast_module_unref(c->mod);
More information about the asterisk-commits
mailing list