summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_core.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index 847fab51..3c705540 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -2447,7 +2447,7 @@ PJ_DEF(pj_status_t) pjsua_transport_get_info( pjsua_transport_id id,
PJSUA_LOCK();
- if (t->type == PJSIP_TRANSPORT_UDP) {
+ if ((t->type & PJSIP_TRANSPORT_UDP) == PJSIP_TRANSPORT_UDP) {
pjsip_transport *tp = t->data.tp;
@@ -2468,8 +2468,8 @@ PJ_DEF(pj_status_t) pjsua_transport_get_info( pjsua_transport_id id,
status = PJ_SUCCESS;
- } else if (t->type == PJSIP_TRANSPORT_TCP ||
- t->type == PJSIP_TRANSPORT_TLS)
+ } else if ((t->type & PJSIP_TRANSPORT_TCP) == PJSIP_TRANSPORT_TCP ||
+ (t->type & PJSIP_TRANSPORT_TLS) == PJSIP_TRANSPORT_TLS)
{
pjsip_tpfactory *factory = t->data.factory;
@@ -2481,10 +2481,8 @@ PJ_DEF(pj_status_t) pjsua_transport_get_info( pjsua_transport_id id,
info->id = id;
info->type = t->type;
- info->type_name = (t->type==PJSIP_TRANSPORT_TCP)? pj_str("TCP"):
- pj_str("TLS");
- info->info = (t->type==PJSIP_TRANSPORT_TCP)? pj_str("TCP transport"):
- pj_str("TLS transport");
+ info->type_name = pj_str(factory->type_name);
+ info->info = pj_str(factory->info);
info->flag = factory->flag;
info->addr_len = sizeof(factory->local_addr);
info->local_addr = factory->local_addr;
@@ -2534,6 +2532,7 @@ PJ_DEF(pj_status_t) pjsua_transport_close( pjsua_transport_id id,
pj_bool_t force )
{
pj_status_t status;
+ pjsip_transport_type_e tp_type;
/* Make sure id is in range. */
PJ_ASSERT_RETURN(id>=0 && id<(int)PJ_ARRAY_SIZE(pjsua_var.tpdata),
@@ -2542,11 +2541,13 @@ PJ_DEF(pj_status_t) pjsua_transport_close( pjsua_transport_id id,
/* Make sure that transport exists */
PJ_ASSERT_RETURN(pjsua_var.tpdata[id].data.ptr != NULL, PJ_EINVAL);
+ tp_type = pjsua_var.tpdata[id].type & ~PJSIP_TRANSPORT_IPV6;
+
/* Note: destroy() may not work if there are objects still referencing
* the transport.
*/
if (force) {
- switch (pjsua_var.tpdata[id].type) {
+ switch (tp_type) {
case PJSIP_TRANSPORT_UDP:
status = pjsip_transport_shutdown(pjsua_var.tpdata[id].data.tp);
if (status != PJ_SUCCESS)
@@ -2579,7 +2580,7 @@ PJ_DEF(pj_status_t) pjsua_transport_close( pjsua_transport_id id,
* transport is closed thus it can't cleanup PJSUA transport
* descriptor.
*/
- switch (pjsua_var.tpdata[id].type) {
+ switch (tp_type) {
case PJSIP_TRANSPORT_UDP:
return pjsip_transport_shutdown(pjsua_var.tpdata[id].data.tp);
case PJSIP_TRANSPORT_TLS: