--- ./channel.c 2006-09-11 12:38:00.000000000 -0400 +++ ./channel.c-42600 2006-09-11 12:29:45.000000000 -0400 @@ -45,7 +45,7 @@ #include "asterisk.h" -ASTERISK_FILE_VERSION(__FILE__, "$Revision: 42452 $") +ASTERISK_FILE_VERSION(__FILE__, "$Revision: 42600 $") #include "asterisk/pbx.h" #include "asterisk/frame.h" @@ -2385,7 +2385,7 @@ /* Now we have a good choice for both. */ ast_mutex_lock(&chan->lock); - if ((*rawformat == native) && (*format == fmt)) { + if ((*rawformat == native) && (*format == fmt) && ((*rawformat == *format) || (*trans))) { /* the channel is already in these formats, so nothing to do */ ast_mutex_unlock(&chan->lock); return 0;