Ignore:
Timestamp:
Nov 21, 2005 1:55:47 AM (18 years ago)
Author:
bennylp
Message:

Set svn:eol-style property

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip/sip_parser.c

    • Property svn:eol-style set to native
    r64 r65  
    114114                                   pjsip_parser_err_report *err_list); 
    115115static void         int_parse_param( pj_scanner *scanner,  
     116                                     pj_pool_t *pool, 
    116117                                     pj_str_t *pname,  
    117118                                     pj_str_t *pvalue); 
    118119static void         int_parse_hparam( pj_scanner *scanner, 
     120                                      pj_pool_t *pool, 
    119121                                      pj_str_t *hname, 
    120122                                      pj_str_t *hvalue ); 
     
    126128                                           pjsip_status_line *line); 
    127129static void         int_parse_user_pass( pj_scanner *scanner,  
     130                                         pj_pool_t *pool, 
    128131                                         pj_str_t *user,  
    129132                                         pj_str_t *pass); 
     
    287290    status = pj_cis_dup(&pjsip_USER_SPEC, &pjsip_ALNUM_SPEC); 
    288291    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 
    289     pj_cis_add_str( &pjsip_USER_SPEC, ESCAPED USER_UNRESERVED ); 
     292    pj_cis_add_str( &pjsip_USER_SPEC, UNRESERVED ESCAPED USER_UNRESERVED ); 
    290293 
    291294    status = pj_cis_dup(&pjsip_PASSWD_SPEC, &pjsip_ALNUM_SPEC); 
    292295    PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 
    293     pj_cis_add_str( &pjsip_PASSWD_SPEC, MARK ESCAPED PASS); 
     296    pj_cis_add_str( &pjsip_PASSWD_SPEC, UNRESERVED ESCAPED PASS); 
    294297 
    295298    status = pj_cis_init(&cis_buf, &pjsip_PROBE_USER_HOST_SPEC); 
     
    866869 
    867870/* Parse parameter (pname ["=" pvalue]). */ 
    868 void pjsip_parse_param_imp(  pj_scanner *scanner, 
     871void pjsip_parse_param_imp(  pj_scanner *scanner, pj_pool_t *pool, 
    869872                             pj_str_t *pname, pj_str_t *pvalue, 
    870873                             unsigned option) 
     
    872875    /* pname */ 
    873876    pj_scan_get(scanner, &pjsip_PARAM_CHAR_SPEC, pname); 
    874     pj_str_unescape(pname); 
     877    *pname = pj_str_unescape(pool, pname); 
    875878 
    876879    /* pvalue, if any */ 
     
    886889        } else { 
    887890            pj_scan_get(scanner, &pjsip_PARAM_CHAR_SPEC, pvalue); 
    888             pj_str_unescape(pvalue); 
     891            *pvalue = pj_str_unescape(pool, pvalue); 
    889892        } 
    890893    } else { 
     
    895898 
    896899/* Parse parameter (";" pname ["=" pvalue]). */ 
    897 static void int_parse_param( pj_scanner *scanner, 
     900static void int_parse_param( pj_scanner *scanner, pj_pool_t *pool, 
    898901                             pj_str_t *pname, pj_str_t *pvalue) 
    899902{ 
     
    902905 
    903906    /* Get pname and optionally pvalue */ 
    904     pjsip_parse_param_imp(scanner, pname, pvalue, 0); 
     907    pjsip_parse_param_imp(scanner, pool, pname, pvalue,  
     908                          PJSIP_PARSE_REMOVE_QUOTE); 
    905909} 
    906910 
    907911/* Parse header parameter. */ 
    908 static void int_parse_hparam( pj_scanner *scanner, 
     912static void int_parse_hparam( pj_scanner *scanner, pj_pool_t *pool, 
    909913                              pj_str_t *hname, pj_str_t *hvalue ) 
    910914{ 
     
    914918    /* hname */ 
    915919    pj_scan_get(scanner, &pjsip_HDR_CHAR_SPEC, hname); 
    916     pj_str_unescape(hname); 
     920    *hname = pj_str_unescape(pool, hname); 
    917921 
    918922    /* pvalue, if any */ 
     
    920924        pj_scan_get_char(scanner); 
    921925        pj_scan_get(scanner, &pjsip_HDR_CHAR_SPEC, hvalue); 
    922         pj_str_unescape(hvalue); 
     926        *hvalue = pj_str_unescape(pool, hvalue); 
    923927    } else { 
    924928        hvalue->ptr = NULL; 
     
    937941        pj_scan_get_char(scanner); 
    938942        pj_scan_get(scanner, &pjsip_DIGIT_SPEC, &port); 
    939         pj_str_unescape(&port); 
    940943        *p_port = pj_strtoul(&port); 
    941944    } else { 
     
    962965 
    963966/* Parse user:pass tokens in an URI. */ 
    964 static void int_parse_user_pass( pj_scanner *scanner,  
     967static void int_parse_user_pass( pj_scanner *scanner, pj_pool_t *pool, 
    965968                                 pj_str_t *user, pj_str_t *pass) 
    966969{ 
    967970    pj_scan_get( scanner, &pjsip_USER_SPEC, user); 
    968     pj_str_unescape(user); 
     971    *user = pj_str_unescape(pool, user); 
    969972 
    970973    if ( *scanner->curptr == ':') { 
    971974        pj_scan_get_char( scanner ); 
    972975        pj_scan_get( scanner, &pjsip_PASSWD_SPEC, pass); 
    973         pj_str_unescape(pass); 
     976        *pass = pj_str_unescape(pool, pass); 
    974977    } else { 
    975978        pass->ptr = NULL; 
     
    11051108 
    11061109    if (int_is_next_user(scanner)) { 
    1107         int_parse_user_pass(scanner, &url->user, &url->passwd); 
     1110        int_parse_user_pass(scanner, pool, &url->user, &url->passwd); 
    11081111    } 
    11091112 
     
    11151118        pj_str_t pname, pvalue; 
    11161119 
    1117         int_parse_param( scanner, &pname, &pvalue); 
     1120        int_parse_param( scanner, pool, &pname, &pvalue); 
    11181121 
    11191122        if (!parser_stricmp(pname, pjsip_USER_STR) && pvalue.slen) { 
     
    11471150        pjsip_param *param; 
    11481151        param = pj_pool_alloc(pool, sizeof(pjsip_param)); 
    1149         int_parse_hparam(scanner, &param->name, &param->value); 
     1152        int_parse_hparam(scanner, pool, &param->name, &param->value); 
    11501153        pj_list_insert_before(&url->header_param, param); 
    11511154        hsep = '&'; 
     
    11681171    if (*scanner->curptr == '"') { 
    11691172        pj_scan_get_quote( scanner, '"', '"', &name_addr->display); 
     1173        /* Trim the leading and ending quote */ 
     1174        name_addr->display.ptr++; 
     1175        name_addr->display.slen -= 2; 
    11701176 
    11711177    } else if (*scanner->curptr != '<') { 
     
    13241330        pj_str_t pname, pvalue; 
    13251331 
    1326         int_parse_param( scanner, &pname, &pvalue); 
     1332        int_parse_param( scanner, pool, &pname, &pvalue); 
    13271333        if (!parser_stricmp(pname, pjsip_Q_STR) && pvalue.slen) { 
    13281334            char *dot_pos = memchr(pvalue.ptr, '.', pvalue.slen); 
     
    13381344 
    13391345        } else { 
    1340             concat_param(&hdr->other_param, pool, &pname, &pvalue); 
     1346            pjsip_param *p = pj_pool_alloc(pool, sizeof(pjsip_param)); 
     1347            p->name = pname; 
     1348            p->value = pvalue; 
     1349            pj_list_insert_before(&hdr->other_param, p); 
    13411350        } 
    13421351    } 
     
    14131422    while (*scanner->curptr == ';') { 
    14141423        pj_str_t pname, pvalue; 
    1415         int_parse_param(scanner, &pname, &pvalue); 
     1424        int_parse_param(scanner, ctx->pool, &pname, &pvalue); 
    14161425        concat_param(&hdr->media.param, ctx->pool, &pname, &pvalue); 
    14171426    } 
     
    14661475        pj_str_t pname, pvalue; 
    14671476 
    1468         int_parse_param( scanner, &pname, &pvalue); 
     1477        int_parse_param( scanner, pool, &pname, &pvalue); 
    14691478 
    14701479        if (!parser_stricmp(pname, pjsip_TAG_STR)) { 
     
    14721481             
    14731482        } else { 
    1474             concat_param(&hdr->other_param, pool, &pname, &pvalue); 
     1483            pjsip_param *p = pj_pool_alloc(pool, sizeof(pjsip_param)); 
     1484            p->name = pname; 
     1485            p->value = pvalue; 
     1486            pj_list_insert_before(&hdr->other_param, p); 
    14751487        } 
    14761488    } 
     
    15471559        pj_str_t pname, pvalue; 
    15481560 
    1549         int_parse_param( scanner, &pname, &pvalue); 
     1561        int_parse_param( scanner, pool, &pname, &pvalue); 
    15501562 
    15511563        if (!parser_stricmp(pname, pjsip_BRANCH_STR) && pvalue.slen) { 
     
    15671579                hdr->rport_param = 0; 
    15681580        } else { 
    1569             concat_param( &hdr->other_param, pool, &pname, &pvalue); 
    1570         } 
    1571     } 
    1572  
     1581            pjsip_param *p = pj_pool_alloc(pool, sizeof(pjsip_param)); 
     1582            p->name = pname; 
     1583            p->value = pvalue; 
     1584            pj_list_insert_before(&hdr->other_param, p); 
     1585        } 
     1586    } 
    15731587} 
    15741588 
     
    16031617 
    16041618    pj_memcpy(&hdr->name_addr, temp, sizeof(*temp)); 
    1605     if (*scanner->curptr == ';') { 
    1606         pj_scan_get_until(scanner, &pjsip_NEWLINE_OR_EOF_SPEC,  
    1607                           &hdr->other_param); 
     1619 
     1620    while (*scanner->curptr == ';') { 
     1621        pjsip_param *p = pj_pool_alloc(pool, sizeof(pjsip_param)); 
     1622        int_parse_param(scanner, pool, &p->name, &p->value); 
     1623        pj_list_insert_before(&hdr->other_param, p); 
    16081624    } 
    16091625} 
Note: See TracChangeset for help on using the changeset viewer.