diff --git a/modules/h323chan.cpp b/modules/h323chan.cpp index f8bc1f93..a977c660 100644 --- a/modules/h323chan.cpp +++ b/modules/h323chan.cpp @@ -375,6 +375,7 @@ public: virtual void OnEstablished(); virtual void OnCleared(); virtual BOOL OnAlerting(const H323SignalPDU& alertingPDU, const PString& user); + virtual BOOL OnReceivedProgress(const H323SignalPDU& pdu); virtual void OnUserInputTone(char tone, unsigned duration, unsigned logicalChannel, unsigned rtpTimestamp); virtual void OnUserInputString(const PString& value); virtual BOOL OpenAudioChannel(BOOL isEncoding, unsigned bufferSize, @@ -1076,6 +1077,25 @@ BOOL YateH323Connection::OnAlerting(const H323SignalPDU &alertingPDU, const PStr return TRUE; } +BOOL YateH323Connection::OnReceivedProgress(const H323SignalPDU& pdu) +{ + Debug(m_chan,DebugInfo,"YateH323Connection::OnReceivedProgress [%p]",this); + if (!H323Connection::OnReceivedProgress(pdu)) + return FALSE; + if (!m_chan) + return FALSE; + m_chan->status("progressing"); + Message *m = m_chan->message("call.progress",false,true); + if (hasRemoteAddress()) { + m->addParam("rtp_forward","yes"); + m->addParam("rtp_addr",m_remoteAddr); + m->addParam("rtp_port",String(m_remotePort)); + m->addParam("formats",m_remoteFormats); + } + Engine::enqueue(m); + return TRUE; +} + void YateH323Connection::OnUserInputTone(char tone, unsigned duration, unsigned logicalChannel, unsigned rtpTimestamp) { Debug(m_chan,DebugInfo,"YateH323Connection::OnUserInputTone '%c' duration=%u [%p]",tone,duration,this);