Changeset 1610


Ignore:
Timestamp:
Dec 2, 2007 3:40:52 PM (11 years ago)
Author:
bennylp
Message:

More ticket #421: fixed SIP messaging components to support IPv6 format

Location:
pjproject/trunk/pjsip
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/build/test_pjsip.dsp

    r1469 r1610  
    4343# PROP Target_Dir "" 
    4444# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 
    45 # ADD CPP /nologo /MD /W3 /Zi /O2 /Ob2 /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjnath/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "PJ_WIN32" /D "PJ_M_I386" /FR /FD /c 
     45# ADD CPP /nologo /MD /W3 /Zi /O2 /Ob2 /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjnath/include" /I "../../pjmedia/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "PJ_WIN32" /D "PJ_M_I386" /FR /FD /c 
    4646# SUBTRACT CPP /YX 
    4747# ADD BASE RSC /l 0x409 /d "NDEBUG" 
     
    6868# PROP Target_Dir "" 
    6969# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c 
    70 # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjnath/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "PJ_WIN32" /D "PJ_M_I386" /FR /FD /GZ /c 
     70# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /I "../../pjnath/include" /I "../../pjmedia/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "PJ_WIN32" /D "PJ_M_I386" /FR /FD /GZ /c 
    7171# SUBTRACT CPP /YX 
    7272# ADD BASE RSC /l 0x409 /d "_DEBUG" 
  • pjproject/trunk/pjsip/src/pjsip/sip_msg.c

    r1417 r1610  
    17741774    buf += hdr->transport.slen; 
    17751775    *buf++ = ' '; 
    1776     pj_memcpy(buf, hdr->sent_by.host.ptr, hdr->sent_by.host.slen); 
    1777     buf += hdr->sent_by.host.slen; 
     1776 
     1777    /* Check if host contains IPv6 */ 
     1778    if (pj_memchr(hdr->sent_by.host.ptr, ':', hdr->sent_by.host.slen)) { 
     1779        copy_advance_pair_quote_cond(buf, "", 0, hdr->sent_by.host, '[', ']'); 
     1780    } else { 
     1781        copy_advance_check(buf, hdr->sent_by.host); 
     1782    } 
     1783 
    17781784    if (hdr->sent_by.port != 0) { 
    17791785        *buf++ = ':'; 
     
    18041810 
    18051811 
    1806     copy_advance_pair(buf, ";maddr=", 7, hdr->maddr_param); 
     1812    if (hdr->maddr_param.slen) { 
     1813        /* Detect IPv6 IP address */ 
     1814        if (pj_memchr(hdr->maddr_param.ptr, ':', hdr->maddr_param.slen)) { 
     1815            copy_advance_pair_quote_cond(buf, ";maddr=", 7, hdr->maddr_param, 
     1816                                         '[', ']'); 
     1817        } else { 
     1818            copy_advance_pair(buf, ";maddr=", 7, hdr->maddr_param); 
     1819        } 
     1820    } 
     1821 
    18071822    copy_advance_pair(buf, ";received=", 10, hdr->recvd_param); 
    18081823    copy_advance_pair(buf, ";branch=", 8, hdr->branch_param); 
  • pjproject/trunk/pjsip/src/pjsip/sip_parser.c

    r1566 r1610  
    10781078                    pvalue->slen -= 2; 
    10791079                } 
     1080            } else if (*scanner->curptr == '[') { 
     1081                /* pvalue can be a quoted IPv6; in this case, the 
     1082                 * '[' and ']' quote characters are to be removed 
     1083                 * from the pvalue.  
     1084                 */ 
     1085                pj_scan_get_char(scanner); 
     1086                pj_scan_get_until_ch(scanner, ']', pvalue); 
     1087                pj_scan_get_char(scanner); 
    10801088            } else if(pj_cis_match(spec, *scanner->curptr)) { 
    10811089                parser_get_and_unescape(scanner, pool, spec, esc_spec, pvalue); 
     
    11581166} 
    11591167 
     1168/* Parse host part: 
     1169 *   host =  hostname / IPv4address / IPv6reference 
     1170 */ 
     1171static void int_parse_host(pj_scanner *scanner, pj_str_t *host) 
     1172{ 
     1173    if (*scanner->curptr == '[') { 
     1174        /* Note: the '[' and ']' characters are removed from the host */ 
     1175        pj_scan_get_char(scanner); 
     1176        pj_scan_get_until_ch(scanner, ']', host); 
     1177        pj_scan_get_char(scanner); 
     1178    } else { 
     1179        pj_scan_get( scanner, &pconst.pjsip_HOST_SPEC, host); 
     1180    } 
     1181} 
     1182 
    11601183/* Parse host:port in URI. */ 
    11611184static void int_parse_uri_host_port( pj_scanner *scanner,  
    11621185                                     pj_str_t *host, int *p_port) 
    11631186{ 
    1164     pj_scan_get( scanner, &pconst.pjsip_HOST_SPEC, host); 
     1187    int_parse_host(scanner, host); 
     1188 
    11651189    /* RFC3261 section 19.1.2: host don't need to be unescaped */ 
    11661190    if (*scanner->curptr == ':') { 
     
    18431867        pj_str_t pname, pvalue; 
    18441868 
    1845         int_parse_param( scanner, pool, &pname, &pvalue, 0); 
     1869        //Parse with PARAM_CHAR instead, to allow IPv6 
     1870        //int_parse_param( scanner, pool, &pname, &pvalue, 0); 
     1871        /* Get ';' character */ 
     1872        pj_scan_get_char(scanner); 
     1873 
     1874        parse_param_imp(scanner, pool, &pname, &pvalue,  
     1875                        &pconst.pjsip_PARAM_CHAR_SPEC, 
     1876                        &pconst.pjsip_PARAM_CHAR_SPEC_ESC, 0); 
    18461877 
    18471878        if (!parser_stricmp(pname, pconst.pjsip_BRANCH_STR) && pvalue.slen) { 
     
    19842015 
    19852016        pj_scan_get( scanner, &pconst.pjsip_TOKEN_SPEC, &hdr->transport); 
    1986         pj_scan_get( scanner, &pconst.pjsip_HOST_SPEC, &hdr->sent_by.host); 
     2017        int_parse_host(scanner, &hdr->sent_by.host); 
    19872018 
    19882019        if (*scanner->curptr==':') { 
  • pjproject/trunk/pjsip/src/pjsip/sip_resolve.c

    r1602 r1610  
    226226    if (ip_addr_ver || resolver->res == NULL) { 
    227227 
    228         pj_in_addr ip_addr; 
     228        char ip_addr[PJ_INET6_ADDRSTRLEN]; 
    229229        int af; 
    230230        pj_addrinfo ai; 
     
    272272 
    273273        /* Call the callback. */ 
    274         ip_addr = ((pj_sockaddr_in*)&svr_addr.entry[0].addr)->sin_addr; 
    275274        PJ_LOG(5,(THIS_FILE,  
    276275                  "Target '%.*s:%d' type=%s resolved to " 
    277                   "'%s:%d' type=%s", 
     276                  "'%s:%d' type=%s (%s)", 
    278277                  (int)target->addr.host.slen, 
    279278                  target->addr.host.ptr, 
    280279                  target->addr.port, 
    281280                  pjsip_transport_get_type_name(target->type), 
    282                   pj_inet_ntoa(ip_addr), 
     281                  pj_inet_ntop2(af, pj_sockaddr_get_addr(&svr_addr.entry[0].addr), 
     282                                ip_addr, sizeof(ip_addr)), 
    283283                  srv_port, 
    284                   pjsip_transport_get_type_name(type))); 
     284                  pjsip_transport_get_type_name(type), 
     285                  pjsip_transport_get_type_desc(type))); 
    285286        svr_addr.count = 1; 
    286287        svr_addr.entry[0].priority = 0; 
    287288        svr_addr.entry[0].weight = 0; 
    288289        svr_addr.entry[0].type = type; 
    289         svr_addr.entry[0].addr_len = sizeof(pj_sockaddr_in); 
     290        svr_addr.entry[0].addr_len = pj_sockaddr_get_len(&svr_addr.entry[0].addr); 
    290291        (*cb)(status, token, &svr_addr); 
    291292 
  • pjproject/trunk/pjsip/src/pjsip/sip_transport.c

    r1602 r1610  
    273273PJ_DEF(int) pjsip_transport_type_get_af(pjsip_transport_type_e type) 
    274274{ 
    275     if (type | PJSIP_TRANSPORT_IPV6) 
     275    if (type & PJSIP_TRANSPORT_IPV6) 
    276276        return pj_AF_INET6(); 
    277277    else 
     
    11591159    } 
    11601160 
    1161     return PJ_SUCCESS; 
     1161    return status; 
    11621162} 
    11631163 
  • pjproject/trunk/pjsip/src/pjsip/sip_uri.c

    r1417 r1610  
    266266    /* Print host. */ 
    267267    pj_assert(url->host.slen != 0); 
    268     copy_advance_check(buf, url->host); 
     268    /* Detect IPv6 IP address */ 
     269    if (pj_memchr(url->host.ptr, ':', url->host.slen)) { 
     270        copy_advance_pair_quote_cond(buf, "", 0, url->host, '[', ']'); 
     271    } else { 
     272        copy_advance_check(buf, url->host); 
     273    } 
    269274 
    270275    /* Only print port if it is explicitly specified.  
     
    312317 
    313318    /* maddr param is not allowed in From and To header. */ 
    314     if (context != PJSIP_URI_IN_FROMTO_HDR) { 
    315         copy_advance_pair_escape(buf, ";maddr=", 7, url->maddr_param, 
    316                                  pc->pjsip_PARAM_CHAR_SPEC); 
     319    if (context != PJSIP_URI_IN_FROMTO_HDR && url->maddr_param.slen) { 
     320        /* Detect IPv6 IP address */ 
     321        if (pj_memchr(url->maddr_param.ptr, ':', url->maddr_param.slen)) { 
     322            copy_advance_pair_quote_cond(buf, ";maddr=", 7, url->maddr_param, 
     323                                         '[', ']'); 
     324        } else { 
     325            copy_advance_pair_escape(buf, ";maddr=", 7, url->maddr_param, 
     326                                     pc->pjsip_PARAM_CHAR_SPEC); 
     327        } 
    317328    } 
    318329 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c

    r1569 r1610  
    326326    pjsua_acc_config cfg; 
    327327    pjsua_transport_data *t = &pjsua_var.tpdata[tid]; 
     328    const char *beginquote, *endquote; 
     329    char transport_param[32]; 
    328330    char uri[PJSIP_MAX_URL_SIZE]; 
    329331 
     
    340342    --cfg.priority; 
    341343 
     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 
    342361    /* Build URI for the account */ 
    343362    pj_ansi_snprintf(uri, PJSIP_MAX_URL_SIZE, 
    344                      "<sip:%.*s:%d;transport=%s>",  
     363                     "<sip:%s%.*s%s:%d%s>",  
     364                     beginquote, 
    345365                     (int)t->local_name.host.slen, 
    346366                     t->local_name.host.ptr, 
     367                     endquote, 
    347368                     t->local_name.port, 
    348                      pjsip_transport_get_type_name(t->type)); 
     369                     transport_param); 
    349370 
    350371    cfg.id = pj_str(uri); 
     
    13621383    int secure; 
    13631384    int local_port; 
     1385    const char *beginquote, *endquote; 
     1386    char transport_param[32]; 
     1387 
    13641388     
    13651389    PJ_ASSERT_RETURN(pjsua_acc_is_valid(acc_id), PJ_EINVAL); 
     
    14061430        return PJSIP_EUNSUPTRANSPORT; 
    14071431 
     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 
    14081438    flag = pjsip_transport_get_flag_from_type(tp_type); 
    14091439    secure = (flag & PJSIP_TRANSPORT_SECURE) != 0; 
     
    14191449        return status; 
    14201450 
     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 
    14211469    /* Create the contact header */ 
    14221470    contact->ptr = (char*)pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE); 
    14231471    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>", 
    14251473                                     (int)acc->display.slen, 
    14261474                                     acc->display.ptr, 
     
    14301478                                     acc->user_part.ptr, 
    14311479                                     (acc->user_part.slen?"@":""), 
     1480                                     beginquote, 
    14321481                                     (int)local_addr.slen, 
    14331482                                     local_addr.ptr, 
     1483                                     endquote, 
    14341484                                     local_port, 
    1435                                      pjsip_transport_get_type_name(tp_type)); 
     1485                                     transport_param); 
    14361486 
    14371487    return PJ_SUCCESS; 
     
    14621512    int secure; 
    14631513    int local_port; 
     1514    const char *beginquote, *endquote; 
     1515    char transport_param[32]; 
    14641516     
    14651517    PJ_ASSERT_RETURN(pjsua_acc_is_valid(acc_id), PJ_EINVAL); 
     
    15091561    } else 
    15101562        tp_type = pjsip_transport_get_type_from_name(&sip_uri->transport_param); 
    1511      
     1563 
    15121564    if (tp_type == PJSIP_TRANSPORT_UNSPECIFIED) 
    15131565        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); 
    15141572 
    15151573    flag = pjsip_transport_get_flag_from_type(tp_type); 
     
    15261584        return status; 
    15271585 
     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 
    15281604    /* Create the contact header */ 
    15291605    contact->ptr = (char*) pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE); 
    15301606    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>", 
    15321608                                     (int)acc->display.slen, 
    15331609                                     acc->display.ptr, 
     
    15371613                                     acc->user_part.ptr, 
    15381614                                     (acc->user_part.slen?"@":""), 
     1615                                     beginquote, 
    15391616                                     (int)local_addr.slen, 
    15401617                                     local_addr.ptr, 
     1618                                     endquote, 
    15411619                                     local_port, 
    1542                                      pjsip_transport_get_type_name(tp_type)); 
     1620                                     transport_param); 
    15431621 
    15441622    return PJ_SUCCESS; 
  • pjproject/trunk/pjsip/src/test-pjsip/msg_test.c

    r1451 r1610  
    701701 
    702702 
     703#if INCLUDE_BENCHMARKS 
    703704static int msg_benchmark(unsigned *p_detect, unsigned *p_parse,  
    704705                         unsigned *p_print) 
     
    776777    return status; 
    777778} 
     779#endif  /* INCLUDE_BENCHMARKS */ 
    778780 
    779781/*****************************************************************************/ 
     
    796798static int hdr_test_to(pjsip_hdr *h); 
    797799static int hdr_test_via(pjsip_hdr *h); 
    798  
     800static int hdr_test_via_ipv6_1(pjsip_hdr *h); 
     801static int hdr_test_via_ipv6_2(pjsip_hdr *h); 
     802static int hdr_test_via_ipv6_3(pjsip_hdr *h); 
    799803 
    800804 
    801805#define GENERIC_PARAM        "p0=a;p1=\"ab:;cd\";p2=ab%3acd;p3" 
    802806#define GENERIC_PARAM_PARSED "p0=a;p1=\"ab:;cd\";p2=ab:cd;p3" 
    803 #define PARAM_CHAR           "[]/:&+$" 
     807#define PARAM_CHAR           "][/:&+$" 
    804808#define SIMPLE_ADDR_SPEC     "sip:host" 
    805809#define ADDR_SPEC            SIMPLE_ADDR_SPEC ";"PARAM_CHAR"="PARAM_CHAR ";p1=\";\"" 
     
    948952        "SIP/2.0/XYZ host" ";" GENERIC_PARAM, 
    949953        &hdr_test_via 
     954    }, 
     955 
     956    { 
     957        /* Via with IPv6 */ 
     958        "Via", "v", 
     959        "SIP/2.0/UDP [::1]", 
     960        &hdr_test_via_ipv6_1 
     961    }, 
     962 
     963    { 
     964        /* Via with IPv6 */ 
     965        "Via", "v", 
     966        "SIP/2.0/UDP [::1]:5061", 
     967        &hdr_test_via_ipv6_2 
     968    }, 
     969 
     970    { 
     971        /* Via with IPv6 */ 
     972        "Via", "v", 
     973        "SIP/2.0/UDP [::1];rport=5061;received=::2", 
     974        &hdr_test_via_ipv6_3 
    950975    } 
    951976}; 
     
    11121137 
    11131138/*  
    1114 #define PARAM_CHAR          "[]/:&+$" 
     1139#define PARAM_CHAR          "][/:&+$" 
    11151140#define SIMPLE_ADDR_SPEC    "sip:host" 
    11161141#define ADDR_SPEC            SIMPLE_ADDR_SPEC ";"PARAM_CHAR"="PARAM_CHAR ";p1=\";\"" 
     
    14331458} 
    14341459 
     1460 
     1461/* 
     1462    "SIP/2.0/UDP [::1]" 
     1463 */ 
     1464static int hdr_test_via_ipv6_1(pjsip_hdr *h) 
     1465{ 
     1466    pjsip_via_hdr *hdr = (pjsip_via_hdr*)h; 
     1467 
     1468    if (h->type != PJSIP_H_VIA) 
     1469        return -2610; 
     1470 
     1471    if (pj_strcmp2(&hdr->transport, "UDP")) 
     1472        return -2615; 
     1473 
     1474    if (pj_strcmp2(&hdr->sent_by.host, "::1")) 
     1475        return -2620; 
     1476 
     1477    if (hdr->sent_by.port != 0) 
     1478        return -2630; 
     1479 
     1480    return 0; 
     1481} 
     1482 
     1483/* "SIP/2.0/UDP [::1]:5061" */ 
     1484static int hdr_test_via_ipv6_2(pjsip_hdr *h) 
     1485{ 
     1486    pjsip_via_hdr *hdr = (pjsip_via_hdr*)h; 
     1487 
     1488    if (h->type != PJSIP_H_VIA) 
     1489        return -2710; 
     1490 
     1491    if (pj_strcmp2(&hdr->transport, "UDP")) 
     1492        return -2715; 
     1493 
     1494    if (pj_strcmp2(&hdr->sent_by.host, "::1")) 
     1495        return -2720; 
     1496 
     1497    if (hdr->sent_by.port != 5061) 
     1498        return -2730; 
     1499 
     1500    return 0; 
     1501} 
     1502 
     1503/* "SIP/2.0/UDP [::1];rport=5061;received=::2" */ 
     1504static int hdr_test_via_ipv6_3(pjsip_hdr *h) 
     1505{ 
     1506    pjsip_via_hdr *hdr = (pjsip_via_hdr*)h; 
     1507 
     1508    if (h->type != PJSIP_H_VIA) 
     1509        return -2810; 
     1510 
     1511    if (pj_strcmp2(&hdr->transport, "UDP")) 
     1512        return -2815; 
     1513 
     1514    if (pj_strcmp2(&hdr->sent_by.host, "::1")) 
     1515        return -2820; 
     1516 
     1517    if (hdr->sent_by.port != 0) 
     1518        return -2830; 
     1519 
     1520    if (pj_strcmp2(&hdr->recvd_param, "::2")) 
     1521        return -2840; 
     1522 
     1523    if (hdr->rport_param != 5061) 
     1524        return -2850; 
     1525 
     1526    return 0; 
     1527} 
    14351528 
    14361529static int hdr_test(void) 
     
    15341627    pj_status_t status; 
    15351628 
     1629    status = hdr_test(); 
     1630    if (status != 0) 
     1631        return status; 
     1632 
    15361633    status = simple_test(); 
    15371634    if (status != PJ_SUCCESS) 
    15381635        return status; 
    15391636 
    1540     status = hdr_test(); 
    1541     if (status != 0) 
    1542         return status; 
    1543  
     1637#if INCLUDE_BENCHMARKS 
    15441638    for (i=0; i<COUNT; ++i) { 
    15451639        PJ_LOG(3,(THIS_FILE, "  benchmarking (%d of %d)..", i+1, COUNT)); 
     
    16091703                "The value is derived from msg-print-per-sec above."); 
    16101704 
     1705#endif  /* INCLUDE_BENCHMARKS */ 
    16111706 
    16121707    return PJ_SUCCESS; 
  • pjproject/trunk/pjsip/src/test-pjsip/test.h

    r1469 r1610  
    4141#define INCLUDE_TSX_GROUP           1 
    4242#define INCLUDE_INV_GROUP           1 
     43 
     44#define INCLUDE_BENCHMARKS          1 
    4345 
    4446/* 
  • pjproject/trunk/pjsip/src/test-pjsip/uri_test.c

    r1373 r1610  
    7777static pjsip_uri *create_uri33( pj_pool_t *pool ); 
    7878static pjsip_uri *create_uri34( pj_pool_t *pool ); 
    79 //static pjsip_uri *create_uri35( pj_pool_t *pool ); 
     79static pjsip_uri *create_uri35( pj_pool_t *pool ); 
     80static pjsip_uri *create_uri36( pj_pool_t *pool ); 
    8081static pjsip_uri *create_dummy( pj_pool_t *pool ); 
    8182 
     
    319320        "tel:911;p1=p1;p2=p2" 
    320321    }, 
    321      
     322    { 
     323        /* 35: IPv6 in host and maddr parameter */ 
     324        PJ_SUCCESS, 
     325        "sip:user@[::1];maddr=[::01]", 
     326        &create_uri35, 
     327        "sip:user@[::1];maddr=[::01]" 
     328    }, 
     329    { 
     330        /* 36: IPv6 in host and maddr, without username */ 
     331        PJ_SUCCESS, 
     332        "sip:[::1];maddr=[::01]", 
     333        &create_uri36, 
     334        "sip:[::1];maddr=[::01]" 
     335    } 
     336 
    322337}; 
    323338 
     
    670685} 
    671686 
     687/* "sip:user@[::1];maddr=[::01]" */ 
     688static pjsip_uri *create_uri35( pj_pool_t *pool ) 
     689{ 
     690    pjsip_sip_uri *url; 
     691    url = pjsip_sip_uri_create(pool, 0); 
     692    url->user = pj_str("user"); 
     693    url->host = pj_str("::1"); 
     694    url->maddr_param = pj_str("::01"); 
     695    return (pjsip_uri*)url; 
     696} 
     697 
     698/* "sip:[::1];maddr=[::01]" */ 
     699static pjsip_uri *create_uri36( pj_pool_t *pool ) 
     700{ 
     701    pjsip_sip_uri *url; 
     702    url = pjsip_sip_uri_create(pool, 0); 
     703    url->host = pj_str("::1"); 
     704    url->maddr_param = pj_str("::01"); 
     705    return (pjsip_uri*)url; 
     706 
     707} 
    672708 
    673709static pjsip_uri *create_dummy(pj_pool_t *pool) 
     
    825861} 
    826862 
     863#if INCLUDE_BENCHMARKS 
    827864static int uri_benchmark(unsigned *p_parse, unsigned *p_print, unsigned *p_cmp) 
    828865{ 
     
    910947    return status; 
    911948} 
    912  
     949#endif  /* INCLUDE_BENCHMARKS */ 
    913950 
    914951/*****************************************************************************/ 
     
    930967        return status; 
    931968 
     969#if INCLUDE_BENCHMARKS 
    932970    for (i=0; i<COUNT; ++i) { 
    933971        PJ_LOG(3,(THIS_FILE, "  benchmarking (%d of %d)...", i+1, COUNT)); 
     
    9941032    report_ival("uri-cmp-per-sec", max, "URI/sec", desc); 
    9951033 
     1034#endif  /* INCLUDE_BENCHMARKS */ 
     1035 
    9961036    return PJ_SUCCESS; 
    9971037} 
Note: See TracChangeset for help on using the changeset viewer.