Index: configs/agents.conf.sample =================================================================== RCS file: /usr/cvsroot/asterisk/configs/agents.conf.sample,v retrieving revision 1.15 diff -u -r1.15 agents.conf.sample --- configs/agents.conf.sample 14 Feb 2005 23:20:01 -0000 1.15 +++ configs/agents.conf.sample 18 Jul 2005 17:39:57 -0000 @@ -22,6 +22,12 @@ ; ;ackcall=no ; +; The key that is used to disconnect a call can be configured +; to be any one key. The default is '*'. Set it to be blank +; to disable this feature. +; +;disconnect_key=* +; ; Define wrapuptime. This is the minimum amount of time when ; after disconnecting before the caller can receive a new call ; note this is in milliseconds. Index: channels/chan_agent.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_agent.c,v retrieving revision 1.145 diff -u -r1.145 chan_agent.c --- channels/chan_agent.c 15 Jul 2005 23:00:46 -0000 1.145 +++ channels/chan_agent.c 18 Jul 2005 17:40:01 -0000 @@ -142,6 +142,9 @@ #define GETAGENTBYCALLERID "AGENTBYCALLERID" +#define DEFAULT_DISCONNECT_KEY '*' +static char disconnect_key = DEFAULT_DISCONNECT_KEY; + static struct agent_pvt { ast_mutex_t lock; /* Channel private lock */ int dead; /* Poised for destruction? */ @@ -456,7 +459,7 @@ p->acknowledged = 1; ast_frfree(f); f = &answer_frame; - } else if (f->subclass == '*') { + } else if (disconnect_key && f->subclass == disconnect_key) { /* terminates call */ ast_frfree(f); f = NULL; @@ -1043,6 +1046,8 @@ strncat(savecallsin, "/", sizeof(savecallsin) - strlen(savecallsin) - 1); } else if (!strcasecmp(v->name, "custom_beep")) { strncpy(beep, v->value, sizeof(beep) - 1); + } else if (!strcasecmp(v->name, "disconnect_key")) { + disconnect_key = *v->value; } v = v->next; }