Home --> Documentations --> PJSIP Reference

#include <pjsua.h>

Data Fields

void * user_data
int priority
pj_str_t id
pj_str_t reg_uri
pjsip_hdr reg_hdr_list
pj_str_t reg_contact_params
pj_str_t reg_contact_uri_params
pjsip_hdr sub_hdr_list
pj_bool_t mwi_enabled
unsigned mwi_expires
pj_bool_t publish_enabled
pjsip_publishc_opt publish_opt
unsigned unpublish_max_wait_time_msec
pjsip_auth_clt_pref auth_pref
pj_str_t pidf_tuple_id
pj_str_t force_contact
pj_str_t contact_params
pj_str_t contact_uri_params
pjsua_100rel_use require_100rel
pjsua_sip_timer_use use_timer
pjsip_timer_setting timer_setting
unsigned proxy_cnt
pj_str_t proxy [8]
unsigned lock_codec
unsigned reg_timeout
unsigned reg_delay_before_refresh
unsigned unreg_timeout
unsigned cred_count
pjsip_cred_info cred_info [8]
pjsua_transport_id transport_id
pj_bool_t allow_contact_rewrite
int contact_rewrite_method
pj_bool_t contact_use_src_port
pj_bool_t allow_via_rewrite
pj_bool_t allow_sdp_nat_rewrite
unsigned use_rfc5626
pj_str_t rfc5626_instance_id
pj_str_t rfc5626_reg_id
unsigned ka_interval
pj_str_t ka_data
pj_bool_t vid_in_auto_show
pj_bool_t vid_out_auto_transmit
unsigned vid_wnd_flags
pjmedia_vid_dev_index vid_cap_dev
pjmedia_vid_dev_index vid_rend_dev
pjmedia_vid_stream_rc_config vid_stream_rc_cfg
pjmedia_vid_stream_sk_config vid_stream_sk_cfg
pjsua_transport_config rtp_cfg
pjsua_nat64_opt nat64_opt
pjsua_ipv6_use ipv6_media_use
pjsua_stun_use sip_stun_use
pjsua_stun_use media_stun_use
pj_bool_t use_loop_med_tp
pj_bool_t enable_loopback
pjsua_ice_config_use ice_cfg_use
pjsua_ice_config ice_cfg
pjsua_turn_config_use turn_cfg_use
pjsua_turn_config turn_cfg
pjmedia_srtp_use use_srtp
int srtp_secure_signaling
pj_bool_t srtp_optional_dup_offer
pjsua_srtp_opt srtp_opt
unsigned reg_retry_interval
unsigned reg_first_retry_interval
unsigned reg_retry_random_interval
pj_bool_t drop_calls_on_reg_fail
unsigned reg_use_proxy
pj_bool_t use_stream_ka
pjmedia_stream_ka_config stream_ka_cfg
pjsua_call_hold_type call_hold_type
pj_bool_t register_on_acc_add
pjsua_ip_change_acc_cfg ip_change_cfg
pj_bool_t enable_rtcp_mux
pjmedia_rtcp_fb_setting rtcp_fb_cfg

Detailed Description

This structure describes account configuration to be specified when adding a new account with pjsua_acc_add(). Application MUST initialize this structure first by calling pjsua_acc_config_default().

Field Documentation

◆ user_data

void* pjsua_acc_config::user_data

Arbitrary user data to be associated with the newly created account. Application may set this later with pjsua_acc_set_user_data() and retrieve it with pjsua_acc_get_user_data().

◆ priority

int pjsua_acc_config::priority

Account priority, which is used to control the order of matching incoming/outgoing requests. The higher the number means the higher the priority is, and the account will be matched first.

◆ id

pj_str_t pjsua_acc_config::id

The full SIP URL for the account. The value can take name address or URL format, and will look something like "sip:account@serviceprovider" or "\"Display Name" <sip:account>".

This field is mandatory.

◆ reg_uri

pj_str_t pjsua_acc_config::reg_uri

This is the URL to be put in the request URI for the registration, and will look something like "sip:serviceprovider".

This field should be specified if registration is desired. If the value is empty, no account registration will be performed.

◆ reg_hdr_list

pjsip_hdr pjsua_acc_config::reg_hdr_list

The optional custom SIP headers to be put in the registration request.

◆ reg_contact_params

pj_str_t pjsua_acc_config::reg_contact_params

Additional parameters that will be appended in the Contact header for this account. This will only affect REGISTER requests and will be appended after contact_params;

The parameters should be preceeded by semicolon, and all strings must be properly escaped. Example: ";my-param=X;another-param=Hi%20there"

◆ reg_contact_uri_params

pj_str_t pjsua_acc_config::reg_contact_uri_params

Additional URI parameters that will be appended in the Contact URI for this account. This will only affect REGISTER requests and will be appended after contact_uri_params;

The parameters should be preceeded by semicolon, and all strings must be properly escaped. Example: ";my-param=X;another-param=Hi%20there"

◆ sub_hdr_list

pjsip_hdr pjsua_acc_config::sub_hdr_list

The optional custom SIP headers to be put in the presence subscription request.

◆ mwi_enabled

pj_bool_t pjsua_acc_config::mwi_enabled

Subscribe to message waiting indication events (RFC 3842).

See also enable_unsolicited_mwi field on pjsua_config.

Default: no

◆ mwi_expires

unsigned pjsua_acc_config::mwi_expires

Specify the default expiration time for Message Waiting Indication (RFC 3842) event subscription. This must not be zero.


◆ publish_enabled

pj_bool_t pjsua_acc_config::publish_enabled

If this flag is set, the presence information of this account will be PUBLISH-ed to the server where the account belongs.

Default: PJ_FALSE

◆ publish_opt

pjsip_publishc_opt pjsua_acc_config::publish_opt

Event publication options.

◆ unpublish_max_wait_time_msec

unsigned pjsua_acc_config::unpublish_max_wait_time_msec

Maximum time to wait for unpublication transaction(s) to complete during shutdown process, before sending unregistration. The library tries to wait for the unpublication (un-PUBLISH) to complete before sending REGISTER request to unregister the account, during library shutdown process. If the value is set too short, it is possible that the unregistration is sent before unpublication completes, causing unpublication request to fail.


◆ auth_pref

pjsip_auth_clt_pref pjsua_acc_config::auth_pref

Authentication preference.

◆ pidf_tuple_id

pj_str_t pjsua_acc_config::pidf_tuple_id

Optional PIDF tuple ID for outgoing PUBLISH and NOTIFY. If this value is not specified, a random string will be used.

◆ force_contact

pj_str_t pjsua_acc_config::force_contact

Optional URI to be put as Contact for this account. It is recommended that this field is left empty, so that the value will be calculated automatically based on the transport address.

◆ contact_params

pj_str_t pjsua_acc_config::contact_params

Additional parameters that will be appended in the Contact header for this account. This will affect the Contact header in all SIP messages sent on behalf of this account, including but not limited to REGISTER, INVITE, and SUBCRIBE requests or responses.

The parameters should be preceeded by semicolon, and all strings must be properly escaped. Example: ";my-param=X;another-param=Hi%20there"

◆ contact_uri_params

pj_str_t pjsua_acc_config::contact_uri_params

Additional URI parameters that will be appended in the Contact URI for this account. This will affect the Contact URI in all SIP messages sent on behalf of this account, including but not limited to REGISTER, INVITE, and SUBCRIBE requests or responses.

The parameters should be preceeded by semicolon, and all strings must be properly escaped. Example: ";my-param=X;another-param=Hi%20there"

◆ require_100rel

pjsua_100rel_use pjsua_acc_config::require_100rel

Specify how support for reliable provisional response (100rel/ PRACK) should be used for all sessions in this account. See the documentation of pjsua_100rel_use enumeration for more info.

Default: The default value is taken from the value of require_100rel in pjsua_config.

◆ use_timer

pjsua_sip_timer_use pjsua_acc_config::use_timer

Specify the usage of Session Timers for all sessions. See the pjsua_sip_timer_use for possible values.


◆ timer_setting

pjsip_timer_setting pjsua_acc_config::timer_setting

Specify Session Timer settings, see pjsip_timer_setting.

◆ proxy_cnt

unsigned pjsua_acc_config::proxy_cnt

Number of proxies in the proxy array below.

◆ proxy

pj_str_t pjsua_acc_config::proxy[8]

Optional URI of the proxies to be visited for all outgoing requests that are using this account (REGISTER, INVITE, etc). Application need to specify these proxies if the service provider requires that requests destined towards its network should go through certain proxies first (for example, border controllers).

These proxies will be put in the route set for this account, with maintaining the orders (the first proxy in the array will be visited first). If global outbound proxies are configured in pjsua_config, then these account proxies will be placed after the global outbound proxies in the routeset.

◆ lock_codec

unsigned pjsua_acc_config::lock_codec

If remote sends SDP answer containing more than one format or codec in the media line, send re-INVITE or UPDATE with just one codec to lock which codec to use.

Default: 1 (Yes). Set to zero to disable.

◆ reg_timeout

unsigned pjsua_acc_config::reg_timeout

Optional interval for registration, in seconds. If the value is zero, default interval will be used (PJSUA_REG_INTERVAL, 300 seconds).

◆ reg_delay_before_refresh

unsigned pjsua_acc_config::reg_delay_before_refresh

Specify the number of seconds to refresh the client registration before the registration expires.


◆ unreg_timeout

unsigned pjsua_acc_config::unreg_timeout

Specify the maximum time to wait for unregistration requests to complete during library shutdown sequence.


◆ cred_count

unsigned pjsua_acc_config::cred_count

Number of credentials in the credential array.

◆ cred_info

pjsip_cred_info pjsua_acc_config::cred_info[8]

Array of credentials. If registration is desired, normally there should be at least one credential specified, to successfully authenticate against the service provider. More credentials can be specified, for example when the requests are expected to be challenged by the proxies in the route set.

◆ transport_id

pjsua_transport_id pjsua_acc_config::transport_id

Optionally bind this account to specific transport. This normally is not a good idea, as account should be able to send requests using any available transports according to the destination. But some application may want to have explicit control over the transport to use, so in that case it can set this field.

Default: -1 (PJSUA_INVALID_ID)

See also

◆ allow_contact_rewrite

pj_bool_t pjsua_acc_config::allow_contact_rewrite

This option is used to update the transport address and the Contact header of REGISTER request. When this option is enabled, the library will keep track of the public IP address from the response of REGISTER request. Once it detects that the address has changed, it will unregister current Contact, update the Contact with transport address learned from Via header, and register a new Contact to the registrar. This will also update the public name of UDP transport if STUN is configured.

See also contact_rewrite_method field.

Default: 1 (yes)

◆ contact_rewrite_method

int pjsua_acc_config::contact_rewrite_method

Specify how Contact update will be done with the registration, if allow_contact_rewrite is enabled. The value is bitmask combination of pjsua_contact_rewrite_method. See also pjsua_contact_rewrite_method.

Value PJSUA_CONTACT_REWRITE_UNREGISTER(1) is the legacy behavior.


◆ contact_use_src_port

pj_bool_t pjsua_acc_config::contact_use_src_port

Specify if source TCP port should be used as the initial Contact address if TCP/TLS transport is used. Note that this feature will be automatically turned off when nameserver is configured because it may yield different destination address due to DNS SRV resolution. Also some platforms are unable to report the local address of the TCP socket when it is still connecting. In these cases, this feature will also be turned off.

Default: PJ_TRUE (yes).

◆ allow_via_rewrite

pj_bool_t pjsua_acc_config::allow_via_rewrite

This option is used to overwrite the "sent-by" field of the Via header for outgoing messages with the same interface address as the one in the REGISTER request, as long as the request uses the same transport instance as the previous REGISTER request.

Default: 1 (yes)

◆ allow_sdp_nat_rewrite

pj_bool_t pjsua_acc_config::allow_sdp_nat_rewrite

This option controls whether the IP address in SDP should be replaced with the IP address found in Via header of the REGISTER response, ONLY when STUN and ICE are not used. If the value is FALSE (the original behavior), then the local IP address will be used. If TRUE, and when STUN and ICE are disabled, then the IP address found in registration response will be used.

Default: PJ_FALSE (no)

◆ use_rfc5626

unsigned pjsua_acc_config::use_rfc5626

Control the use of SIP outbound feature. SIP outbound is described in RFC 5626 to enable proxies or registrar to send inbound requests back to UA using the same connection initiated by the UA for its registration. This feature is highly useful in NAT-ed deployemtns, hence it is enabled by default.

Note: currently SIP outbound can only be used with TCP and TLS transports. If UDP is used for the registration, the SIP outbound feature will be silently ignored for the account.

Default: PJ_TRUE

◆ rfc5626_instance_id

pj_str_t pjsua_acc_config::rfc5626_instance_id

Specify SIP outbound (RFC 5626) instance ID to be used by this application. If empty, an instance ID will be generated based on the hostname of this agent. If application specifies this parameter, the value will look like "<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>" without the doublequote.

Default: empty

◆ rfc5626_reg_id

pj_str_t pjsua_acc_config::rfc5626_reg_id

Specify SIP outbound (RFC 5626) registration ID. The default value is empty, which would cause the library to automatically generate a suitable value.

Default: empty

◆ ka_interval

unsigned pjsua_acc_config::ka_interval

Set the interval for periodic keep-alive transmission for this account. If this value is zero, keep-alive will be disabled for this account. The keep-alive transmission will be sent to the registrar's address, after successful registration.

Default: 15 (seconds)

◆ ka_data

pj_str_t pjsua_acc_config::ka_data

Specify the data to be transmitted as keep-alive packets.

Default: CR-LF

◆ vid_in_auto_show

pj_bool_t pjsua_acc_config::vid_in_auto_show

Specify whether incoming video should be shown to screen by default. This applies to incoming call (INVITE), incoming re-INVITE, and incoming UPDATE requests.

Regardless of this setting, application can detect incoming video by implementing on_call_media_state() callback and enumerating the media stream(s) with pjsua_call_get_info(). Once incoming video is recognised, application may retrieve the window associated with the incoming video and show or hide it with pjsua_vid_win_set_show().

Default: PJ_FALSE

◆ vid_out_auto_transmit

pj_bool_t pjsua_acc_config::vid_out_auto_transmit

Specify whether outgoing video should be activated by default when making outgoing calls and/or when incoming video is detected. This applies to incoming and outgoing calls, incoming re-INVITE, and incoming UPDATE. If the setting is non-zero, outgoing video transmission will be started as soon as response to these requests is sent (or received).

Regardless of the value of this setting, application can start and stop outgoing video transmission with pjsua_call_set_vid_strm().

Default: PJ_FALSE

◆ vid_wnd_flags

unsigned pjsua_acc_config::vid_wnd_flags

Specify video window's flags. The value is a bitmask combination of pjmedia_vid_dev_wnd_flag.

Default: 0

◆ vid_cap_dev

pjmedia_vid_dev_index pjsua_acc_config::vid_cap_dev

Specify the default capture device to be used by this account. If vid_out_auto_transmit is enabled, this device will be used for capturing video.


◆ vid_rend_dev

pjmedia_vid_dev_index pjsua_acc_config::vid_rend_dev

Specify the default rendering device to be used by this account.


◆ vid_stream_rc_cfg

pjmedia_vid_stream_rc_config pjsua_acc_config::vid_stream_rc_cfg

Specify the send rate control for video stream.

Default: see pjmedia_vid_stream_rc_config

◆ vid_stream_sk_cfg

pjmedia_vid_stream_sk_config pjsua_acc_config::vid_stream_sk_cfg

Specify the send keyframe config for video stream.

Default: see pjmedia_vid_stream_sk_config

◆ rtp_cfg

pjsua_transport_config pjsua_acc_config::rtp_cfg

Media transport config.

For port and port_range settings, RTCP port is selected as RTP port+1. Example: port=5000, port_range=4

  • Available ports: 5000, 5002, 5004 (Media/RTP transport) 5001, 5003, 5005 (Media/RTCP transport)

◆ nat64_opt

pjsua_nat64_opt pjsua_acc_config::nat64_opt

Specify NAT64 options.


◆ ipv6_media_use

pjsua_ipv6_use pjsua_acc_config::ipv6_media_use

Specify whether IPv6 should be used on media.

◆ sip_stun_use

pjsua_stun_use pjsua_acc_config::sip_stun_use

Control the use of STUN for the SIP signaling.


◆ media_stun_use

pjsua_stun_use pjsua_acc_config::media_stun_use

Control the use of STUN for the media transports.


◆ use_loop_med_tp

pj_bool_t pjsua_acc_config::use_loop_med_tp

Use loopback media transport. This may be useful if application doesn't want PJSIP to create real media transports/sockets, such as when using third party media.

Default: PJ_FALSE

◆ enable_loopback

pj_bool_t pjsua_acc_config::enable_loopback

Enable local loopback when loop_med_tp_use is set to PJ_TRUE. If enabled, packets sent to the transport will be sent back to the streams attached to the transport.

Default: PJ_FALSE

◆ ice_cfg_use

pjsua_ice_config_use pjsua_acc_config::ice_cfg_use

Control the use of ICE in the account. By default, the settings in the pjsua_media_config will be used.


◆ ice_cfg

pjsua_ice_config pjsua_acc_config::ice_cfg

The custom ICE setting for this account. This setting will only be used if ice_cfg_use is set to PJSUA_ICE_CONFIG_USE_CUSTOM

◆ turn_cfg_use

pjsua_turn_config_use pjsua_acc_config::turn_cfg_use

Control the use of TURN in the account. By default, the settings in the pjsua_media_config will be used


◆ turn_cfg

pjsua_turn_config pjsua_acc_config::turn_cfg

The custom TURN setting for this account. This setting will only be used if turn_cfg_use is set to PJSUA_TURN_CONFIG_USE_CUSTOM

◆ use_srtp

pjmedia_srtp_use pjsua_acc_config::use_srtp

Specify whether secure media transport should be used for this account. Valid values are PJMEDIA_SRTP_DISABLED, PJMEDIA_SRTP_OPTIONAL, and PJMEDIA_SRTP_MANDATORY.


◆ srtp_secure_signaling

int pjsua_acc_config::srtp_secure_signaling

Specify whether SRTP requires secure signaling to be used. This option is only used when use_srtp option above is non-zero.

Valid values are: 0: SRTP does not require secure signaling 1: SRTP requires secure transport such as TLS 2: SRTP requires secure end-to-end transport (SIPS)


◆ srtp_optional_dup_offer

pj_bool_t pjsua_acc_config::srtp_optional_dup_offer

This setting has been deprecated and will be ignored.

◆ srtp_opt

pjsua_srtp_opt pjsua_acc_config::srtp_opt

Specify SRTP transport setting. Application can initialize it with default values using pjsua_srtp_opt_default().

◆ reg_retry_interval

unsigned pjsua_acc_config::reg_retry_interval

Specify interval of auto registration retry upon registration failure, in seconds. Set to 0 to disable auto re-registration. Note that registration will only be automatically retried for temporal failures considered to be recoverable in relatively short term, such as: 408 (Request Timeout), 480 (Temporarily Unavailable), 500 (Internal Server Error), 502 (Bad Gateway), 503 (Service Unavailable), 504 (Server Timeout), 6xx (global failure), and failure caused by transport problem. For registration retry caused by transport failure, the first retry will be done after reg_first_retry_interval seconds instead. Note that the interval will be randomized slightly by some seconds (specified in reg_retry_random_interval) to avoid all clients re-registering at the same time.

See also reg_first_retry_interval setting.


◆ reg_first_retry_interval

unsigned pjsua_acc_config::reg_first_retry_interval

This specifies the interval for the first registration retry. The registration retry is explained in reg_retry_interval. Note that the value here will also be randomized by some seconds (specified in reg_retry_random_interval) to avoid all clients re-registering at the same time.

Default: 0

◆ reg_retry_random_interval

unsigned pjsua_acc_config::reg_retry_random_interval

This specifies maximum randomized value to be added/substracted to/from the registration retry interval specified in reg_retry_interval and reg_first_retry_interval, in second. This is useful to avoid all clients re-registering at the same time. For example, if the registration retry interval is set to 100 seconds and this is set to 10 seconds, the actual registration retry interval will be in the range of 90 to 110 seconds.

Default: 10

◆ drop_calls_on_reg_fail

pj_bool_t pjsua_acc_config::drop_calls_on_reg_fail

Specify whether calls of the configured account should be dropped after registration failure and an attempt of re-registration has also failed.

Default: PJ_FALSE (disabled)

◆ reg_use_proxy

unsigned pjsua_acc_config::reg_use_proxy

Specify how the registration uses the outbound and account proxy settings. This controls if and what Route headers will appear in the REGISTER request of this account. The value is bitmask combination of PJSUA_REG_USE_OUTBOUND_PROXY and PJSUA_REG_USE_ACC_PROXY bits. If the value is set to 0, the REGISTER request will not use any proxy (i.e. it will not have any Route headers).


◆ use_stream_ka

pj_bool_t pjsua_acc_config::use_stream_ka

Specify whether stream keep-alive and NAT hole punching with non-codec-VAD mechanism (see PJMEDIA_STREAM_ENABLE_KA) is enabled for this account.

Default: PJ_FALSE (disabled)

◆ stream_ka_cfg

pjmedia_stream_ka_config pjsua_acc_config::stream_ka_cfg

Specify the keepalive configuration for stream.

Default: see pjmedia_stream_ka_config

◆ call_hold_type

pjsua_call_hold_type pjsua_acc_config::call_hold_type

Specify how to offer call hold to remote peer. Please see the documentation on pjsua_call_hold_type for more info.


◆ register_on_acc_add

pj_bool_t pjsua_acc_config::register_on_acc_add

Specify whether the account should register as soon as it is added to the UA. Application can set this to PJ_FALSE and control the registration manually with pjsua_acc_set_registration().

Default: PJ_TRUE

◆ ip_change_cfg

pjsua_ip_change_acc_cfg pjsua_acc_config::ip_change_cfg

Specify account configuration specific to IP address change used when calling pjsua_handle_ip_change().

◆ enable_rtcp_mux

pj_bool_t pjsua_acc_config::enable_rtcp_mux

Enable RTP and RTCP multiplexing.

◆ rtcp_fb_cfg

pjmedia_rtcp_fb_setting pjsua_acc_config::rtcp_fb_cfg

RTCP Feedback configuration.

The documentation for this struct was generated from the following file:
  • pjsua-lib/pjsua.h


PJSIP Open Source, high performance, small footprint, and very very portable SIP stack
Copyright (C) 2006-2008 Teluu Inc.