Group PJSIP_CONFIG¶
-
group
PJSIP_CONFIG
PJSIP compile time configurations.
Defines
-
PJSIP_MAX_TSX_COUNT
¶ Specify maximum transaction count in transaction hash table. For efficiency, the value should be 2^n-1 since it will be rounded up to 2^n.
Default value is 1023
-
PJSIP_MAX_DIALOG_COUNT
¶ Specify maximum number of dialogs in the dialog hash table. For efficiency, the value should be 2^n-1 since it will be rounded up to 2^n.
Default value is 511.
-
PJSIP_MAX_TRANSPORTS
¶ Specify maximum number of transports. Default value is equal to maximum number of handles in ioqueue. See also PJSIP_TPMGR_HTABLE_SIZE.
-
PJSIP_TPMGR_HTABLE_SIZE
¶ Transport manager hash table size (must be 2^n-1). See also PJSIP_MAX_TRANSPORTS
-
PJSIP_MAX_URL_SIZE
¶ Specify maximum URL size. This constant is used mainly when printing the URL for logging purpose only.
-
PJSIP_MAX_MODULE
¶ Specify maximum number of modules. This mainly affects the size of mod_data array in various components.
-
PJSIP_MAX_PKT_LEN
¶ Maximum packet length. We set it more than MTU since a SIP PDU containing presence information can be quite large (>1500).
-
PJSIP_DONT_SWITCH_TO_TCP
¶ RFC 3261 section 18.1.1: If a request is within 200 bytes of the path MTU, or if it is larger than 1300 bytes and the path MTU is unknown, the request MUST be sent using an RFC 2914 [43] congestion controlled transport protocol, such as TCP.
Disable the behavior of automatic switching to TCP whenever UDP packet size exceeds the threshold defined in PJSIP_UDP_SIZE_THRESHOLD.
This option can also be controlled at run-time by the disable_tcp_switch setting in pjsip_cfg_t.
Default is 0 (no).
-
PJSIP_UDP_SIZE_THRESHOLD
¶ This setting controls the threshold of the UDP packet, which if it’s larger than this value the request will be sent with TCP. This setting is useful only when PJSIP_DONT_SWITCH_TO_TCP is set to 0.
Default is 1300 bytes.
-
PJSIP_ENCODE_SHORT_HNAME
¶ Encode SIP headers in their short forms to reduce size. By default, SIP headers in outgoing messages will be encoded in their full names. If this option is enabled, then SIP headers for outgoing messages will be encoded in their short forms, to reduce message size. Note that this does not affect the ability of PJSIP to parse incoming SIP messages, as the parser always supports parsing both the long and short version of the headers.
Note that there is also an undocumented variable defined in sip_msg.c to control whether compact form should be used for encoding SIP headers. The default value of this variable is PJSIP_ENCODE_SHORT_HNAME. To change PJSIP behavior during run-time, application can use the following construct:
extern pj_bool_t pjsip_use_compact_form; // enable compact form pjsip_use_compact_form = PJ_TRUE;
Default is 0 (no)
-
PJSIP_INCLUDE_ALLOW_HDR_IN_DLG
¶ Send Allow header in dialog establishing requests? RFC 3261 Allow header SHOULD be included in dialog establishing requests to inform remote agent about which SIP requests are allowed within dialog.
Note that there is also an undocumented variable defined in sip_dialog.c to control whether Allow header should be included. The default value of this variable is PJSIP_INCLUDE_ALLOW_HDR_IN_DLG. To change PJSIP behavior during run-time, application can use the following construct:
extern pj_bool_t pjsip_include_allow_hdr_in_dlg; // do not transmit Allow header pjsip_include_allow_hdr_in_dlg = PJ_FALSE;
Default is 1 (Yes)
-
PJSIP_SAFE_MODULE
¶ Allow SIP modules removal or insertions during operation? If yes, then locking will be employed when endpoint need to access module.
-
PJSIP_CHECK_VIA_SENT_BY
¶ Perform Via sent-by checking as specified in RFC 3261 Section 18.1.2, which says that UAC MUST silently discard responses with Via sent-by containing values that the UAC doesn’t recognize as its transport address.
In PJSIP, this will cause response to be discarded and a message is written to the log, saying something like: “Dropping response Response msg 200/INVITE/cseq=608594373 (rdata00A99EF4)
from 1.2.3.4:5060 because sent-by is mismatch”
The default behavior is yes, but when the UA supports IP address change for the SIP transport, it will need to turn this checking off since when the transport address is changed between request is sent and response is received, the response will be discarded since its Via sent-by now contains address that is different than the transport address.
-
PJSIP_UNESCAPE_IN_PLACE
¶ If non-zero, SIP parser will unescape the escape characters (‘’) in the original message, which means that it will modify the original message. Otherwise the parser will create a copy of the string and store the unescaped string to the new location.
Unescaping in-place is faster, but less elegant (and it may break certain applications). So normally it’s disabled, unless when benchmarking (to show off big performance).
Default: 0
-
PJSIP_ALLOW_PORT_IN_FROMTO_HDR
¶ Specify port number should be allowed to appear in To and From header. Note that RFC 3261 disallow this, see Table 1 in section 19.1.1 of the RFC. This setting can also be altered at run-time via pjsip_cfg setting, see pjsip_cfg_t.allow_port_in_fromto_hdr field.
Default: 0
-
PJSIP_MAX_NET_EVENTS
¶ This macro controls maximum numbers of ioqueue events to be processed in a single pjsip_endpt_handle_events() poll. When PJSIP detects that there are probably more events available from the network and total events so far is less than this value, PJSIP will call pj_ioqueue_poll() again to get more events.
Value 1 works best for ioqueue with select() back-end, while for IOCP it is probably best to set this value equal to PJSIP_MAX_TIMED_OUT_ENTRIES since IOCP only processes one event at a time.
Default: 1
-
PJSIP_MAX_TIMED_OUT_ENTRIES
¶ Max entries to process in timer heap per poll.
Default: 10
-
PJSIP_TRANSPORT_IDLE_TIME
¶ Idle timeout interval to be applied to outgoing transports (i.e. client side) with no usage before the transport is destroyed. Value is in seconds.
Note that if the value is put lower than 33 seconds, it may cause some pjsip test units to fail. See the comment on the following link: https://trac.pjsip.org/repos/ticket/1465#comment:4
Default: 33
-
PJSIP_TRANSPORT_SERVER_IDLE_TIME
¶ Idle timeout interval to be applied to incoming transports (i.e. server side) with no usage before the transport is destroyed. Server typically should let client close the connection, hence set this interval to a large value. Value is in seconds.
Default: 600
-
PJSIP_MAX_TRANSPORT_USAGE
¶ Maximum number of usages for a transport before a new transport is created. This only applies for ephemeral transports such as TCP.
Currently this is not used.
Default: -1
-
PJSIP_TCP_TRANSPORT_BACKLOG
¶ The TCP incoming connection backlog number to be set in accept().
Default: 5
-
PJSIP_TCP_KEEP_ALIVE_INTERVAL
¶ Set the interval to send keep-alive packet for TCP transports. If the value is zero, keep-alive will be disabled for TCP.
Default: 90 (seconds)
-
PJSIP_TCP_KEEP_ALIVE_DATA
¶ Set the payload of the TCP keep-alive packet.
Default: CRLF
-
PJSIP_TLS_KEEP_ALIVE_INTERVAL
¶ Set the interval to send keep-alive packet for TLS transports. If the value is zero, keep-alive will be disabled for TLS.
Default: 90 (seconds)
-
PJSIP_TLS_KEEP_ALIVE_DATA
¶ Set the payload of the TLS keep-alive packet.
Default: CRLF
-
PJSIP_HAS_RESOLVER
¶ This macro specifies whether full DNS resolution should be used. When enabled, pjsip_resolve() will perform asynchronous DNS SRV and A (or AAAA, when IPv6 is supported) resolution to resolve the SIP domain.
Note that even when this setting is enabled, asynchronous DNS resolution will only be done when application calls pjsip_endpt_create_resolver(), configure the nameservers with pj_dns_resolver_set_ns(), and configure the SIP endpoint’s DNS resolver with pjsip_endpt_set_resolver(). If these steps are not followed, the domain will be resolved with normal pj_gethostbyname() function.
Turning off this setting will save the footprint by about 16KB, since it should also exclude dns.o and resolve.o from PJLIB-UTIL.
Default: 1 (enabled)
-
PJSIP_MAX_RESOLVED_ADDRESSES
¶ Maximum number of addresses returned by the resolver. The number here will slightly affect stack usage, since each entry will occupy about 32 bytes of stack memory.
Default: 8
-
PJSIP_HAS_TLS_TRANSPORT
¶ Enable TLS SIP transport support. For most systems this means that OpenSSL must be installed.
Default: follow PJ_HAS_SSL_SOCK setting, which is 0 (disabled) by default.
-
PJSIP_TLS_TRANSPORT_BACKLOG
¶ The TLS pending incoming connection backlog number to be set in accept().
Default: 5
-
PJSIP_MAX_TIMER_COUNT
¶
-
PJSIP_POOL_LEN_ENDPT
¶ Initial memory block for the endpoint.
-
PJSIP_POOL_INC_ENDPT
¶ Memory increment for endpoint.
-
PJSIP_POOL_RDATA_LEN
¶ Initial memory block for rdata.
-
PJSIP_POOL_RDATA_INC
¶ Memory increment for rdata.
-
PJSIP_POOL_LEN_TRANSPORT
¶
-
PJSIP_POOL_INC_TRANSPORT
¶
-
PJSIP_POOL_LEN_TDATA
¶ Initial memory block size for tdata.
-
PJSIP_POOL_INC_TDATA
¶ Memory increment for tdata.
-
PJSIP_POOL_LEN_UA
¶ Initial memory size for UA layer
-
PJSIP_POOL_INC_UA
¶ Memory increment for UA layer.
-
PJSIP_MAX_FORWARDS_VALUE
¶
-
PJSIP_RFC3261_BRANCH_ID
¶
-
PJSIP_RFC3261_BRANCH_LEN
¶
-
PJSIP_POOL_TSX_LAYER_LEN
¶ Initial memory size for transaction layer. The bulk of pool usage for transaction layer will be used to create the hash table, so setting this value too high will not help too much with reducing fragmentation and the memory will most likely be wasted.
-
PJSIP_POOL_TSX_LAYER_INC
¶ Memory increment for transaction layer. The bulk of pool usage for transaction layer will be used to create the hash table, so setting this value too high will not help too much with reducing fragmentation and the memory will most likely be wasted.
-
PJSIP_POOL_TSX_LEN
¶ Initial memory size for a SIP transaction object.
-
PJSIP_POOL_TSX_INC
¶ Memory increment for transaction object.
-
PJSIP_TSX_1XX_RETRANS_DELAY
¶ Delay for non-100 1xx retransmission, in seconds. Set to 0 to disable this feature.
Default: 60 seconds
-
PJSIP_MAX_TSX_KEY_LEN
¶
-
PJSIP_POOL_LEN_USER_AGENT
¶
-
PJSIP_POOL_INC_USER_AGENT
¶
-
PJSIP_MAX_CALL_ID_LEN
¶
-
PJSIP_MAX_TAG_LEN
¶
-
PJSIP_MAX_BRANCH_LEN
¶
-
PJSIP_MAX_HNAME_LEN
¶
-
PJSIP_POOL_LEN_DIALOG
¶
-
PJSIP_POOL_INC_DIALOG
¶
-
PJSIP_MAX_HEADER_TYPES
¶
-
PJSIP_MAX_URI_TYPES
¶
-
PJSIP_T1_TIMEOUT
¶ Transaction T1 timeout value.
-
PJSIP_T2_TIMEOUT
¶ Transaction T2 timeout value.
-
PJSIP_T4_TIMEOUT
¶ Transaction completed timer for non-INVITE
-
PJSIP_TD_TIMEOUT
¶ Transaction completed timer for INVITE
-
PJSIP_AUTH_HEADER_CACHING
¶ If this flag is set, the stack will keep the Authorization/Proxy-Authorization headers that are sent in a cache. Future requests with the same realm and the same method will use the headers in the cache (as long as no qop is required by server).
Turning on this flag will make authorization process goes faster, but will grow the memory usage undefinitely until the dialog/registration session is terminated.
Default: 0
-
PJSIP_AUTH_AUTO_SEND_NEXT
¶ If this flag is set, the stack will proactively send Authorization/Proxy- Authorization header for next requests. If next request has the same method with any of previous requests, then the last header which is saved in the cache will be used (if PJSIP_AUTH_CACHING is set). Otherwise a fresh header will be recalculated. If a particular server has requested qop, then a fresh header will always be calculated.
If this flag is NOT set, then the stack will only send Authorization/Proxy- Authorization headers when it receives 401/407 response from server.
Turning ON this flag will grow memory usage of a dialog/registration pool indefinitely until it is terminated, because the stack needs to keep the last WWW-Authenticate/Proxy-Authenticate challenge.
Default: 0
-
PJSIP_AUTH_QOP_SUPPORT
¶ Support qop=”auth” directive. This option also requires client to cache the last challenge offered by server.
Default: 1
-
PJSIP_MAX_STALE_COUNT
¶ Maximum number of stale retries when server keeps rejecting our request with stale=true.
Default: 3
-
PJSIP_HAS_DIGEST_AKA_AUTH
¶ Specify support for IMS/3GPP digest AKA authentication version 1 and 2 (AKAv1-MD5 and AKAv2-MD5 respectively).
Default: 0 (for now)
-
PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH
¶ Specify the number of seconds to refresh the client registration before the registration expires.
Default: 5 seconds
-
PJSIP_REGISTER_CLIENT_CHECK_CONTACT
¶ Specify whether client registration should check for its registered contact in Contact header of successful REGISTE response to determine whether registration has been successful. This setting may be disabled if non-compliant registrar is unable to return correct Contact header.
This setting can be changed in run-time by settting regc.check_contact field of pjsip_cfg().
Default is 1
-
PJSIP_REGISTER_CLIENT_ADD_XUID_PARAM
¶ Specify whether client registration should add “x-uid” extension parameter in all Contact URIs that it registers to assist the matching of Contact URIs in the 200/OK REGISTER response, in case the registrar is unable to return exact Contact URI in the 200/OK response.
This setting can be changed in run-time by setting regc.add_xuid_param field of pjsip_cfg().
Default is 0.
-
PJSIP_EVSUB_TIME_UAC_REFRESH
¶ Specify the time (in seconds) to send SUBSCRIBE to refresh client subscription before the actual interval expires.
Default: 5 seconds
-
PJSIP_PUBLISHC_DELAY_BEFORE_REFRESH
¶ Specify the time (in seconds) to send PUBLISH to refresh client publication before the actual interval expires.
Default: 5 seconds
-
PJSIP_EVSUB_TIME_UAC_TERMINATE
¶ Specify the time (in seconds) to wait for the final NOTIFY from the server after client has sent un-SUBSCRIBE request.
Default: 5 seconds
-
PJSIP_EVSUB_TIME_UAC_WAIT_NOTIFY
¶ Specify the time (in seconds) for client subscription to wait for another NOTIFY from the server, if it has rejected the last NOTIFY with non-2xx final response (such as 401). If further NOTIFY is not received within this period, the client will unsubscribe.
Default: 5 seconds
-
PJSIP_PRES_DEFAULT_EXPIRES
¶ Specify the default expiration time for presence event subscription, for both client and server subscription. For client subscription, application can override this by specifying positive non-zero value in “expires” parameter when calling pjsip_pres_initiate(). For server subscription, we would take the expiration value from the Expires header sent by client in the SUBSCRIBE request if the header exists and its value is less than this setting, otherwise this setting will be used.
Default: 600 seconds (10 minutes)
-
PJSIP_PRES_BAD_CONTENT_RESPONSE
¶ Specify the status code value to respond to bad message body in NOTIFY request for presence. Scenarios that are considered bad include non- PIDF/XML and non-XPIDF/XML body, multipart message bodies without PIDF/XML nor XPIDF/XML part, and bad (parsing error) PIDF and X-PIDF bodies themselves.
Default value is 488. Application may change this to 200 to ignore the unrecognised content (this is useful if the application wishes to handle the content itself). Only non-3xx final response code is allowed here.
Default: 488 (Not Acceptable Here)
-
PJSIP_PRES_PIDF_ADD_TIMESTAMP
¶ Add “timestamp” information in generated PIDF document for both server subscription and presence publication.
Default: 1 (yes)
-
PJSIP_SESS_TIMER_DEF_SE
¶ Default session interval for Session Timer (RFC 4028) extension, in seconds. As specified in RFC 4028 Section 4, this value must not be less than the absolute minimum for the Session-Expires header field 90 seconds, and the recommended value is 1800 seconds.
Default: 1800 seconds
-
PJSIP_PUBLISHC_QUEUE_REQUEST
¶ Specify whether the client publication session should queue the PUBLISH request should there be another PUBLISH transaction still pending. If this is set to false, the client will return error on the PUBLISH request if there is another PUBLISH transaction still in progress.
Default: 1 (yes)
Functions
-
pjsip_cfg_t *
pjsip_cfg
(void)¶ Get pjsip configuration instance. Application may modify the settings before creating the SIP endpoint and modules.
- Returns
Configuration instance.
Variables
-
pjsip_cfg_t
pjsip_sip_cfg_var
¶
-
struct
pjsip_cfg_t
¶ - #include <sip_config.h>
This structure describes PJSIP run-time configurations/settings. Application may use pjsip_cfg() function to modify the settings before creating the stack.
-