From 0289ba68f7d0bfb55cd424a411dfc51188b06d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Tue, 15 Apr 2014 17:45:31 -0400 Subject: [PATCH] sdp: fix failed unit tests --- daemon/src/sip/sdp.cpp | 33 ++++++++++++++++----------------- daemon/src/sip/sdp.h | 16 +++++++++++----- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/daemon/src/sip/sdp.cpp b/daemon/src/sip/sdp.cpp index 4a97ab3ba1..baf845593c 100644 --- a/daemon/src/sip/sdp.cpp +++ b/daemon/src/sip/sdp.cpp @@ -39,7 +39,6 @@ #include "sipaccount.h" #include "manager.h" #include "logger.h" -#include "ip_utils.h" #ifdef SFL_VIDEO #include "video/libav_utils.h" @@ -64,7 +63,7 @@ Sdp::Sdp(pj_pool_t *pool) , sessionAudioMedia_() , sessionVideoMedia_() , publishedIpAddr_() - , publishedIpAddrStr_() + , publishedIpAddrType_() , remoteIpAddr_() , localAudioDataPort_(0) , localAudioControlPort_(0) @@ -342,8 +341,9 @@ Sdp::setMediaDescriptorLines(bool audio) void Sdp::addRTCPAttribute(pjmedia_sdp_media *med) { + auto ip = ip_utils::strToAddr(publishedIpAddr_); pj_sockaddr outputAddr; - pj_sockaddr_cp(&outputAddr, &publishedIpAddr_); + pj_sockaddr_cp(&outputAddr, &ip); pj_sockaddr_set_port(&outputAddr, localAudioControlPort_); pjmedia_sdp_attr *attr = pjmedia_sdp_attr_create_rtcp(memPool_, &outputAddr); if (attr) @@ -351,29 +351,28 @@ void Sdp::addRTCPAttribute(pjmedia_sdp_media *med) } void -Sdp::setPublishedIP(const std::string &ip_addr) +Sdp::setPublishedIP(const std::string &addr, pj_uint16_t addr_type) { - setPublishedIP(ip_utils::strToAddr(ip_addr)); -} - -void -Sdp::setPublishedIP(const pj_sockaddr& ip_addr) -{ - publishedIpAddr_ = ip_addr; - publishedIpAddrStr_ = ip_utils::addrToStr(publishedIpAddr_); - + publishedIpAddr_ = addr; + publishedIpAddrType_ = addr_type; if (localSession_) { - if (publishedIpAddr_.addr.sa_family == pj_AF_INET6()) + if (addr_type == pj_AF_INET6()) localSession_->origin.addr_type = pj_str((char*) "IP6"); else localSession_->origin.addr_type = pj_str((char*) "IP4"); - localSession_->origin.addr = pj_str((char*) publishedIpAddrStr_.c_str()); + localSession_->origin.addr = pj_str((char*) publishedIpAddr_.c_str()); localSession_->conn->addr = localSession_->origin.addr; if (pjmedia_sdp_validate(localSession_) != PJ_SUCCESS) ERROR("Could not validate SDP"); } } +void +Sdp::setPublishedIP(const pj_sockaddr& ip_addr) +{ + setPublishedIP(ip_utils::addrToStr(ip_addr), ip_addr.addr.sa_family); +} + void Sdp::updatePorts(const std::vector<pj_sockaddr> &sockets) { @@ -474,11 +473,11 @@ int Sdp::createLocalSession(const vector<int> &selectedAudioCodecs, const vector // Use Network Time Protocol format timestamp to ensure uniqueness. localSession_->origin.id = tv.sec + 2208988800UL; localSession_->origin.net_type = pj_str((char*) "IN"); - if (publishedIpAddr_.addr.sa_family == pj_AF_INET6()) + if (publishedIpAddrType_ == pj_AF_INET6()) localSession_->origin.addr_type = pj_str((char*) "IP6"); else localSession_->origin.addr_type = pj_str((char*) "IP4"); - localSession_->origin.addr = pj_str((char*) publishedIpAddrStr_.c_str()); + localSession_->origin.addr = pj_str((char*) publishedIpAddr_.c_str()); localSession_->name = pj_str((char*) PACKAGE); diff --git a/daemon/src/sip/sdp.h b/daemon/src/sip/sdp.h index 08764f6258..d263f64fd1 100644 --- a/daemon/src/sip/sdp.h +++ b/daemon/src/sip/sdp.h @@ -34,6 +34,7 @@ #include "global.h" #include "noncopyable.h" +#include "ip_utils.h" #include <pjmedia/sdp.h> #include <pjmedia/sdp_neg.h> @@ -154,13 +155,17 @@ class Sdp { /* * Write accessor. Set the local IP address that will be used in the sdp session */ - void setPublishedIP(const std::string &ip_addr); - void setPublishedIP(const pj_sockaddr& ip_addr); + void setPublishedIP(const std::string &addr, pj_uint16_t addr_type = pj_AF_UNSPEC()); + void setPublishedIP(const pj_sockaddr& addr); /* * Read accessor. Get the local IP address */ - pj_sockaddr getPublishedIP() const { + pj_sockaddr getPublishedIPAddr() const { + return ip_utils::strToAddr(publishedIpAddr_); + } + + std::string getPublishedIP() const { return publishedIpAddr_; } @@ -311,8 +316,9 @@ class Sdp { std::vector<sfl::AudioCodec *> sessionAudioMedia_; std::vector<std::string> sessionVideoMedia_; - pj_sockaddr publishedIpAddr_; - std::string publishedIpAddrStr_; + std::string publishedIpAddr_; + pj_uint16_t publishedIpAddrType_; + std::string remoteIpAddr_; int localAudioDataPort_; -- GitLab