[Asterisk-cvs] asterisk/apps app_queue.c,1.73,1.74
markster at lists.digium.com
markster at lists.digium.com
Sat Jun 26 12:40:46 CDT 2004
Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv18325/apps
Modified Files:
app_queue.c
Log Message:
Implement queue wide wrapuptime (bug #1707)
Index: app_queue.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_queue.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -d -r1.73 -r1.74
--- app_queue.c 23 Jun 2004 20:05:18 -0000 1.73
+++ app_queue.c 26 Jun 2004 16:26:39 -0000 1.74
@@ -145,6 +145,7 @@
int musiconhold;
int dataquality;
int allowdisconnect;
+ time_t lastcall;
struct member *member;
struct localuser *next;
};
@@ -203,6 +204,7 @@
int count; /* How many entries are in the queue */
int maxlen; /* Max number of entries in queue */
+ int wrapuptime; /* Wrapup Time */
int dead; /* Whether this queue is dead or not */
int retry; /* Retry calling everyone after this amount of time */
@@ -518,6 +520,13 @@
static int ring_entry(struct queue_ent *qe, struct localuser *tmp)
{
int res;
+ if (qe->parent->wrapuptime && (time(NULL) - tmp->lastcall < qe->parent->wrapuptime)) {
+ ast_log(LOG_DEBUG, "Wrapuptime not yet expired for %s/%s\n", tmp->tech, tmp->numsubst);
+ if (qe->chan->cdr)
+ ast_cdr_busy(qe->chan->cdr);
+ tmp->stillgoing = 0;
+ return 0;
+ }
/* Request the peer */
tmp->chan = ast_request(tmp->tech, qe->chan->nativeformats, tmp->numsubst);
if (!tmp->chan) { /* If we can't, just go on to the next call */
@@ -1019,6 +1028,7 @@
tmp->member = cur; /* Never directly dereference! Could change on reload */
strncpy(tmp->tech, cur->tech, sizeof(tmp->tech)-1);
strncpy(tmp->numsubst, cur->loc, sizeof(tmp->numsubst)-1);
+ tmp->lastcall = cur->lastcall;
/* If we're dialing by extension, look at the extension to know what to dial */
if ((newnum = strstr(tmp->numsubst, "BYEXTENSION"))) {
strncpy(restofit, newnum + strlen("BYEXTENSION"), sizeof(restofit)-1);
@@ -1703,6 +1713,7 @@
q->callsabandoned = 0;
q->callscompletedinsl = 0;
q->servicelevel = 0;
+ q->wrapuptime = 0;
free_members(q, 0);
strcpy(q->moh, "");
strcpy(q->announce, "");
@@ -1780,6 +1791,8 @@
q->announceholdtime = (!strcasecmp(var->value,"once")) ? 1 : ast_true(var->value);
} else if (!strcasecmp(var->name, "retry")) {
q->retry = atoi(var->value);
+ } else if (!strcasecmp(var->name, "wrapuptime")) {
+ q->wrapuptime = atoi(var->value);
} else if (!strcasecmp(var->name, "maxlen")) {
q->maxlen = atoi(var->value);
} else if (!strcasecmp(var->name, "servicelevel")) {
More information about the svn-commits
mailing list