24#include <pjlib-util.h>
26#include <pjnath/stun_config.h>
28#include <pjsip/sip_types.h>
29#include <pjsip/sip_uri.h>
34#include <sys/socket.h>
35#include <netinet/in.h>
41using namespace std::literals;
66 std::string value(
hdr->hvalue.ptr,
hdr->hvalue.slen);
68 size_t pos = value.find(
'\n');
70 if (
pos != std::string::npos)
71 return value.substr(0,
pos);
83 size_t found =
route.find(
':');
84 if (found != std::string::npos) {
115 return std::string(displayName);
139 if (found != std::string_view::npos)
144 if (found != std::string_view::npos)
148 if (found != std::string_view::npos)
152 if (found != std::string_view::npos)
161 auto found = uri.find(
'@');
162 if (found != std::string_view::npos)
163 uri = uri.substr(found + 1);
165 found = uri.find(
'>');
166 if (found != std::string_view::npos)
167 uri = uri.substr(0, found);
176 JAMI_WARN(
"Contact header is unable to be added (empty string)");
211 if (
hdr !=
nullptr) {
219 if (
rdata ==
nullptr or rdata->msg_info.msg ==
nullptr) {
220 JAMI_ERR(
"Unexpected null pointer!");
232std::vector<std::string>
235 if (
rdata ==
nullptr or rdata->msg_info.msg ==
nullptr) {
236 JAMI_ERR(
"Unexpected null pointer!");
240 std::vector<std::string>
methods;
245 if (
allow !=
nullptr) {
247 for (
unsigned i = 0;
i <
allow->count;
i++) {
260 std::string
msgHdrStr(
"Message headers:\n");
278 return std::string {
ret.ptr,
ret.ptr +
ret.slen};
285 return fmt::format(
"host_{}",
label);
286 return fmt::format(
"{}_{}", callId,
label);
std::string message(int condition) const override
#define JAMI_LOG(formatstr,...)
std::string fetchHeaderValue(pjsip_msg *msg, const std::string &field)
Helper function to parser header from incoming sip messages.
void logMessageHeaders(const pjsip_hdr *hdr_list)
constexpr pj_str_t USER_AGENT_STR
void addUserAgentHeader(const std::string &userAgent, pjsip_tx_data *tdata)
void addContactHeader(const std::string &contactHdr, pjsip_tx_data *tdata)
std::string_view stripSipUriPrefix(std::string_view sipUri)
std::string_view getHostFromUri(std::string_view uri)
pjsip_route_hdr * createRouteSet(const std::string &route, pj_pool_t *hdr_pool)
std::string sip_strerror(pj_status_t code)
constexpr std::string_view as_view(const pj_str_t &str) noexcept
std::string_view getPeerUserAgent(const pjsip_rx_data *rdata)
std::vector< std::string > getPeerAllowMethods(const pjsip_rx_data *rdata)
std::string parseDisplayName(const pjsip_name_addr *sip_name_addr)
std::string streamId(const std::string &callId, std::string_view label)
void sockaddr_to_host_port(pj_pool_t *pool, pjsip_host_port *host_port, const pj_sockaddr *addr)
constexpr const pj_str_t CONST_PJ_STR(T(&a)[N]) noexcept
bool utf8_validate(std::string_view str)
utf8_validate:
void emitSignal(Args... args)
std::string utf8_make_valid(std::string_view name)
const std::string & userAgent()