Changeset 597 for pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c
- Timestamp:
- Jul 10, 2006 2:40:21 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c
r582 r597 56 56 pj_strdup_with_null(pool, &dst->id, &src->id); 57 57 pj_strdup_with_null(pool, &dst->reg_uri, &src->reg_uri); 58 pj_strdup_with_null(pool, &dst-> contact, &src->contact);58 pj_strdup_with_null(pool, &dst->force_contact, &src->force_contact); 59 59 60 60 dst->proxy_cnt = src->proxy_cnt; … … 104 104 pjsua_acc *acc = &pjsua_var.acc[acc_id]; 105 105 pjsip_uri *uri; 106 pjsip_sip_uri *sip_uri ;106 pjsip_sip_uri *sip_uri, *sip_reg_uri; 107 107 unsigned i; 108 108 … … 129 129 130 130 /* Get the SIP URI object: */ 131 132 131 sip_uri = (pjsip_sip_uri*) pjsip_uri_get_uri(uri); 132 133 134 /* Parse registrar URI, if any */ 135 if (acc_cfg->reg_uri.slen) { 136 pjsip_uri *reg_uri; 137 138 reg_uri = pjsip_parse_uri(pjsua_var.pool, acc_cfg->reg_uri.ptr, 139 acc_cfg->reg_uri.slen, 0); 140 if (reg_uri == NULL) { 141 pjsua_perror(THIS_FILE, "Invalid registrar URI", 142 PJSIP_EINVALIDURI); 143 return PJSIP_EINVALIDURI; 144 } 145 146 /* Registrar URI MUST be a SIP or SIPS: */ 147 if (!PJSIP_URI_SCHEME_IS_SIP(reg_uri) && 148 !PJSIP_URI_SCHEME_IS_SIPS(reg_uri)) 149 { 150 pjsua_perror(THIS_FILE, "Invalid registar URI", 151 PJSIP_EINVALIDSCHEME); 152 return PJSIP_EINVALIDSCHEME; 153 } 154 155 sip_reg_uri = (pjsip_sip_uri*) pjsip_uri_get_uri(reg_uri); 156 157 } else { 158 sip_reg_uri = NULL; 159 } 160 133 161 134 162 /* Save the user and domain part. These will be used when finding an … … 136 164 */ 137 165 acc->user_part = sip_uri->user; 138 acc->host_part = sip_uri->host; 139 166 acc->srv_domain = sip_uri->host; 167 acc->srv_port = 0; 168 169 if (sip_reg_uri) { 170 acc->srv_port = sip_reg_uri->port; 171 } 140 172 141 173 /* Create Contact header if not present. */ 142 if (acc_cfg->contact.slen == 0) {143 acc_cfg->contact = acc_cfg->id;144 }174 //if (acc_cfg->contact.slen == 0) { 175 // acc_cfg->contact = acc_cfg->id; 176 //} 145 177 146 178 PJ_TODO(attach_account_to_transport); … … 704 736 sip_uri = pjsip_uri_get_uri(uri); 705 737 706 /* Find matching domain */738 /* Find matching domain AND port */ 707 739 for (acc_id=0; acc_id<PJ_ARRAY_SIZE(pjsua_var.acc); ++acc_id) { 708 740 if (!pjsua_var.acc[acc_id].valid) 709 741 continue; 710 if (pj_stricmp(&pjsua_var.acc[acc_id].host_part, &sip_uri->host)==0) 742 if (pj_stricmp(&pjsua_var.acc[acc_id].srv_domain, &sip_uri->host)==0 && 743 pjsua_var.acc[acc_id].srv_port == sip_uri->port) 711 744 break; 745 } 746 747 /* If no match, try to match the domain part only */ 748 if (acc_id == PJ_ARRAY_SIZE(pjsua_var.acc)) { 749 /* Just use default account */ 750 for (acc_id=0; acc_id<PJ_ARRAY_SIZE(pjsua_var.acc); ++acc_id) { 751 if (!pjsua_var.acc[acc_id].valid) 752 continue; 753 if (pj_stricmp(&pjsua_var.acc[acc_id].srv_domain, &sip_uri->host)==0) 754 break; 755 } 712 756 } 713 757 … … 754 798 755 799 if (pj_stricmp(&acc->user_part, &sip_uri->user)==0 && 756 pj_stricmp(&acc-> host_part, &sip_uri->host)==0)800 pj_stricmp(&acc->srv_domain, &sip_uri->host)==0) 757 801 { 758 802 /* Match ! */ … … 767 811 pjsua_acc *acc = &pjsua_var.acc[acc_id]; 768 812 769 if (pj_stricmp(&acc-> host_part, &sip_uri->host)==0) {813 if (pj_stricmp(&acc->srv_domain, &sip_uri->host)==0) { 770 814 /* Match ! */ 771 815 PJSUA_UNLOCK();
Note: See TracChangeset
for help on using the changeset viewer.