#20
UA: Opal Call Session fails to destroy codec on disconnect
-
Attachments Take Screenshot Add FileNo attachmentsAssociations Associate with New Ticket Associate with Existing Ticket
Ticket No. Relation Summary Status Action #21 Parent OPAL: Codec is not properly destroyed after disconnect Fixed Activity-
By joegen on May 23, 2008 @ 01:12am UTC *
- attachment SIP Log added
-
By joegen on May 23, 2008 @ 01:13am UTC *
- attachment PTLib Log added
-
By joegen on Jun 08, 2008 @ 02:56am UTC *
- → status changed from Accepted to Test
A leak in OpalFlexiTranscoder proxy class maybe causing this behavior. OpalFlexiTranscoder was first introduced by Ilian Pinzon so that re-invites with a media channel change my allow the codec to be changed in mid session. OpalFlexiTranscoder, however, does not have a destructor override. This allowed the OpalTranscoder object it created in the heap to be forever lost. I have committed a patch for this in CVS and is ready for testing.
-
By joegen on Jun 20, 2008 @ 12:49am UTC *
- → status changed from Test to Fixed
-
Bug Report from OpenSIPStack Mailing List:
Joegen E. Baclor wrote:
> Hmmn. Strange. Seems like the codec from the previous call has not been destroyed. Can you send me a maximum level log of two consecutive calls right after fresh startup of your SoftPhone?
>
> H.Kropf wrote:
>
>> Hi
>>
>>
>>>> can you put a break-point in OpalTranscoder::ConvertFrames() and figure out where exactly it fails?
>>>>
>> I can :)
>>
>>
>> bool OpalMediaPatch::Sink::WriteFrame(RTP_DataFrame & sourceFrame)
>> {
>> ......
>> if (!primaryCodec->ConvertFrames(sourceFrame, intermediateFrames))
>> {
>> PTRACE failed”);
>> return false;
>> }
>> ......
>> }
>>
>> BOOL OpalTranscoder::ConvertFrames(const RTP_DataFrame & input, RTP_DataFrameList & output)
>> {
>> .......
>> return Convert(input, output0);
>> }
>>
>> BOOL OpalFlexiTranscoder::Convert( const RTP_DataFrame & input, RTP_DataFrame & output)
>> {
>> return m_Transcoder->Convert( input, output );
>> }
>>
>> BOOL OpalFramedTranscoder::Convert(const RTP_DataFrame & input, RTP_DataFrame & output)
>> {
>> ....
>> while (inputLength > 0)
>> {
>> ......
>> if (!ConvertFrame(inputPtr, consumed, outputPtr, created))
>> return FALSE;
>> .......
>> }
>> .......
>> }
>>
>> BOOL OpalFramedTranscoder::ConvertFrame(const BYTE * inputPtr, PINDEX & /consumed/, BYTE * outputPtr, PINDEX & /created/)
>> {
>> return ConvertFrame(inputPtr, outputPtr);
>> }
>>
>>
>>
>> BOOL Opal_PCM_G729::ConvertFrame(const BYTE * src, BYTE * dst)
>> {
>> if (voiceAgeEncoderInUse != this) return FALSE; // !!!!!!!!!!!! <<<=== this place
>> ......
>> }
>>
>>
>>
>>
>>> Hi,
>>>
>>> Are you a C++ developer? If so, can you put a break-point in OpalTranscoder::ConvertFrames() and figure out where exactly it fails?
>>>
>>> Joegen
>>>
>>> H.Kropf wrote:
>>>
>>>> Hello
>>>>
>>>> After a last update of library from CVS (2008-05-20), my softphone (on OSS library) makes only one successful call after start. In next calls there is no voice. In PTRACE-log there are many such records
>>>>
>>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed
>>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed
>>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed
>>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed