[svn-commits] irroot: branch irroot/distrotech-customers-1.8 r320709 - /team/irroot/distrot...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue May 24 02:47:55 CDT 2011


Author: irroot
Date: Tue May 24 02:47:39 2011
New Revision: 320709

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=320709
Log:
Set the writeformat on mismatch in sip_write

Modified:
    team/irroot/distrotech-customers-1.8/channels/chan_sip.c

Modified: team/irroot/distrotech-customers-1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/irroot/distrotech-customers-1.8/channels/chan_sip.c?view=diff&rev=320709&r1=320708&r2=320709
==============================================================================
--- team/irroot/distrotech-customers-1.8/channels/chan_sip.c (original)
+++ team/irroot/distrotech-customers-1.8/channels/chan_sip.c Tue May 24 02:47:39 2011
@@ -6296,12 +6296,21 @@
 	switch (frame->frametype) {
 	case AST_FRAME_VOICE:
 		if (!(frame->subclass.codec & ast->nativeformats)) {
+			struct ast_channel *bridge;
 			char s1[512], s2[512], s3[512];
+
 			ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s read/write = %s/%s\n",
 				ast_getformatname(frame->subclass.codec),
 				ast_getformatname_multiple(s1, sizeof(s1), ast->nativeformats & AST_FORMAT_AUDIO_MASK),
 				ast_getformatname_multiple(s2, sizeof(s2), ast->readformat),
 				ast_getformatname_multiple(s3, sizeof(s3), ast->writeformat));
+			ast_set_write_format(ast, frame->subclass.codec);
+
+			bridge = ast_bridged_channel(ast);
+			if (!ast_channel_trylock(bridge)) {
+				ast_log(LOG_WARNING, "Attempting to change formats making %s and %s compat.\n", ast->name, bridge->name);
+				ast_channel_make_compatible(ast, bridge);
+			}
 			return 0;
 		}
 		if (p) {




More information about the svn-commits mailing list