Changeset 1610 for pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c
- Timestamp:
- Dec 2, 2007 3:40:52 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c
r1569 r1610 326 326 pjsua_acc_config cfg; 327 327 pjsua_transport_data *t = &pjsua_var.tpdata[tid]; 328 const char *beginquote, *endquote; 329 char transport_param[32]; 328 330 char uri[PJSIP_MAX_URL_SIZE]; 329 331 … … 340 342 --cfg.priority; 341 343 344 /* Enclose IPv6 address in square brackets */ 345 if (t->type & PJSIP_TRANSPORT_IPV6) { 346 beginquote = "["; 347 endquote = "]"; 348 } else { 349 beginquote = endquote = ""; 350 } 351 352 /* Don't add transport parameter if it's UDP */ 353 if ((t->type & PJSIP_TRANSPORT_UDP) == 0) { 354 pj_ansi_snprintf(transport_param, sizeof(transport_param), 355 ";transport=%s", 356 pjsip_transport_get_type_name(t->type)); 357 } else { 358 transport_param[0] = '\0'; 359 } 360 342 361 /* Build URI for the account */ 343 362 pj_ansi_snprintf(uri, PJSIP_MAX_URL_SIZE, 344 "<sip:%.*s:%d;transport=%s>", 363 "<sip:%s%.*s%s:%d%s>", 364 beginquote, 345 365 (int)t->local_name.host.slen, 346 366 t->local_name.host.ptr, 367 endquote, 347 368 t->local_name.port, 348 pjsip_transport_get_type_name(t->type));369 transport_param); 349 370 350 371 cfg.id = pj_str(uri); … … 1362 1383 int secure; 1363 1384 int local_port; 1385 const char *beginquote, *endquote; 1386 char transport_param[32]; 1387 1364 1388 1365 1389 PJ_ASSERT_RETURN(pjsua_acc_is_valid(acc_id), PJ_EINVAL); … … 1406 1430 return PJSIP_EUNSUPTRANSPORT; 1407 1431 1432 /* If destination URI specifies IPv6, then set transport type 1433 * to use IPv6 as well. 1434 */ 1435 if (pj_strchr(suri, ':')) 1436 tp_type = (pjsip_transport_type_e)(((int)tp_type) + PJSIP_TRANSPORT_IPV6); 1437 1408 1438 flag = pjsip_transport_get_flag_from_type(tp_type); 1409 1439 secure = (flag & PJSIP_TRANSPORT_SECURE) != 0; … … 1419 1449 return status; 1420 1450 1451 /* Enclose IPv6 address in square brackets */ 1452 if (tp_type & PJSIP_TRANSPORT_IPV6) { 1453 beginquote = "["; 1454 endquote = "]"; 1455 } else { 1456 beginquote = endquote = ""; 1457 } 1458 1459 /* Don't add transport parameter if it's UDP */ 1460 if ((tp_type & PJSIP_TRANSPORT_UDP) == 0) { 1461 pj_ansi_snprintf(transport_param, sizeof(transport_param), 1462 ";transport=%s", 1463 pjsip_transport_get_type_name(tp_type)); 1464 } else { 1465 transport_param[0] = '\0'; 1466 } 1467 1468 1421 1469 /* Create the contact header */ 1422 1470 contact->ptr = (char*)pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE); 1423 1471 contact->slen = pj_ansi_snprintf(contact->ptr, PJSIP_MAX_URL_SIZE, 1424 "%.*s%s<%s:%.*s%s% .*s:%d;transport=%s>",1472 "%.*s%s<%s:%.*s%s%s%.*s%s:%d%s>", 1425 1473 (int)acc->display.slen, 1426 1474 acc->display.ptr, … … 1430 1478 acc->user_part.ptr, 1431 1479 (acc->user_part.slen?"@":""), 1480 beginquote, 1432 1481 (int)local_addr.slen, 1433 1482 local_addr.ptr, 1483 endquote, 1434 1484 local_port, 1435 pjsip_transport_get_type_name(tp_type));1485 transport_param); 1436 1486 1437 1487 return PJ_SUCCESS; … … 1462 1512 int secure; 1463 1513 int local_port; 1514 const char *beginquote, *endquote; 1515 char transport_param[32]; 1464 1516 1465 1517 PJ_ASSERT_RETURN(pjsua_acc_is_valid(acc_id), PJ_EINVAL); … … 1509 1561 } else 1510 1562 tp_type = pjsip_transport_get_type_from_name(&sip_uri->transport_param); 1511 1563 1512 1564 if (tp_type == PJSIP_TRANSPORT_UNSPECIFIED) 1513 1565 return PJSIP_EUNSUPTRANSPORT; 1566 1567 /* If destination URI specifies IPv6, then set transport type 1568 * to use IPv6 as well. 1569 */ 1570 if (pj_strchr(&sip_uri->host, ':')) 1571 tp_type = (pjsip_transport_type_e)(((int)tp_type) + PJSIP_TRANSPORT_IPV6); 1514 1572 1515 1573 flag = pjsip_transport_get_flag_from_type(tp_type); … … 1526 1584 return status; 1527 1585 1586 /* Enclose IPv6 address in square brackets */ 1587 if (tp_type & PJSIP_TRANSPORT_IPV6) { 1588 beginquote = "["; 1589 endquote = "]"; 1590 } else { 1591 beginquote = endquote = ""; 1592 } 1593 1594 /* Don't add transport parameter if it's UDP */ 1595 if ((tp_type & PJSIP_TRANSPORT_UDP) == 0) { 1596 pj_ansi_snprintf(transport_param, sizeof(transport_param), 1597 ";transport=%s", 1598 pjsip_transport_get_type_name(tp_type)); 1599 } else { 1600 transport_param[0] = '\0'; 1601 } 1602 1603 1528 1604 /* Create the contact header */ 1529 1605 contact->ptr = (char*) pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE); 1530 1606 contact->slen = pj_ansi_snprintf(contact->ptr, PJSIP_MAX_URL_SIZE, 1531 "%.*s%s<%s:%.*s%s% .*s:%d;transport=%s>",1607 "%.*s%s<%s:%.*s%s%s%.*s%s:%d%s>", 1532 1608 (int)acc->display.slen, 1533 1609 acc->display.ptr, … … 1537 1613 acc->user_part.ptr, 1538 1614 (acc->user_part.slen?"@":""), 1615 beginquote, 1539 1616 (int)local_addr.slen, 1540 1617 local_addr.ptr, 1618 endquote, 1541 1619 local_port, 1542 pjsip_transport_get_type_name(tp_type));1620 transport_param); 1543 1621 1544 1622 return PJ_SUCCESS;
Note: See TracChangeset
for help on using the changeset viewer.