summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip/sip_transport.c
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2010-02-25 11:58:19 +0000
committerNanang Izzuddin <nanang@teluu.com>2010-02-25 11:58:19 +0000
commitcd0277b8c369c89206409d767d47600d3ed38786 (patch)
tree4ea90a5de7fb5a5842fff3685ac600c93246050b /pjsip/src/pjsip/sip_transport.c
parentc80dd76f236e41c653a6e6e95c9fa44c586c6a34 (diff)
More ticket #1032:
- Updated transport state notification callback to return void. - Updated transport state enum to only contain connected and disconnected, no more bitmask value. - Added direction field to SIP transport. - Removed remote hostname hash from transport key. - Updated cert info dump to return -1 when buffer is insufficient. - Added new error code PJSIP_TLS_ECERTVERIF. - Updated get_cert_name() in ssl_sock_symbian.c to use heap buffer instead of stack. - Minors, e.g: added prefix PJ in cipher types, docs. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3110 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip/sip_transport.c')
-rw-r--r--pjsip/src/pjsip/sip_transport.c43
1 files changed, 14 insertions, 29 deletions
diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c
index 92fbaf4d..ecfba2c9 100644
--- a/pjsip/src/pjsip/sip_transport.c
+++ b/pjsip/src/pjsip/sip_transport.c
@@ -866,7 +866,7 @@ PJ_DEF(pj_status_t) pjsip_transport_register( pjsip_tpmgr *mgr,
/*
* Register to hash table (see Trac ticket #42).
*/
- key_len = sizeof(tp->key.type) + sizeof(tp->key.hname) + tp->addr_len;
+ key_len = sizeof(tp->key.type) + tp->addr_len;
pj_lock_acquire(mgr->lock);
/* If entry already occupied, unregister previous entry */
@@ -916,7 +916,7 @@ static pj_status_t destroy_transport( pjsip_tpmgr *mgr,
/*
* Unregister from hash table (see Trac ticket #42).
*/
- key_len = sizeof(tp->key.type) + sizeof(tp->key.hname) + tp->addr_len;
+ key_len = sizeof(tp->key.type) + tp->addr_len;
hval = 0;
entry = pj_hash_get(mgr->table, &tp->key, key_len, &hval);
if (entry == (void*)tp)
@@ -1591,34 +1591,12 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
int key_len;
pjsip_transport *transport;
- /*
- * Find factory that can create such transport.
- */
- factory = mgr->factory_list.next;
- while (factory != &mgr->factory_list) {
- if (factory->type == type)
- break;
- factory = factory->next;
- }
- if (factory == &mgr->factory_list)
- factory = NULL;
-
pj_bzero(&key, sizeof(key));
- key_len = sizeof(key.type) + sizeof(key.hname) + addr_len;
+ key_len = sizeof(key.type) + addr_len;
/* First try to get exact destination. */
key.type = type;
pj_memcpy(&key.rem_addr, remote, addr_len);
- if (factory && factory->create_transport2 &&
- tdata && tdata->dest_info.name.slen)
- {
- /* Only include hostname hash in the key when the factory support
- * create_transport2() and tdata is supplied.
- */
- key.hname = pj_hash_calc_tolower(0,
- (char*)tdata->dest_info.name.ptr,
- &tdata->dest_info.name);
- }
transport = (pjsip_transport*)
pj_hash_get(mgr->table, &key, key_len, NULL);
@@ -1635,7 +1613,7 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
pj_sockaddr *addr = &key.rem_addr;
pj_bzero(addr, addr_len);
- key_len = sizeof(key.type) + sizeof(key.hname) + addr_len;
+ key_len = sizeof(key.type) + addr_len;
transport = (pjsip_transport*)
pj_hash_get(mgr->table, &key, key_len, NULL);
}
@@ -1648,7 +1626,7 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
pj_bzero(addr, addr_len);
addr->addr.sa_family = remote_addr->addr.sa_family;
- key_len = sizeof(key.type) + sizeof(key.hname) + addr_len;
+ key_len = sizeof(key.type) + addr_len;
transport = (pjsip_transport*)
pj_hash_get(mgr->table, &key, key_len, NULL);
}
@@ -1668,8 +1646,16 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
/*
* Transport not found!
+ * Find factory that can create such transport.
*/
- if (NULL == factory) {
+ factory = mgr->factory_list.next;
+ while (factory != &mgr->factory_list) {
+ if (factory->type == type)
+ break;
+ factory = factory->next;
+ }
+
+ if (factory == &mgr->factory_list) {
/* No factory can create the transport! */
pj_lock_release(mgr->lock);
TRACE_((THIS_FILE, "No suitable factory was found either"));
@@ -1677,7 +1663,6 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
}
}
-
TRACE_((THIS_FILE, "Creating new transport from factory"));
/* Request factory to create transport. */