diff options
Diffstat (limited to 'orkaudio/audiocaptureplugins/voip')
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/Iax2Session.cpp | 1 | ||||
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/VoIp.cpp | 27 | ||||
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp | 2 | ||||
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/VoIpConfig.h | 1 |
4 files changed, 31 insertions, 0 deletions
diff --git a/orkaudio/audiocaptureplugins/voip/Iax2Session.cpp b/orkaudio/audiocaptureplugins/voip/Iax2Session.cpp index 6b072b5..8b6c3e0 100644 --- a/orkaudio/audiocaptureplugins/voip/Iax2Session.cpp +++ b/orkaudio/audiocaptureplugins/voip/Iax2Session.cpp @@ -344,6 +344,7 @@ bool Iax2Session::AddIax2Packet(Iax2PacketInfoRef& iax2Packet) logMsg.Format("[%s] receiving voice packets while in %s state? " "Destroying session...", m_trackingId, iax2_state_to_str(m_iax2_state)); + LOG4CXX_INFO(m_log, logMsg); return false; } diff --git a/orkaudio/audiocaptureplugins/voip/VoIp.cpp b/orkaudio/audiocaptureplugins/voip/VoIp.cpp index ef6807f..1453356 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIp.cpp +++ b/orkaudio/audiocaptureplugins/voip/VoIp.cpp @@ -448,6 +448,9 @@ bool TryIax2New(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* ipHeader, char source_ip[16], dest_ip[16]; CStdString logmsg; + if(!DLLCONFIG.m_iax2Support) + return false; + memset(&ies, 0, sizeof(ies)); udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*fh)) @@ -527,6 +530,9 @@ bool TryIax2Accept(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* ipHeade int ies_len = 0, udp_act_payload_len = 0; Iax2AcceptInfoRef info(new Iax2AcceptInfo()); + if(!DLLCONFIG.m_iax2Support) + return false; + memset(&ies, 0, sizeof(ies)); udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*fh)) @@ -574,6 +580,9 @@ bool TryIax2Authreq(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* ipHead int ies_len = 0, udp_act_payload_len = 0; Iax2AuthreqInfoRef info(new Iax2AuthreqInfo()); + if(!DLLCONFIG.m_iax2Support) + return false; + memset(&ies, 0, sizeof(ies)); udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*fh)) @@ -638,6 +647,9 @@ bool TryIax2Hangup(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* ipHeade int ies_len = 0, udp_act_payload_len = 0; Iax2HangupInfoRef info(new Iax2HangupInfo()); + if(!DLLCONFIG.m_iax2Support) + return false; + memset(&ies, 0, sizeof(ies)); udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*fh)) @@ -682,6 +694,9 @@ bool TryIax2ControlHangup(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* Iax2HangupInfoRef info(new Iax2HangupInfo()); int udp_act_payload_len = 0; + if(!DLLCONFIG.m_iax2Support) + return false; + udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*fh)) return false; /* Frame too small */ @@ -718,6 +733,9 @@ bool TryIax2Reject(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* ipHeade int ies_len = 0, udp_act_payload_len = 0; Iax2HangupInfoRef info(new Iax2HangupInfo()); + if(!DLLCONFIG.m_iax2Support) + return false; + memset(&ies, 0, sizeof(ies)); udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*fh)) @@ -761,6 +779,9 @@ bool TryIax2FullVoiceFrame(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* int data_len = 0, codec = 0, pt = 0, udp_act_payload_len = 0; Iax2PacketInfoRef info(new Iax2PacketInfo()); + if(!DLLCONFIG.m_iax2Support) + return false; + udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*fh)) return false; /* Frame too small */ @@ -819,6 +840,9 @@ bool TryIax2MetaTrunkFrame(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* int entries = 0, udp_act_payload_len = 0; Iax2PacketInfoRef info(new Iax2PacketInfo()); + if(!DLLCONFIG.m_iax2Support) + return false; + udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*mh)) return false; /* Frame too small */ @@ -926,6 +950,9 @@ bool TryIax2MiniVoiceFrame(EthernetHeaderStruct* ethernetHeader, IpHeaderStruct* int data_len = 0, udp_act_payload_len = 0; Iax2PacketInfoRef info(new Iax2PacketInfo()); + if(!DLLCONFIG.m_iax2Support) + return false; + udp_act_payload_len = (ntohs(udpHeader->len)-sizeof(UdpHeaderStruct)); if(udp_act_payload_len < sizeof(*mini)) return false; /* Frame too small */ diff --git a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp index 9ecb4c6..88f0769 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp +++ b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp @@ -35,6 +35,7 @@ VoIpConfig::VoIpConfig() m_pcapTest= false; m_rtpDiscontinuityDetect = false; m_rtpDiscontinuityMinSeqDelta = 1000; + m_iax2Support = true; // Enabled by default } void VoIpConfig::Define(Serializer* s) @@ -61,6 +62,7 @@ void VoIpConfig::Define(Serializer* s) s->BoolValue("RtpDiscontinuityDetect", m_rtpDiscontinuityDetect); s->IntValue("RtpDiscontinuityMinSeqDelta", m_rtpDiscontinuityMinSeqDelta); s->CsvValue("DnisNumbers", m_dnisNumbers); + s->BoolValue("Iax2Support", m_iax2Support); } void VoIpConfig::Validate() diff --git a/orkaudio/audiocaptureplugins/voip/VoIpConfig.h b/orkaudio/audiocaptureplugins/voip/VoIpConfig.h index 3b633a7..7d37214 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIpConfig.h +++ b/orkaudio/audiocaptureplugins/voip/VoIpConfig.h @@ -68,6 +68,7 @@ public: bool m_pcapTest; bool m_rtpDiscontinuityDetect; int m_rtpDiscontinuityMinSeqDelta; + bool m_iax2Support; std::list<CStdString> m_dnisNumbers; }; |