summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_acc.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-06-28 16:46:49 +0000
committerBenny Prijono <bennylp@teluu.com>2006-06-28 16:46:49 +0000
commit72a1098e21f5b7d797655afe7ddb275969a192bd (patch)
tree2d6444a4660696829f4ac3c1f436e0d9f3d16310 /pjsip/src/pjsua-lib/pjsua_acc.c
parentdf5395ea5cff6c902f8a1d79bd2874a6b279288c (diff)
Major improvements in PJSIP to support TCP. The changes fall into these categories: (1) the TCP transport implementation itself (*.[hc]), (2) bug-fix in SIP transaction when using reliable transports, (3) support for TCP transport in PJSUA-LIB/PJSUA, and (4) changes in PJSIP-TEST to support TCP testing.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@563 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_acc.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 57c6d33f..8e11f2a2 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -77,18 +77,18 @@ static void update_acc_contact(unsigned acc_id,
unsigned tp_id)
{
pjsua_acc *acc = &pjsua_var.acc[acc_id];
- pjsip_transport *tp = pjsua_var.tpdata[tp_id].tp;
+ struct transport_data *t = &pjsua_var.tpdata[tp_id];
char uri[80];
/* Transport must be valid */
- pj_assert(tp != NULL);
+ pj_assert(t->data.ptr != NULL);
/* Build URI for the account */
pj_ansi_sprintf(uri, "<sip:%.*s:%d;transport=%s>",
- (int)tp->local_name.host.slen,
- tp->local_name.host.ptr,
- tp->local_name.port,
- pjsip_transport_get_type_name(tp->key.type));
+ (int)t->local_name.host.slen,
+ t->local_name.host.ptr,
+ t->local_name.port,
+ pjsip_transport_get_type_name(t->type));
pj_strdup2(pjsua_var.pool, &acc->real_contact, uri);
@@ -144,7 +144,7 @@ static pj_status_t initialize_acc(unsigned acc_id)
}
PJ_TODO(attach_account_to_transport);
- if (pjsua_var.tpdata[0].tp)
+ if (pjsua_var.tpdata[0].data.ptr)
update_acc_contact(acc_id, 0);
/* Build account route-set from outbound proxies and route set from
@@ -220,7 +220,8 @@ PJ_DEF(pj_status_t) pjsua_acc_add( const pjsua_acc_config *cfg,
PJ_ETOOMANY);
/* Must have a transport */
- PJ_ASSERT_RETURN(pjsua_var.tpdata[0].tp != NULL, PJ_EINVALIDOP);
+ PJ_TODO(associate_acc_with_transport);
+ PJ_ASSERT_RETURN(pjsua_var.tpdata[0].data.ptr != NULL, PJ_EINVALIDOP);
PJSUA_LOCK();
@@ -281,20 +282,23 @@ PJ_DEF(pj_status_t) pjsua_acc_add_local( pjsua_transport_id tid,
pjsua_acc_id *p_acc_id)
{
pjsua_acc_config cfg;
- pjsip_transport *tp;
+ struct transport_data *t = &pjsua_var.tpdata[tid];
char uri[62];
+ /* ID must be valid */
+ PJ_ASSERT_RETURN(tid>=0 && tid<PJ_ARRAY_SIZE(pjsua_var.tpdata), PJ_EINVAL);
+
/* Transport must be valid */
- tp = pjsua_var.tpdata[tid].tp;
- PJ_ASSERT_RETURN(tp != NULL, PJ_EINVAL);
+ PJ_ASSERT_RETURN(t->data.ptr != NULL, PJ_EINVAL);
pjsua_acc_config_default(&cfg);
/* Build URI for the account */
- pj_ansi_sprintf(uri, "<sip:%.*s:%d>",
- (int)tp->local_name.host.slen,
- tp->local_name.host.ptr,
- tp->local_name.port);
+ pj_ansi_sprintf(uri, "<sip:%.*s:%d;transport=%s>",
+ (int)t->local_name.host.slen,
+ t->local_name.host.ptr,
+ t->local_name.port,
+ pjsip_transport_get_type_name(t->type));
cfg.id = pj_str(uri);