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>
42using namespace std::literals;
68 std::string
value(
hdr->hvalue.ptr,
hdr->hvalue.slen);
72 if (
pos != std::string::npos)
85 size_t found =
route.find(
':');
86 if (found != std::string::npos) {
117 return std::string(displayName);
141 if (found != std::string_view::npos)
146 if (found != std::string_view::npos)
150 if (found != std::string_view::npos)
154 if (found != std::string_view::npos)
163 auto found = uri.find(
'@');
164 if (found != std::string_view::npos)
165 uri = uri.substr(found + 1);
167 found = uri.find(
'>');
168 if (found != std::string_view::npos)
169 uri = uri.substr(0, found);
178 JAMI_WARN(
"Contact header is unable to be added (empty string)");
217 if (
hdr !=
nullptr) {
225 if (
rdata ==
nullptr or rdata->msg_info.msg ==
nullptr) {
226 JAMI_ERR(
"Unexpected null pointer!");
238std::vector<std::string>
241 if (
rdata ==
nullptr or rdata->msg_info.msg ==
nullptr) {
242 JAMI_ERR(
"Unexpected null pointer!");
246 std::vector<std::string>
methods;
251 if (
allow !=
nullptr) {
253 for (
unsigned i = 0;
i <
allow->count;
i++) {
266 std::string
msgHdrStr(
"Message headers:\n");
284 return std::string {
ret.ptr,
ret.ptr +
ret.slen};
291 return fmt::format(
"host_{}",
label);
292 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()