diff --git a/daemon/src/sip/siptransport.cpp b/daemon/src/sip/siptransport.cpp index b6f77c4885027d03f1e67555f96331c63dcae44d..eabc34e7d43646a9f2f95289a591be493e84c4e9 100644 --- a/daemon/src/sip/siptransport.cpp +++ b/daemon/src/sip/siptransport.cpp @@ -112,7 +112,10 @@ SipTransport::stateToStr(pjsip_transport_state state) } SipTransportBroker::SipTransportBroker(pjsip_endpoint *endpt, pj_caching_pool& cp, pj_pool_t& pool) : -iceTransports_(), cp_(cp), pool_(pool), endpt_(endpt) +#if HAVE_DHT +iceTransports_(), +#endif +cp_(cp), pool_(pool), endpt_(endpt) { instance = this; auto status = pjsip_tpmgr_set_state_cb(pjsip_endpt_get_tpmgr(endpt_), SipTransportBroker::tp_state_callback); @@ -121,7 +124,9 @@ iceTransports_(), cp_(cp), pool_(pool), endpt_(endpt) sip_utils::sip_strerror(status); } +#if HAVE_DHT pjsip_transport_register_type(PJSIP_TRANSPORT_DATAGRAM, "ICE", pjsip_transport_get_default_port_for_type(PJSIP_TRANSPORT_UDP), &ice_pj_transport_type_); +#endif } SipTransportBroker::~SipTransportBroker() @@ -186,7 +191,9 @@ SipTransportBroker::transportStateChanged(pjsip_transport* tp, pjsip_transport_s udpTransports_.erase(transport_key); transportDestroyedCv_.notify_all(); } - } else if (type == ice_pj_transport_type_) { + } +#if HAVE_DHT + else if (type == ice_pj_transport_type_) { SFL_WARN("ICE transport destroy"); std::unique_lock<std::mutex> lock(iceMutex_); const auto transport_key = std::find_if(iceTransports_.begin(), iceTransports_.end(), [tp](const SipIceTransport& i) { @@ -195,6 +202,7 @@ SipTransportBroker::transportStateChanged(pjsip_transport* tp, pjsip_transport_s if (transport_key != iceTransports_.end()) iceTransports_.erase(transport_key); } +#endif } } @@ -369,6 +377,7 @@ SipTransportBroker::getTlsTransport(const std::shared_ptr<TlsListener>& l, const } #endif +#if HAVE_DHT std::shared_ptr<SipTransport> SipTransportBroker::getIceTransport(const std::shared_ptr<sfl::IceTransport>& ice) { @@ -383,6 +392,7 @@ SipTransportBroker::getIceTransport(const std::shared_ptr<sfl::IceTransport>& ic sip_ice_tr.start(); return ret; } +#endif std::vector<pj_sockaddr> SipTransportBroker::getSTUNAddresses(const pj_str_t serverName, pj_uint16_t port, std::vector<long> &socketDescriptors) const diff --git a/daemon/src/sip/siptransport.h b/daemon/src/sip/siptransport.h index 97abea957f445b631222ad3a8ac562fa84f0b6df..6301d4d0e2256b40bc4e2da6d6eff7415abf1faa 100644 --- a/daemon/src/sip/siptransport.h +++ b/daemon/src/sip/siptransport.h @@ -178,7 +178,9 @@ public: std::shared_ptr<SipTransport> getTlsTransport(const std::shared_ptr<TlsListener>&, const IpAddr& remote); #endif +#if HAVE_DHT std::shared_ptr<SipTransport> getIceTransport(const std::shared_ptr<sfl::IceTransport>&); +#endif std::shared_ptr<SipTransport> findTransport(pjsip_transport*); @@ -247,8 +249,12 @@ private: /** * Storage for SIP/ICE transport instances. */ +#if HAVE_DHT + int ice_pj_transport_type_ {PJSIP_TRANSPORT_START_OTHER}; + std::list<SipIceTransport> iceTransports_; std::mutex iceMutex_ {}; +#endif std::mutex transportMapMutex_ {}; std::condition_variable transportDestroyedCv_ {}; @@ -257,7 +263,6 @@ private: pj_pool_t& pool_; pjsip_endpoint *endpt_; - int ice_pj_transport_type_ {PJSIP_TRANSPORT_START_OTHER}; }; #endif // SIPTRANSPORT_H_