[Asterisk-Dev] Re: Asterisk H.323 driver

Paul Cadach paul at odt.east.telecom.kz
Wed Mar 23 02:03:01 MST 2005


Hello,

----- Original Message -----
From: "Chih-Wei Huang" <cwhuang at citron.com.tw>
To: "Jeremy McNamara" <jj at nufone.net>
Cc: <asterisk-dev at lists.digium.com>
Sent: Wednesday, March 23, 2005 2:44 PM
Subject: [Asterisk-Dev] Re: Asterisk H.323 driver


> Attach another patch that fixes the RTP problem.

[skipped]
> * Eliminate the usage of MyH323_ExternalRTPChannel.
> The class is unnecessary since original H323_ExternalRTPChannel
> is already good enough. Basically speaking, you override two methods
> of H323_ExternalRTPChannel to do two tasks in MyH323_ExternalRTPChannel:
>   1. Start(): call on_start_rtp_channel to start RTP thread
>   2. OnReceivedAckPDU(): also call on_start_rtp_channel
>
> 1 is unnecessary since H323_ExternalRTPChannel::Start() just calls
> H323Channel::Open, which calls H323Connection::OnStartLogicalChannel.
> We can move all tasks into OnStartLogicalChannel.
> And 2 is also unnecessary because it duplicates the work done
> by Start(), and it will not be called on faststart situation.
> (On faststart you won't get OLCAck)
> In conclusion, we can move all tasks to do into OnStartLogicalChannel
> and use original H323_ExternalRTPChannel.

Don't forget Cisco CallManager uses fake IP address/port on OLC packet but OCLAck have real information from gateway, so
we needs to analyze OLCAck to update RTP peer address and not use OLC information until OLCAck received or
H323_ExternalRTPChannel::Start() is called. Also, there was flawless H323_ExternalRTPChannel::Start() call (or missed
call) found some time ago. Because OpenH323 is out-of-tree and isn't maintained together with Asterisk so inheritance of
H323_ExternalRTPChannel is a single possible workaround for one-line fix of OpenH323.


WBR,
Paul.





More information about the asterisk-dev mailing list