Skip to content
Snippets Groups Projects
Commit 0289ba68 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

sdp: fix failed unit tests

parent ded27dcd
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
......@@ -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_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment