aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-04-02 23:26:27 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-04-02 23:26:27 +0000
commitdbaa46812e0457c438ca1b2f838b58ed68634ed9 (patch)
treeea320dd6ea8d2d7f53035fa9fa7498d94a325291 /apps
parenta34630d549a1fd4c6fa3c083c74ff7ba4ec08003 (diff)
Resolve app_meetme crash when member tries to mute/unmute (bug #3899)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5362 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rwxr-xr-xapps/app_meetme.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 52b07ce54..0c7021a62 100755
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -572,7 +572,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
struct ast_conf_user *user = malloc(sizeof(struct ast_conf_user));
struct ast_conf_user *usr = NULL;
int fd;
- struct zt_confinfo ztc;
+ struct zt_confinfo ztc, ztc_empty;
struct ast_frame *f;
struct ast_channel *c;
struct ast_frame fr;
@@ -790,6 +790,7 @@ zapretry:
nfds = 0;
}
memset(&ztc, 0, sizeof(ztc));
+ memset(&ztc_empty, 0, sizeof(ztc_empty));
/* Check to see if we're in a conference... */
ztc.chan = 0;
if (ioctl(fd, ZT_GETCONF, &ztc)) {
@@ -1078,10 +1079,7 @@ zapretry:
ret = 0;
break;
} else if (((f->frametype == AST_FRAME_DTMF) && (f->subclass == '*') && (confflags & CONFFLAG_STARMENU)) || ((f->frametype == AST_FRAME_DTMF) && menu_active)) {
- int oldconfmode = 0;
- oldconfmode = ztc.confmode;
- ztc.confmode = 0;
- if (ioctl(fd, ZT_SETCONF, &ztc)) {
+ if (ioctl(fd, ZT_SETCONF, &ztc_empty)) {
ast_log(LOG_WARNING, "Error setting conference\n");
close(fd);
ast_mutex_unlock(&conflock);
@@ -1202,7 +1200,7 @@ zapretry:
if (musiconhold) {
ast_moh_start(chan, NULL);
}
- ztc.confmode = oldconfmode;
+
if (ioctl(fd, ZT_SETCONF, &ztc)) {
ast_log(LOG_WARNING, "Error setting conference\n");
close(fd);