[Home]

Summary:ASTERISK-07679: channel.c set_format() exits prematurely under some circumstances.
Reporter:Tony Mountifield (softins)Labels:
Date Opened:2006-09-05 10:19:38Date Closed:2006-09-09 15:26:16
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:The optimisations to set_format() in channel.c that were introduced to the 1.2 branch in revision 38310 and revised in revision 38347 appear to exit from set_format() in at least one situation where it should continue.

If I use a call file to originate a call to a SIP channel and then send that call into a MeetMe room, no audio is heard, and the log file fills up with the message:

chan_sip.c:2561 sip_write: Asked to transmit frame type 64, while native formats is 8 (read/write = 64/64)


The situation can be reproduced easily, as follows (I have SIP phones on 2000 and 2002).

Extract from extensions.conf:

[local-extensions-novm]
exten => _20XX,1,Dial(SIP/${EXTEN})

[other-extensions]
exten => 4007,1,Answer
exten => 4007,2,Wait(1)
exten => 4007,3,MeetMe(2222|)
exten => 4007,4,Hangup

On my 2000 phone I dialled 4007 and entered the conference. On my 2002 phone I also dialled 4007 and entered the conference successfully, with audio being heard. I then hung up 2002 and copied the following call file to /var/spool/asterisk/outgoing:

Channel: Local/2002@local-extensions-novm
Extension: 4007
Context: other-extensions
Priority: 1

As soon as this call enters MeetMe, the sip_write messages start, and continue until the phone is hung up.

Reverting the 38347 and 38310 changes corrects the problem. This involved removing these lines:

   if ((*rawformat == native) && (*format == fmt)) {
       /* the channel is already in these formats, so nothing to do */
       ast_mutex_unlock(&chan->lock);
       return 0;
   }
Comments:By: Tony Mountifield (softins) 2006-09-05 11:07:46

Apologies, this appears to be a duplicate of bug ASTERISK-7599. Hope the information provided is useful anyway.



By: Joshua C. Colp (jcolp) 2006-09-09 15:26:15

Fixed in 1.2 as of revision 42600 and trunk as of revision 42601.