PBX updates from andre

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@760 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.0
Mark Spencer 23 years ago
parent f8755643cd
commit 201246ea7f

37
pbx.c

@ -1145,23 +1145,23 @@ static int ast_extension_state2(struct ast_exten *e)
res = ast_device_state(cur); res = ast_device_state(cur);
switch (res) { switch (res) {
case AST_DEVICE_NOT_INUSE: case AST_DEVICE_NOT_INUSE:
allunavailable = 0; allunavailable = 0;
allbusy = 0; allbusy = 0;
break; break;
case AST_DEVICE_INUSE: case AST_DEVICE_INUSE:
return AST_EXTENSION_INUSE; return AST_EXTENSION_INUSE;
case AST_DEVICE_BUSY: case AST_DEVICE_BUSY:
allunavailable = 0; allunavailable = 0;
allfree = 0; allfree = 0;
busy = 1; busy = 1;
break; break;
case AST_DEVICE_UNAVAILABLE: case AST_DEVICE_UNAVAILABLE:
case AST_DEVICE_INVALID: case AST_DEVICE_INVALID:
allbusy = 0; allbusy = 0;
allfree = 0; allfree = 0;
break; break;
default: default:
allunavailable = 0; allunavailable = 0;
allbusy = 0; allbusy = 0;
allfree = 0; allfree = 0;
@ -1170,14 +1170,14 @@ static int ast_extension_state2(struct ast_exten *e)
} while (cur); } while (cur);
if (allfree) if (allfree)
return AST_EXTENSION_NOT_INUSE; return AST_EXTENSION_NOT_INUSE;
if (allbusy) if (allbusy)
return AST_EXTENSION_BUSY; return AST_EXTENSION_BUSY;
if (allunavailable) if (allunavailable)
return AST_EXTENSION_UNAVAILABLE; return AST_EXTENSION_UNAVAILABLE;
if (busy) if (busy)
return AST_EXTENSION_INUSE; return AST_EXTENSION_INUSE;
return AST_EXTENSION_NOT_INUSE; return AST_EXTENSION_NOT_INUSE;
} }
@ -1207,6 +1207,11 @@ int ast_device_state_changed(const char *fmt, ...)
va_start(ap, fmt); va_start(ap, fmt);
vsnprintf(device, sizeof(device)-1, fmt, ap); vsnprintf(device, sizeof(device)-1, fmt, ap);
va_end(ap); va_end(ap);
rest = strchr(device, '-');
if (rest) {
*rest = 0;
}
pthread_mutex_lock(&hintlock); pthread_mutex_lock(&hintlock);
@ -1223,7 +1228,7 @@ int ast_device_state_changed(const char *fmt, ...)
rest++; rest++;
} }
if (!strncmp(cur, device, strlen(cur))) { if (!strcmp(cur, device)) {
// Found extension execute callbacks // Found extension execute callbacks
state = ast_extension_state2(list->exten); state = ast_extension_state2(list->exten);
if ((state != -1) && (state != list->laststate)) { 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) static void destroy_exten(struct ast_exten *e)
{ {
if (e->priority == PRIORITY_HINT)
ast_remove_hint(e);
if (e->datad) if (e->datad)
e->datad(e->data); e->datad(e->data);
free(e); free(e);
@ -3812,11 +3820,6 @@ void ast_context_destroy(struct ast_context *con, char *registrar)
free(swl); free(swl);
swl = sw; 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 (e = tmp->root; e;) {
for (en = e->peer; en;) { for (en = e->peer; en;) {
el = en; el = en;

Loading…
Cancel
Save