mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-17 15:29:05 +00:00
PBX updates from andre
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@760 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
37
pbx.c
37
pbx.c
@@ -1145,23 +1145,23 @@ static int ast_extension_state2(struct ast_exten *e)
|
||||
|
||||
res = ast_device_state(cur);
|
||||
switch (res) {
|
||||
case AST_DEVICE_NOT_INUSE:
|
||||
case AST_DEVICE_NOT_INUSE:
|
||||
allunavailable = 0;
|
||||
allbusy = 0;
|
||||
break;
|
||||
case AST_DEVICE_INUSE:
|
||||
case AST_DEVICE_INUSE:
|
||||
return AST_EXTENSION_INUSE;
|
||||
case AST_DEVICE_BUSY:
|
||||
case AST_DEVICE_BUSY:
|
||||
allunavailable = 0;
|
||||
allfree = 0;
|
||||
busy = 1;
|
||||
break;
|
||||
case AST_DEVICE_UNAVAILABLE:
|
||||
case AST_DEVICE_INVALID:
|
||||
case AST_DEVICE_UNAVAILABLE:
|
||||
case AST_DEVICE_INVALID:
|
||||
allbusy = 0;
|
||||
allfree = 0;
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
allunavailable = 0;
|
||||
allbusy = 0;
|
||||
allfree = 0;
|
||||
@@ -1170,14 +1170,14 @@ static int ast_extension_state2(struct ast_exten *e)
|
||||
} while (cur);
|
||||
|
||||
if (allfree)
|
||||
return AST_EXTENSION_NOT_INUSE;
|
||||
return AST_EXTENSION_NOT_INUSE;
|
||||
if (allbusy)
|
||||
return AST_EXTENSION_BUSY;
|
||||
return AST_EXTENSION_BUSY;
|
||||
if (allunavailable)
|
||||
return AST_EXTENSION_UNAVAILABLE;
|
||||
return AST_EXTENSION_UNAVAILABLE;
|
||||
if (busy)
|
||||
return AST_EXTENSION_INUSE;
|
||||
|
||||
return AST_EXTENSION_INUSE;
|
||||
|
||||
return AST_EXTENSION_NOT_INUSE;
|
||||
}
|
||||
|
||||
@@ -1207,6 +1207,11 @@ int ast_device_state_changed(const char *fmt, ...)
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(device, sizeof(device)-1, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
rest = strchr(device, '-');
|
||||
if (rest) {
|
||||
*rest = 0;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&hintlock);
|
||||
|
||||
@@ -1223,7 +1228,7 @@ int ast_device_state_changed(const char *fmt, ...)
|
||||
rest++;
|
||||
}
|
||||
|
||||
if (!strncmp(cur, device, strlen(cur))) {
|
||||
if (!strcmp(cur, device)) {
|
||||
// Found extension execute callbacks
|
||||
state = ast_extension_state2(list->exten);
|
||||
if ((state != -1) && (state != list->laststate)) {
|
||||
@@ -3770,6 +3775,9 @@ int ast_pbx_outgoing_app(char *type, int format, void *data, int timeout, char *
|
||||
|
||||
static void destroy_exten(struct ast_exten *e)
|
||||
{
|
||||
if (e->priority == PRIORITY_HINT)
|
||||
ast_remove_hint(e);
|
||||
|
||||
if (e->datad)
|
||||
e->datad(e->data);
|
||||
free(e);
|
||||
@@ -3812,11 +3820,6 @@ void ast_context_destroy(struct ast_context *con, char *registrar)
|
||||
free(swl);
|
||||
swl = sw;
|
||||
}
|
||||
for (e = tmp->root; e; ) {
|
||||
if (e->priority == PRIORITY_HINT)
|
||||
ast_remove_hint(e);
|
||||
e = e->next;
|
||||
}
|
||||
for (e = tmp->root; e;) {
|
||||
for (en = e->peer; en;) {
|
||||
el = en;
|
||||
|
||||
Reference in New Issue
Block a user