|
|
@ -918,7 +918,7 @@ zapretry:
|
|
|
|
|
|
|
|
|
|
|
|
outrun:
|
|
|
|
outrun:
|
|
|
|
if (user->user_no) { /* Only cleanup users who really joined! */
|
|
|
|
if (user->user_no) { /* Only cleanup users who really joined! */
|
|
|
|
manager_event(EVENT_FLAG_CALL, "MeetmeLeave",
|
|
|
|
manager_event(EVENT_FLAG_CALL, "MeetmeLeave",
|
|
|
|
"Channel: %s\r\n"
|
|
|
|
"Channel: %s\r\n"
|
|
|
|
"Uniqueid: %s\r\n"
|
|
|
|
"Uniqueid: %s\r\n"
|
|
|
|
"Meetme: %s\r\n",
|
|
|
|
"Meetme: %s\r\n",
|
|
|
@ -926,34 +926,34 @@ outrun:
|
|
|
|
ast_mutex_lock(&conflock);
|
|
|
|
ast_mutex_lock(&conflock);
|
|
|
|
conf->users--;
|
|
|
|
conf->users--;
|
|
|
|
cur = confs;
|
|
|
|
cur = confs;
|
|
|
|
if (!conf->users) {
|
|
|
|
if (!conf->users) {
|
|
|
|
/* No more users -- close this one out */
|
|
|
|
/* No more users -- close this one out */
|
|
|
|
while(cur) {
|
|
|
|
while(cur) {
|
|
|
|
if (cur == conf) {
|
|
|
|
if (cur == conf) {
|
|
|
|
if (prev)
|
|
|
|
if (prev)
|
|
|
|
prev->next = conf->next;
|
|
|
|
prev->next = conf->next;
|
|
|
|
else
|
|
|
|
else
|
|
|
|
confs = conf->next;
|
|
|
|
confs = conf->next;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
prev = cur;
|
|
|
|
|
|
|
|
cur = cur->next;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
prev = cur;
|
|
|
|
if (!cur)
|
|
|
|
cur = cur->next;
|
|
|
|
ast_log(LOG_WARNING, "Conference not found\n");
|
|
|
|
}
|
|
|
|
if (conf->chan)
|
|
|
|
if (!cur)
|
|
|
|
ast_hangup(conf->chan);
|
|
|
|
ast_log(LOG_WARNING, "Conference not found\n");
|
|
|
|
else
|
|
|
|
if (conf->chan)
|
|
|
|
close(conf->fd);
|
|
|
|
ast_hangup(conf->chan);
|
|
|
|
free(conf);
|
|
|
|
else
|
|
|
|
|
|
|
|
close(conf->fd);
|
|
|
|
|
|
|
|
free(conf);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
/* Remove the user struct */
|
|
|
|
/* Remove the user struct */
|
|
|
|
if (user == cur->firstuser) {
|
|
|
|
if (user == conf->firstuser) {
|
|
|
|
cur->firstuser->nextuser->prevuser = NULL;
|
|
|
|
user->nextuser->prevuser = NULL;
|
|
|
|
cur->firstuser = cur->firstuser->nextuser;
|
|
|
|
conf->firstuser = user->nextuser;
|
|
|
|
} else if (user == cur->lastuser){
|
|
|
|
} else if (user == conf->lastuser){
|
|
|
|
cur->lastuser->prevuser->nextuser = NULL;
|
|
|
|
user->prevuser->nextuser = NULL;
|
|
|
|
cur->lastuser = cur->lastuser->prevuser;
|
|
|
|
conf->lastuser = user->prevuser;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
user->nextuser->prevuser = user->prevuser;
|
|
|
|
user->nextuser->prevuser = user->prevuser;
|
|
|
|
user->prevuser->nextuser = user->nextuser;
|
|
|
|
user->prevuser->nextuser = user->nextuser;
|
|
|
|