@ -71,7 +71,7 @@ void CXlxProtocol::Task(void)
CVersion Version ;
CVersion Version ;
CDvHeaderPacket * Header ;
CDvHeaderPacket * Header ;
CDvFramePacket * Frame ;
CDvFramePacket * Frame ;
CDvLastFramePacket * LastFrame ;
CDvLastFramePacket * LastFrame = NULL ;
// any incoming packet ?
// any incoming packet ?
if ( m_Socket . Receive ( & Buffer , & Ip , 20 ) ! = - 1 )
if ( m_Socket . Receive ( & Buffer , & Ip , 20 ) ! = - 1 )
@ -104,8 +104,10 @@ void CXlxProtocol::Task(void)
{
{
//std::cout << "XLX (DExtra) DV last frame" << std::endl;
//std::cout << "XLX (DExtra) DV last frame" << std::endl;
// handle it
// tag packet as remote peer origin
OnDvLastFramePacketIn ( LastFrame , & Ip ) ;
LastFrame - > SetRemotePeerOrigin ( ) ;
OnDvFramePacketIn ( ( CDvFramePacket * ) LastFrame , & Ip ) ;
}
}
else if ( IsValidConnectPacket ( Buffer , & Callsign , Modules , & Version ) )
else if ( IsValidConnectPacket ( Buffer , & Callsign , Modules , & Version ) )
{
{
@ -219,6 +221,11 @@ void CXlxProtocol::Task(void)
// handle queue from reflector
// handle queue from reflector
HandleQueue ( ) ;
HandleQueue ( ) ;
if ( LastFrame ! = NULL )
{
CloseStreamForDvLastFramePacket ( LastFrame , & Ip ) ;
}
// keep alive
// keep alive
if ( m_LastKeepaliveTime . DurationSinceNow ( ) > XLX_KEEPALIVE_PERIOD )
if ( m_LastKeepaliveTime . DurationSinceNow ( ) > XLX_KEEPALIVE_PERIOD )
{
{
@ -467,15 +474,6 @@ void CXlxProtocol::OnDvFramePacketIn(CDvFramePacket *DvFrame, const CIp *Ip)
CDextraProtocol : : OnDvFramePacketIn ( DvFrame , Ip ) ;
CDextraProtocol : : OnDvFramePacketIn ( DvFrame , Ip ) ;
}
}
void CXlxProtocol : : OnDvLastFramePacketIn ( CDvLastFramePacket * DvFrame , const CIp * Ip )
{
// tag packet as remote peer origin
DvFrame - > SetRemotePeerOrigin ( ) ;
// anc call base class
CDextraProtocol : : OnDvLastFramePacketIn ( DvFrame , Ip ) ;
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// packet decoding helpers
// packet decoding helpers