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

Chih-Wei Huang cwhuang at citron.com.tw
Fri Mar 25 02:31:06 MST 2005


Craig Southeren wrote:
> On Thu, 24 Mar 2005 19:42:37 +0600
> "Paul Cadach" <paul at odt.east.telecom.kz> wrote:
> 
>>I had next patch for openh323 1.12.2 (not one-line but two-line, not so much important):
> 
> That code version is nearly two years old, and there have been 4 stable
> releases since then. 
> 
> More recent code can be found at http://www.voxgratia.org/downloads.html
> 
> ..deleted
> 
>>With this patch it's possible to not create inheritance from H323_ExternalRTPChannel class (as I remember - there was
>>about 1 year ago).
> 
> I've written many applications that do this very succesfully. You might
> want to read the documentation on the OpenH323 external RTP interface
> at:
> 
>    http://www.voxgratia.org/docs/external_rtp.html

Hello Craig,
No time no see. How are you?

Paul and I are discussing that if it is possible to get the remote media 
address without creating inheritance from H323_ExternalRTPChannel.
(i.e., use H323_ExternalRTPChannel instead of MyH323_ExternalRTPChannel)
Originally, I think the remote media address can be got from
H323Connection::OnStartLogicalChannel
(by calling H323_ExternalRTPChannel::GetRemoteAddress)
But Paul pointed out a issue. Some buggy(?) devices like Cisco
send fake IP/port in OLC and return the real media address in
OLCAck (i.e., RTCP != RTP+1).

When OnStartLogicalChannel be called (by H323Conneection::Open)
for a transmitter channel, the remote media address is not available
yet(GetRemoteAddress failed), while for a receiver channel, the remote 
media address is derived from mediaControlChannel of OLC.
It seems impossible to get the remote media address from OLCAck
in OnStartLogicalChannel.
So for a device with RTCP != RTP+1, this is a problem.

Paul's patch seems defer calling H323Conneection::Open until
receive OLCAck so the problem can be solved.
(though he said it is for 1.12.2, it seems still applies to Openh323 CVS 
-- I didn't really test)

Of course, creating inheritance from H323_ExternalRTPChannel to
override H323_ExternalRTPChannel::Start can solve the problem,
since Start is be called after OLCAck for a transmitter channel.
I just hope to know is it possible to do the same work
without inheritance of H323_ExternalRTPChannel. It's cool!


-- 
    ~     Chih-Wei Huang (cwhuang at citron.com.tw)
   'v'    CTO, Citron Network Inc. ( http://www.citron.com.tw/ )
  // \\   GnuGK Project : http://www.gnugk.org/    (Developer)
/(   )\  HomePage      : http://www.linux.org.tw/~cwhuang/
  ^`~'^



More information about the asterisk-dev mailing list