There are 2 pieces of information that I would like to supply. 1) I am using the pjsip version 1.8.5 2) this is what I am (conceptually) doing to configure and startup the pjsua (from what I can see, this is also pretty much what the pjsua_app does): pjsua_create(); pjsua_config cfg; pjsua_media_config mediaConfiguration; pjsua_logging_config log_cfg; // basic pjsua configuration ... // basic pjsua_media configuration // basic pjsua_logging configuration // ... pj_status_t status = pjsua_init(&cfg, &log_cfg, &mediaConfiguration); if (status == PJ_SUCCESS) { // adding UDP transport ------------------------- pjsua_acc_id aid; pjsua_transport_config udp_cfg; pjsua_transport_config tcp_cfg; pjsua_transport_config_default(&udp_cfg); udp_cfg.port = sipPort; // 5060; int transportID = -1; pj_memcpy(&tcp_cfg, &udp_cfg, sizeof(tcp_cfg)); pjsua_acc_id currentAccount = pjsua_acc_get_default(); status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &udp_cfg, &transportID); if (status == PJ_SUCCESS) { pjsua_acc_add_local(transportID, PJ_TRUE, &aid); pjsua_acc_set_online_status(currentAccount, PJ_TRUE); if (udp_cfg.port == 0) { pjsua_transport_info transportInfo; pj_sockaddr_in * a; pjsua_transport_get_info(transportID, &transportInfo); a = (pj_sockaddr_in * )&transportInfo.local_addr; tcp_cfg.port = pj_ntohs(a->sin_port); } } // adding TCP transport ------------------------- status = pjsua_transport_create(PJSIP_TRANSPORT_TCP, &tcp_cfg, & transportID); if (status == PJ_SUCCESS) { pjsua_acc_add_local(transportID, PJ_TRUE, NULL); pjsua_acc_set_online_status(currentAccount, PJ_TRUE); status = pjsua_start(); } }