diff -Naur asterisk-1.6.2.9-orig/apps/app_meetme.c asterisk-1.6.2.9/apps/app_meetme.c --- asterisk-1.6.2.9-orig/apps/app_meetme.c 2010-05-12 14:03:38.000000000 -0400 +++ asterisk-1.6.2.9/apps/app_meetme.c 2010-06-02 17:21:16.000000000 -0400 @@ -1708,17 +1708,19 @@ return 0; } -static void conf_queue_dtmf(const struct ast_conference *conf, +static void conf_queue_dtmf(struct ast_conference *conf, const struct ast_conf_user *sender, struct ast_frame *f) { struct ast_conf_user *user; + ast_mutex_lock(&conf->playlock); AST_LIST_TRAVERSE(&conf->userlist, user, list) { if (user == sender) continue; if (ast_write(user->chan, f) < 0) ast_log(LOG_WARNING, "Error writing frame to channel %s\n", user->chan->name); } + ast_mutex_unlock(&conf->playlock); } static void sla_queue_event_full(enum sla_event_type type, @@ -3351,7 +3353,9 @@ } } /* Remove ourselves from the list */ + ast_mutex_lock(&conf->playlock); AST_LIST_REMOVE(&conf->userlist, user, list); + ast_mutex_unlock(&conf->playlock); /* Change any states */ if (!conf->users) {