9#define RESIPROCATE_SUBSYSTEM Subsystem::DUM
12 mHasOutboundDecorator(false)
18 mHasOutboundDecorator(false),
19 mBaseProfile(baseProfile)
63 mDefaultRegistrationExpires = secs;
64 mHasDefaultRegistrationExpires =
true;
71 if (!mHasDefaultRegistrationExpires && mBaseProfile)
73 return mBaseProfile->getDefaultRegistrationTime();
75 return mDefaultRegistrationExpires;
83 mHasDefaultRegistrationExpires =
false;
87 mHasDefaultRegistrationExpires =
true;
88 mDefaultRegistrationExpires = 3600;
95 mDefaultMaxRegistrationExpires = secs;
96 mHasDefaultMaxRegistrationExpires =
true;
103 if (!mHasDefaultMaxRegistrationExpires && mBaseProfile)
105 return mBaseProfile->getDefaultMaxRegistrationTime();
107 return mDefaultMaxRegistrationExpires;
115 mHasDefaultMaxRegistrationExpires =
false;
119 mHasDefaultMaxRegistrationExpires =
true;
120 mDefaultMaxRegistrationExpires = 0;
127 mDefaultRegistrationRetryInterval = secs;
128 mHasDefaultRegistrationRetryInterval =
true;
135 if (!mHasDefaultRegistrationRetryInterval && mBaseProfile)
137 return mBaseProfile->getDefaultRegistrationRetryTime();
139 return mDefaultRegistrationRetryInterval;
147 mHasDefaultRegistrationRetryInterval =
false;
151 mHasDefaultRegistrationRetryInterval =
true;
152 mDefaultRegistrationRetryInterval = 0;
159 mDefaultSubscriptionExpires = secs;
160 mHasDefaultSubscriptionExpires =
true;
167 if (!mHasDefaultSubscriptionExpires && mBaseProfile)
169 return mBaseProfile->getDefaultSubscriptionTime();
171 return mDefaultSubscriptionExpires;
179 mHasDefaultSubscriptionExpires =
false;
183 mHasDefaultSubscriptionExpires =
true;
184 mDefaultSubscriptionExpires = 3600;
191 mDefaultPublicationExpires = secs;
192 mHasDefaultPublicationExpires =
true;
199 if (!mHasDefaultPublicationExpires && mBaseProfile)
201 return mBaseProfile->getDefaultPublicationTime();
203 return mDefaultPublicationExpires;
211 mHasDefaultPublicationExpires =
false;
215 mHasDefaultPublicationExpires =
true;
216 mDefaultPublicationExpires = 3600;
223 mDefaultStaleCallTime = secs;
224 mHasDefaultStaleCallTime =
true;
231 if (!mHasDefaultStaleCallTime && mBaseProfile)
233 return mBaseProfile->getDefaultStaleCallTime();
235 return mDefaultStaleCallTime;
243 mHasDefaultStaleCallTime =
false;
247 mHasDefaultStaleCallTime =
true;
248 mDefaultStaleCallTime = 180;
255 mDefaultStaleReInviteTime = secs;
256 mHasDefaultStaleReInviteTime =
true;
263 if (!mHasDefaultStaleReInviteTime && mBaseProfile)
265 return mBaseProfile->getDefaultStaleReInviteTime();
267 return mDefaultStaleReInviteTime;
275 mHasDefaultStaleReInviteTime =
false;
279 mHasDefaultStaleReInviteTime =
true;
280 mDefaultStaleReInviteTime = 40;
287 mDefaultSessionExpires = secs;
288 mHasDefaultSessionExpires =
true;
295 if (!mHasDefaultSessionExpires && mBaseProfile)
297 return mBaseProfile->getDefaultSessionTime();
299 return mDefaultSessionExpires;
307 mHasDefaultSessionExpires =
false;
311 mHasDefaultSessionExpires =
true;
312 mDefaultSessionExpires = 1800;
319 mDefaultSessionTimerMode = mode;
320 mHasDefaultSessionTimerMode =
true;
327 if (!mHasDefaultSessionTimerMode && mBaseProfile)
329 return mBaseProfile->getDefaultSessionTimerMode();
331 return mDefaultSessionTimerMode;
339 mHasDefaultSessionTimerMode =
false;
343 mHasDefaultSessionTimerMode =
true;
351 m1xxRetransmissionTime = secs;
352 mHas1xxRetransmissionTime =
true;
359 if (!mHas1xxRetransmissionTime && mBaseProfile)
361 return mBaseProfile->get1xxRetransmissionTime();
363 return m1xxRetransmissionTime;
371 mHas1xxRetransmissionTime =
false;
375 mHas1xxRetransmissionTime =
true;
376 m1xxRetransmissionTime = 60;
383 m1xxRelResubmitTime = secs;
384 mHas1xxRelResubmitTime =
true;
391 if (!mHas1xxRelResubmitTime && mBaseProfile)
393 return mBaseProfile->get1xxRelResubmitTime();
395 return m1xxRelResubmitTime;
403 mHas1xxRelResubmitTime =
false;
407 mHas1xxRelResubmitTime =
true;
408 m1xxRelResubmitTime = 150;
415 mOverrideHostPort = hostPort;
416 mHasOverrideHostPort =
true;
423 if (!mHasOverrideHostPort && mBaseProfile)
425 return mBaseProfile->hasOverrideHostAndPort();
427 return mHasOverrideHostPort;
434 if (!mHasOverrideHostPort && mBaseProfile)
436 return mBaseProfile->getOverrideHostAndPort();
438 return mOverrideHostPort;
444 mHasOverrideHostPort =
false;
451 header == Headers::AcceptEncoding ||
452 header == Headers::AcceptLanguage ||
453 header == Headers::AllowEvents ||
454 header == Headers::Supported);
456 mAdvertisedCapabilities.insert(header);
457 mHasAdvertisedCapabilities =
true;
464 if (!mHasAdvertisedCapabilities && mBaseProfile)
466 return mBaseProfile->isAdvertisedCapability(header);
468 return mAdvertisedCapabilities.find(header) != mAdvertisedCapabilities.end();
474 mHasAdvertisedCapabilities =
true;
475 return mAdvertisedCapabilities.clear();
483 mHasAdvertisedCapabilities =
false;
487 mHasAdvertisedCapabilities =
true;
499 mHasOutboundProxy =
true;
506 if (!mHasOutboundProxy && mBaseProfile)
508 return mBaseProfile->getOutboundProxy();
511 return mOutboundProxy;
518 if (!mHasOutboundProxy && mBaseProfile)
520 return mBaseProfile->hasOutboundProxy();
522 return mHasOutboundProxy;
528 mHasOutboundProxy =
false;
534 mForceOutboundProxyOnAllRequestsEnabled = enabled;
535 mHasForceOutboundProxyOnAllRequestsEnabled =
true;
542 if (!mHasForceOutboundProxyOnAllRequestsEnabled && mBaseProfile)
544 return mBaseProfile->getForceOutboundProxyOnAllRequestsEnabled();
546 return mForceOutboundProxyOnAllRequestsEnabled;
554 mHasForceOutboundProxyOnAllRequestsEnabled =
false;
558 mHasForceOutboundProxyOnAllRequestsEnabled =
true;
559 mForceOutboundProxyOnAllRequestsEnabled =
false;
566 mExpressOutboundAsRouteSetEnabled = enabled;
567 mHasExpressOutboundAsRouteSetEnabled =
true;
574 if (!mHasExpressOutboundAsRouteSetEnabled && mBaseProfile)
576 return mBaseProfile->getExpressOutboundAsRouteSetEnabled();
578 return mExpressOutboundAsRouteSetEnabled;
586 mHasExpressOutboundAsRouteSetEnabled =
false;
590 mHasExpressOutboundAsRouteSetEnabled =
true;
591 mExpressOutboundAsRouteSetEnabled =
false;
598 mRportEnabled = enabled;
599 mHasRportEnabled =
true;
606 if (!mHasRportEnabled && mBaseProfile)
608 return mBaseProfile->getRportEnabled();
610 return mRportEnabled;
618 mHasRportEnabled =
false;
622 mHasRportEnabled =
true;
623 mRportEnabled =
true;
630 mUserAgent = userAgent;
631 mHasUserAgent =
true;
638 if (!mHasUserAgent && mBaseProfile)
640 return mBaseProfile->getUserAgent();
650 if (!mHasUserAgent && mBaseProfile)
652 return mBaseProfile->hasUserAgent();
654 return mHasUserAgent;
660 mHasUserAgent =
false;
666 mProxyRequires = proxyRequires;
667 mHasProxyRequires =
true;
674 if (!mHasProxyRequires && mBaseProfile)
676 return mBaseProfile->getProxyRequires();
679 return mProxyRequires;
686 if (!mHasProxyRequires && mBaseProfile)
688 return mBaseProfile->hasProxyRequires();
690 return mHasProxyRequires;
696 mHasProxyRequires =
false;
702 mKeepAliveTimeForDatagram = keepAliveTime;
703 mHasKeepAliveTimeForDatagram =
true;
710 if (!mHasKeepAliveTimeForDatagram && mBaseProfile)
712 return mBaseProfile->getKeepAliveTimeForDatagram();
714 return mKeepAliveTimeForDatagram;
722 mHasKeepAliveTimeForDatagram =
false;
726 mHasKeepAliveTimeForDatagram =
true;
727 mKeepAliveTimeForDatagram = 30;
734 mKeepAliveTimeForStream = keepAliveTime;
735 mHasKeepAliveTimeForStream =
true;
742 if (!mHasKeepAliveTimeForStream && mBaseProfile)
744 return mBaseProfile->getKeepAliveTimeForStream();
746 return mKeepAliveTimeForStream;
754 mHasKeepAliveTimeForStream =
false;
758 mHasKeepAliveTimeForStream =
true;
759 mKeepAliveTimeForStream = 180;
766 mFixedTransportPort = fixedTransportPort;
767 mHasFixedTransportPort =
true;
774 if (!mHasFixedTransportPort && mBaseProfile)
776 return mBaseProfile->getFixedTransportPort();
778 return mFixedTransportPort;
786 mHasFixedTransportPort =
false;
790 mHasFixedTransportPort =
true;
791 mFixedTransportPort = 0;
798 mFixedTransportInterface = fixedTransportInterface;
799 mHasFixedTransportInterface =
true;
806 if (!mHasFixedTransportInterface && mBaseProfile)
808 return mBaseProfile->getFixedTransportInterface();
810 return mFixedTransportInterface;
818 mHasFixedTransportInterface =
false;
822 mHasFixedTransportInterface =
true;
831 mRinstanceEnabled = enabled;
832 mHasRinstanceEnabled =
true;
839 if (!mHasRinstanceEnabled && mBaseProfile)
841 return mBaseProfile->getRinstanceEnabled();
843 return mRinstanceEnabled;
851 mHasRinstanceEnabled =
false;
855 mHasRinstanceEnabled =
true;
856 mRinstanceEnabled =
true;
868 mOutboundDecorator = outboundDecorator;
869 mHasOutboundDecorator =
true;
872std::shared_ptr<MessageDecorator>
876 if (!mHasOutboundDecorator && mBaseProfile)
878 return mBaseProfile->getOutboundDecorator();
880 return mOutboundDecorator;
886 if (mHasOutboundDecorator)
888 mOutboundDecorator.reset();
891 mHasOutboundDecorator =
false;
897 mMethodsParamEnabled = enabled;
898 mHasMethodsParamEnabled =
true;
905 if (!mHasMethodsParamEnabled && mBaseProfile)
907 return mBaseProfile->getMethodsParamEnabled();
909 return mMethodsParamEnabled;
917 mHasMethodsParamEnabled =
false;
921 mHasMethodsParamEnabled =
true;
922 mMethodsParamEnabled =
false;
929 mUserAgentCapabilities = capabilities;
930 mHasUserAgentCapabilities =
true;
937 if (!mHasUserAgentCapabilities && mBaseProfile)
939 return mBaseProfile->getUserAgentCapabilities();
942 return mUserAgentCapabilities;
949 if (!mHasUserAgentCapabilities && mBaseProfile)
951 return mBaseProfile->hasUserAgentCapabilities();
953 return mHasUserAgentCapabilities;
959 mHasUserAgentCapabilities =
false;
965 mExtraHeadersInReferNotifySipFragEnabled = enabled;
966 mHasExtraHeadersInReferNotifySipFragEnabled =
true;
973 if (!mHasExtraHeadersInReferNotifySipFragEnabled && mBaseProfile)
975 return mBaseProfile->getExtraHeadersInReferNotifySipFragEnabled();
977 return mExtraHeadersInReferNotifySipFragEnabled;
985 mHasExtraHeadersInReferNotifySipFragEnabled =
false;
989 mHasExtraHeadersInReferNotifySipFragEnabled =
true;
990 mExtraHeadersInReferNotifySipFragEnabled =
false;
997 mHandleInviteSession491AsGeneralFailureEnabled = enabled;
998 mHasHandleInviteSession491AsGeneralFailureEnabled =
true;
1005 if(!mHasHandleInviteSession491AsGeneralFailureEnabled && mBaseProfile.get())
1007 return mBaseProfile->getHandleInviteSession491AsGeneralFailureEnabled();
1009 return mHandleInviteSession491AsGeneralFailureEnabled;
1015 if(mBaseProfile.get())
1017 mHasHandleInviteSession491AsGeneralFailureEnabled =
false;
1021 mHasHandleInviteSession491AsGeneralFailureEnabled =
true;
1022 mHandleInviteSession491AsGeneralFailureEnabled =
false;
#define resip_assert(x)
This file needs to work for both C and C++ code.
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
static const Data Empty
Constant that represents a zero-length data.
Represents the "name-addr" and the "addr-spec" elements in the RFC 3261 grammar.
virtual void unsetAdvertisedCapabilities()
virtual void unsetOutboundDecorator() noexcept
virtual void set1xxRetransmissionTime(int secs) noexcept
The amount of time that can pass before dum will resubmit an unreliable provisional response.
virtual void unsetDefaultPublicationTime() noexcept
virtual void unsetKeepAliveTimeForStream() noexcept
virtual void setDefaultSessionTime(uint32_t secs) noexcept
Only used if timer option tag is set in MasterProfile.
virtual bool getMethodsParamEnabled() const noexcept
virtual void setFixedTransportInterface(const Data &fixedTransportInterface)
If set dum will provide a interface in the via for requests sent down to the stack.
virtual void unsetDefaultRegistrationTime() noexcept
virtual void setKeepAliveTimeForStream(int keepAliveTime) noexcept
virtual void unsetKeepAliveTimeForDatagram() noexcept
virtual int getKeepAliveTimeForStream() const noexcept
virtual void unsetOutboundProxy() noexcept
virtual void unsetDefaultRegistrationRetryTime() noexcept
virtual void setDefaultPublicationTime(uint32_t secs) noexcept
This default is used if no value is passed in when creating a publication.
virtual bool hasOverrideHostAndPort() const noexcept
virtual void unsetDefaultSubscriptionTime() noexcept
virtual void setUserAgent(const Data &userAgent)
if set then UserAgent header is added to outbound messages
virtual void clearAdvertisedCapabilities() noexcept
virtual void setDefaultSubscriptionTime(uint32_t secs) noexcept
This default is used if no value is passed in when creating a subscription.
virtual void setDefaultStaleCallTime(int secs) noexcept
Call is stale if UAC gets no final response within the stale call timeout (default 3 minutes)
virtual bool getHandleInviteSession491AsGeneralFailureEnabled() const
virtual void setForceOutboundProxyOnAllRequestsEnabled(bool enabled) noexcept
If enabled, forces use of outbound proxy on all requests, including mid-dialog requests.
virtual void setDefaultRegistrationTime(uint32_t secs) noexcept
Note: setXXXX methods will set this setting internally in this object.
virtual void setHandleInviteSession491AsGeneralFailureEnabled(bool enabled)
virtual void unsetExpressOutboundAsRouteSetEnabled() noexcept
virtual void setKeepAliveTimeForDatagram(int keepAliveTime) noexcept
time between CR/LF keepalive messages in seconds.
virtual void unsetForceOutboundProxyOnAllRequestsEnabled() noexcept
virtual void setDefaultRegistrationRetryTime(int secs) noexcept
The time to retry registrations on error responses (if Retry-After header is not present in error) Se...
virtual void unsetHandleInviteSession491AsGeneralFailureEnabled()
virtual const NameAddr & getOutboundProxy() const
virtual void setOverrideHostAndPort(const Uri &hostPort)
overrides the value used to populate the contact ?dcm? – also change via entries? Also,...
virtual bool getExtraHeadersInReferNotifySipFragEnabled() const noexcept
virtual void unsetUserAgent() noexcept
virtual void setUserAgentCapabilities(const NameAddr &capabilities)
If set, the parameters on the provided NameAddr are used in the contact header Example: #include <res...
virtual uint32_t getDefaultSessionTime() const noexcept
virtual bool getForceOutboundProxyOnAllRequestsEnabled() const noexcept
virtual int getKeepAliveTimeForDatagram() const noexcept
virtual void unsetProxyRequires() noexcept
virtual void unsetFixedTransportPort() noexcept
virtual void setProxyRequires(const Tokens &proxyRequires)
if set then ProxyRequires header is added to outbound messages
virtual const Data & getUserAgent() const
virtual std::shared_ptr< MessageDecorator > getOutboundDecorator() noexcept
virtual uint32_t getDefaultSubscriptionTime() const noexcept
virtual int getDefaultStaleCallTime() const noexcept
virtual void setOutboundDecorator(std::shared_ptr< MessageDecorator > outboundDecorator) noexcept
virtual void reset()
Reset this profile to it's initial state - (same as calling unsetXXX for each setting) If no fall thr...
virtual bool getRinstanceEnabled() const noexcept
virtual const Tokens & getProxyRequires() const
virtual void unsetRinstanceEnabled() noexcept
virtual void unsetExtraHeadersInReferNotifySipFragEnabled() noexcept
virtual void setFixedTransportPort(int fixedTransportPort) noexcept
If set dum will provide a port in the via for requests sent down to the stack.
virtual void setDefaultStaleReInviteTime(int secs) noexcept
ReInvite is stale if UAC gets no final response within the stale reinvite timeout (default 40 seconds...
virtual void unsetUserAgentCapabilities() noexcept
virtual const Uri & getOverrideHostAndPort() const
virtual void addAdvertisedCapability(Headers::Type header)
enable/disable sending of Allow/Supported/Accept-Language/Accept-Encoding headers on initial outbound...
virtual void unsetDefaultStaleCallTime() noexcept
virtual void setExtraHeadersInReferNotifySipFragEnabled(bool enabled) noexcept
If enabled then dialog identifying headers are added to SipFrag bodies that are generated in an Invit...
virtual void unsetOverrideHostAndPort() noexcept
virtual int get1xxRetransmissionTime() const noexcept
virtual bool hasUserAgent() const noexcept
virtual void unsetDefaultSessionTimerMode() noexcept
virtual int getFixedTransportPort() const noexcept
virtual void setExpressOutboundAsRouteSetEnabled(bool enabled) noexcept
If enabled, add a route header for the outbound proxy.
virtual int getDefaultStaleReInviteTime() const noexcept
virtual void unsetDefaultStaleReInviteTime() noexcept
virtual uint32_t getDefaultPublicationTime() const noexcept
virtual void unset1xxRetransmissionTime() noexcept
virtual bool hasProxyRequires() const noexcept
virtual bool getExpressOutboundAsRouteSetEnabled() const noexcept
virtual const Data & getFixedTransportInterface() const
virtual void unsetFixedTransportInterface()
virtual Profile::SessionTimerMode getDefaultSessionTimerMode() const noexcept
virtual uint32_t getDefaultRegistrationTime() const noexcept
virtual void set1xxRelResubmitTime(int secs) noexcept
The amount of time that can pass before dum will resubmit a reliable provisional response.
virtual int get1xxRelResubmitTime() const noexcept
virtual const NameAddr & getUserAgentCapabilities() const
virtual void setRinstanceEnabled(bool enabled) noexcept
If enabled then rinstance parameter is added to contacts.
virtual bool isAdvertisedCapability(Headers::Type header) const
virtual int getDefaultRegistrationRetryTime() const noexcept
virtual bool hasOutboundProxy() const noexcept
virtual bool hasUserAgentCapabilities() const noexcept
virtual void setDefaultSessionTimerMode(Profile::SessionTimerMode mode) noexcept
virtual void unsetDefaultMaxRegistrationTime() noexcept
virtual void unsetDefaultSessionTime() noexcept
virtual void setOutboundProxy(const Uri &uri)
Use to route all outbound requests through a particular proxy.
virtual void setRportEnabled(bool enabled) noexcept
enable/disable rport for requests. rport is enabled by default
virtual void setDefaultMaxRegistrationTime(uint32_t secs) noexcept
If a registration gets rejected with a 423, then we ensure the MinExpires value is less than this bef...
virtual bool getRportEnabled() const noexcept
virtual void unsetMethodsParamEnabled() noexcept
virtual uint32_t getDefaultMaxRegistrationTime() const noexcept
virtual void unsetRportEnabled() noexcept
virtual void unset1xxRelResubmitTime() noexcept
virtual void setMethodsParamEnabled(bool enabled) noexcept
If enabled then methods parameter is added to contacts.
SessionTimerMode
Only used if timer option tag is set in MasterProfile.
Represents the "SIP-URI" and "SIPS-URI" elements in the RFC 3261 grammar.
const Data & param(const ExtensionParameter ¶m) const
Const accessor for non-natively-supported parameter types.
dcm! – add UnusedChecking(_enum) below;