Changeset 1417 for pjproject/trunk/pjsip/src/pjsip/sip_parser.c
- Timestamp:
- Aug 16, 2007 10:11:44 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsip/sip_parser.c
r1345 r1417 88 88 int PJSIP_SYN_ERR_EXCEPTION; 89 89 90 const pj_str_t pjsip_USER_STR = { "user", 4}; 91 const pj_str_t pjsip_METHOD_STR = { "method", 6}; 92 const pj_str_t pjsip_TRANSPORT_STR = { "transport", 9}; 93 const pj_str_t pjsip_MADDR_STR = { "maddr", 5 }; 94 const pj_str_t pjsip_LR_STR = { "lr", 2 }; 95 const pj_str_t pjsip_SIP_STR = { "sip", 3 }; 96 const pj_str_t pjsip_SIPS_STR = { "sips", 4 }; 97 const pj_str_t pjsip_TEL_STR = { "tel", 3 }; 98 const pj_str_t pjsip_BRANCH_STR = { "branch", 6 }; 99 const pj_str_t pjsip_TTL_STR = { "ttl", 3 }; 100 const pj_str_t pjsip_RECEIVED_STR = { "received", 8 }; 101 const pj_str_t pjsip_Q_STR = { "q", 1 }; 102 const pj_str_t pjsip_EXPIRES_STR = { "expires", 7 }; 103 const pj_str_t pjsip_TAG_STR = { "tag", 3 }; 104 const pj_str_t pjsip_RPORT_STR = { "rport", 5}; 90 /* Parser constants */ 91 static pjsip_parser_const_t pconst = 92 { 93 { "user", 4}, /* pjsip_USER_STR */ 94 { "method", 6}, /* pjsip_METHOD_STR */ 95 { "transport", 9}, /* pjsip_TRANSPORT_STR */ 96 { "maddr", 5 }, /* pjsip_MADDR_STR */ 97 { "lr", 2 }, /* pjsip_LR_STR */ 98 { "sip", 3 }, /* pjsip_SIP_STR */ 99 { "sips", 4 }, /* pjsip_SIPS_STR */ 100 { "tel", 3 }, /* pjsip_TEL_STR */ 101 { "branch", 6 }, /* pjsip_BRANCH_STR */ 102 { "ttl", 3 }, /* pjsip_TTL_STR */ 103 { "received", 8 }, /* pjsip_RECEIVED_STR */ 104 { "q", 1 }, /* pjsip_Q_STR */ 105 { "expires", 7 }, /* pjsip_EXPIRES_STR */ 106 { "tag", 3 }, /* pjsip_TAG_STR */ 107 { "rport", 5} /* pjsip_RPORT_STR */ 108 }; 105 109 106 110 /* Character Input Specification buffer. */ 107 111 static pj_cis_buf_t cis_buf; 108 109 /* Character Input Specifications. */110 pj_cis_t pjsip_HOST_SPEC, /* For scanning host part. */111 pjsip_DIGIT_SPEC, /* Decimal digits */112 pjsip_ALPHA_SPEC, /* Alpha (A-Z, a-z) */113 pjsip_ALNUM_SPEC, /* Decimal + Alpha. */114 pjsip_TOKEN_SPEC, /* Token. */115 pjsip_TOKEN_SPEC_ESC, /* Token without '%' character */116 pjsip_HEX_SPEC, /* Hexadecimal digits. */117 pjsip_PARAM_CHAR_SPEC, /* For scanning pname (or pvalue when118 * it's not quoted.) */119 pjsip_PARAM_CHAR_SPEC_ESC, /* The variant without escaped char */120 pjsip_HDR_CHAR_SPEC, /* Chars in hname or hvalue */121 pjsip_HDR_CHAR_SPEC_ESC, /* Variant without escaped char */122 pjsip_PROBE_USER_HOST_SPEC, /* Hostname characters. */123 pjsip_PASSWD_SPEC, /* Password. */124 pjsip_PASSWD_SPEC_ESC, /* Variant without escaped char */125 pjsip_USER_SPEC, /* User */126 pjsip_USER_SPEC_ESC, /* Variant without escaped char */127 pjsip_USER_SPEC_LENIENT, /* User, with additional '#' char */128 pjsip_USER_SPEC_LENIENT_ESC,129 pjsip_NOT_COMMA_OR_NEWLINE, /* Array separator. */130 pjsip_NOT_NEWLINE, /* For eating up header.*/131 pjsip_DISPLAY_SPEC; /* Used when searching for display name132 * in URL. */133 112 134 113 … … 244 223 } 245 224 225 /* Get parser constants. */ 226 PJ_DEF(const pjsip_parser_const_t*) pjsip_parser_const(void) 227 { 228 return &pconst; 229 } 230 246 231 /* Concatenate unrecognized params into single string. */ 247 void pjsip_concat_param_imp( pj_str_t *param, pj_pool_t *pool, 248 const pj_str_t *pname, const pj_str_t *pvalue, 249 int sepchar) 232 PJ_DEF(void) pjsip_concat_param_imp(pj_str_t *param, pj_pool_t *pool, 233 const pj_str_t *pname, 234 const pj_str_t *pvalue, 235 int sepchar) 250 236 { 251 237 char *new_param, *p; … … 301 287 pj_cis_buf_init(&cis_buf); 302 288 303 status = pj_cis_init(&cis_buf, &p jsip_DIGIT_SPEC);304 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 305 pj_cis_add_num(&p jsip_DIGIT_SPEC);289 status = pj_cis_init(&cis_buf, &pconst.pjsip_DIGIT_SPEC); 290 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 291 pj_cis_add_num(&pconst.pjsip_DIGIT_SPEC); 306 292 307 status = pj_cis_init(&cis_buf, &p jsip_ALPHA_SPEC);308 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 309 pj_cis_add_alpha( &p jsip_ALPHA_SPEC );293 status = pj_cis_init(&cis_buf, &pconst.pjsip_ALPHA_SPEC); 294 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 295 pj_cis_add_alpha( &pconst.pjsip_ALPHA_SPEC ); 310 296 311 status = pj_cis_init(&cis_buf, &p jsip_ALNUM_SPEC);312 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 313 pj_cis_add_alpha( &p jsip_ALNUM_SPEC );314 pj_cis_add_num( &p jsip_ALNUM_SPEC );315 316 status = pj_cis_init(&cis_buf, &p jsip_NOT_NEWLINE);317 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 318 pj_cis_add_str(&p jsip_NOT_NEWLINE, "\r\n");319 pj_cis_invert(&p jsip_NOT_NEWLINE);320 321 status = pj_cis_init(&cis_buf, &p jsip_NOT_COMMA_OR_NEWLINE);322 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 323 pj_cis_add_str( &p jsip_NOT_COMMA_OR_NEWLINE, ",\r\n");324 pj_cis_invert(&p jsip_NOT_COMMA_OR_NEWLINE);325 326 status = pj_cis_dup(&p jsip_TOKEN_SPEC, &pjsip_ALNUM_SPEC);327 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 328 pj_cis_add_str( &p jsip_TOKEN_SPEC, TOKEN);329 330 status = pj_cis_dup(&p jsip_TOKEN_SPEC_ESC, &pjsip_TOKEN_SPEC);331 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 332 pj_cis_del_str(&p jsip_TOKEN_SPEC_ESC, "%");333 334 status = pj_cis_dup(&p jsip_HOST_SPEC, &pjsip_ALNUM_SPEC);335 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 336 pj_cis_add_str( &p jsip_HOST_SPEC, HOST);337 338 status = pj_cis_dup(&p jsip_HEX_SPEC, &pjsip_DIGIT_SPEC);339 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 340 pj_cis_add_str( &p jsip_HEX_SPEC, HEX_DIGIT);341 342 status = pj_cis_dup(&p jsip_PARAM_CHAR_SPEC, &pjsip_ALNUM_SPEC);343 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 344 pj_cis_add_str(&p jsip_PARAM_CHAR_SPEC, PARAM_CHAR);345 346 status = pj_cis_dup(&p jsip_PARAM_CHAR_SPEC_ESC, &pjsip_PARAM_CHAR_SPEC);347 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 348 pj_cis_del_str(&p jsip_PARAM_CHAR_SPEC_ESC, ESCAPED);349 350 status = pj_cis_dup(&p jsip_HDR_CHAR_SPEC, &pjsip_ALNUM_SPEC);351 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 352 pj_cis_add_str(&p jsip_HDR_CHAR_SPEC, HDR_CHAR);353 354 status = pj_cis_dup(&p jsip_HDR_CHAR_SPEC_ESC, &pjsip_HDR_CHAR_SPEC);355 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 356 pj_cis_del_str(&p jsip_HDR_CHAR_SPEC_ESC, ESCAPED);357 358 status = pj_cis_dup(&p jsip_USER_SPEC, &pjsip_ALNUM_SPEC);359 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 360 pj_cis_add_str( &p jsip_USER_SPEC, UNRESERVED ESCAPED USER_UNRESERVED );361 362 status = pj_cis_dup(&p jsip_USER_SPEC_ESC, &pjsip_USER_SPEC);363 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 364 pj_cis_del_str( &p jsip_USER_SPEC_ESC, ESCAPED);365 366 status = pj_cis_dup(&p jsip_USER_SPEC_LENIENT, &pjsip_USER_SPEC);367 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 368 pj_cis_add_str(&p jsip_USER_SPEC_LENIENT, "#");369 370 status = pj_cis_dup(&p jsip_USER_SPEC_LENIENT_ESC, &pjsip_USER_SPEC_ESC);371 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 372 pj_cis_add_str(&p jsip_USER_SPEC_LENIENT_ESC, "#");373 374 status = pj_cis_dup(&p jsip_PASSWD_SPEC, &pjsip_ALNUM_SPEC);375 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 376 pj_cis_add_str( &p jsip_PASSWD_SPEC, UNRESERVED ESCAPED PASS);377 378 status = pj_cis_dup(&p jsip_PASSWD_SPEC_ESC, &pjsip_PASSWD_SPEC);379 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 380 pj_cis_del_str( &p jsip_PASSWD_SPEC_ESC, ESCAPED);381 382 status = pj_cis_init(&cis_buf, &p jsip_PROBE_USER_HOST_SPEC);383 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 384 pj_cis_add_str( &p jsip_PROBE_USER_HOST_SPEC, "@ \n>");385 pj_cis_invert( &p jsip_PROBE_USER_HOST_SPEC );386 387 status = pj_cis_init(&cis_buf, &p jsip_DISPLAY_SPEC);388 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 389 pj_cis_add_str( &p jsip_DISPLAY_SPEC, ":\r\n<");390 pj_cis_invert(&p jsip_DISPLAY_SPEC);297 status = pj_cis_init(&cis_buf, &pconst.pjsip_ALNUM_SPEC); 298 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 299 pj_cis_add_alpha( &pconst.pjsip_ALNUM_SPEC ); 300 pj_cis_add_num( &pconst.pjsip_ALNUM_SPEC ); 301 302 status = pj_cis_init(&cis_buf, &pconst.pjsip_NOT_NEWLINE); 303 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 304 pj_cis_add_str(&pconst.pjsip_NOT_NEWLINE, "\r\n"); 305 pj_cis_invert(&pconst.pjsip_NOT_NEWLINE); 306 307 status = pj_cis_init(&cis_buf, &pconst.pjsip_NOT_COMMA_OR_NEWLINE); 308 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 309 pj_cis_add_str( &pconst.pjsip_NOT_COMMA_OR_NEWLINE, ",\r\n"); 310 pj_cis_invert(&pconst.pjsip_NOT_COMMA_OR_NEWLINE); 311 312 status = pj_cis_dup(&pconst.pjsip_TOKEN_SPEC, &pconst.pjsip_ALNUM_SPEC); 313 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 314 pj_cis_add_str( &pconst.pjsip_TOKEN_SPEC, TOKEN); 315 316 status = pj_cis_dup(&pconst.pjsip_TOKEN_SPEC_ESC, &pconst.pjsip_TOKEN_SPEC); 317 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 318 pj_cis_del_str(&pconst.pjsip_TOKEN_SPEC_ESC, "%"); 319 320 status = pj_cis_dup(&pconst.pjsip_HOST_SPEC, &pconst.pjsip_ALNUM_SPEC); 321 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 322 pj_cis_add_str( &pconst.pjsip_HOST_SPEC, HOST); 323 324 status = pj_cis_dup(&pconst.pjsip_HEX_SPEC, &pconst.pjsip_DIGIT_SPEC); 325 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 326 pj_cis_add_str( &pconst.pjsip_HEX_SPEC, HEX_DIGIT); 327 328 status = pj_cis_dup(&pconst.pjsip_PARAM_CHAR_SPEC, &pconst.pjsip_ALNUM_SPEC); 329 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 330 pj_cis_add_str(&pconst.pjsip_PARAM_CHAR_SPEC, PARAM_CHAR); 331 332 status = pj_cis_dup(&pconst.pjsip_PARAM_CHAR_SPEC_ESC, &pconst.pjsip_PARAM_CHAR_SPEC); 333 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 334 pj_cis_del_str(&pconst.pjsip_PARAM_CHAR_SPEC_ESC, ESCAPED); 335 336 status = pj_cis_dup(&pconst.pjsip_HDR_CHAR_SPEC, &pconst.pjsip_ALNUM_SPEC); 337 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 338 pj_cis_add_str(&pconst.pjsip_HDR_CHAR_SPEC, HDR_CHAR); 339 340 status = pj_cis_dup(&pconst.pjsip_HDR_CHAR_SPEC_ESC, &pconst.pjsip_HDR_CHAR_SPEC); 341 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 342 pj_cis_del_str(&pconst.pjsip_HDR_CHAR_SPEC_ESC, ESCAPED); 343 344 status = pj_cis_dup(&pconst.pjsip_USER_SPEC, &pconst.pjsip_ALNUM_SPEC); 345 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 346 pj_cis_add_str( &pconst.pjsip_USER_SPEC, UNRESERVED ESCAPED USER_UNRESERVED ); 347 348 status = pj_cis_dup(&pconst.pjsip_USER_SPEC_ESC, &pconst.pjsip_USER_SPEC); 349 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 350 pj_cis_del_str( &pconst.pjsip_USER_SPEC_ESC, ESCAPED); 351 352 status = pj_cis_dup(&pconst.pjsip_USER_SPEC_LENIENT, &pconst.pjsip_USER_SPEC); 353 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 354 pj_cis_add_str(&pconst.pjsip_USER_SPEC_LENIENT, "#"); 355 356 status = pj_cis_dup(&pconst.pjsip_USER_SPEC_LENIENT_ESC, &pconst.pjsip_USER_SPEC_ESC); 357 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 358 pj_cis_add_str(&pconst.pjsip_USER_SPEC_LENIENT_ESC, "#"); 359 360 status = pj_cis_dup(&pconst.pjsip_PASSWD_SPEC, &pconst.pjsip_ALNUM_SPEC); 361 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 362 pj_cis_add_str( &pconst.pjsip_PASSWD_SPEC, UNRESERVED ESCAPED PASS); 363 364 status = pj_cis_dup(&pconst.pjsip_PASSWD_SPEC_ESC, &pconst.pjsip_PASSWD_SPEC); 365 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 366 pj_cis_del_str( &pconst.pjsip_PASSWD_SPEC_ESC, ESCAPED); 367 368 status = pj_cis_init(&cis_buf, &pconst.pjsip_PROBE_USER_HOST_SPEC); 369 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 370 pj_cis_add_str( &pconst.pjsip_PROBE_USER_HOST_SPEC, "@ \n>"); 371 pj_cis_invert( &pconst.pjsip_PROBE_USER_HOST_SPEC ); 372 373 status = pj_cis_init(&cis_buf, &pconst.pjsip_DISPLAY_SPEC); 374 PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 375 pj_cis_add_str( &pconst.pjsip_DISPLAY_SPEC, ":\r\n<"); 376 pj_cis_invert(&pconst.pjsip_DISPLAY_SPEC); 391 377 392 378 /* … … 818 804 819 805 /* Get number */ 820 pj_scan_get(&scanner, &p jsip_DIGIT_SPEC, &str_clen);806 pj_scan_get(&scanner, &pconst.pjsip_DIGIT_SPEC, &str_clen); 821 807 822 808 /* Get newline. */ … … 960 946 961 947 /* Get hname. */ 962 pj_scan_get( scanner, &p jsip_TOKEN_SPEC, &hname);948 pj_scan_get( scanner, &pconst.pjsip_TOKEN_SPEC, &hname); 963 949 if (pj_scan_get_char( scanner ) != ':') { 964 950 PJ_THROW(PJSIP_SYN_ERR_EXCEPTION); … … 1110 1096 1111 1097 /* Parse parameter (pname ["=" pvalue]) using token. */ 1112 void pjsip_parse_param_imp(pj_scanner *scanner, pj_pool_t *pool,1113 pj_str_t *pname, pj_str_t *pvalue,1114 unsigned option)1115 { 1116 parse_param_imp(scanner, pool, pname, pvalue, &p jsip_TOKEN_SPEC,1117 &p jsip_TOKEN_SPEC_ESC, option);1098 PJ_DEF(void) pjsip_parse_param_imp(pj_scanner *scanner, pj_pool_t *pool, 1099 pj_str_t *pname, pj_str_t *pvalue, 1100 unsigned option) 1101 { 1102 parse_param_imp(scanner, pool, pname, pvalue, &pconst.pjsip_TOKEN_SPEC, 1103 &pconst.pjsip_TOKEN_SPEC_ESC, option); 1118 1104 } 1119 1105 1120 1106 1121 1107 /* Parse parameter (pname ["=" pvalue]) using paramchar. */ 1122 void pjsip_parse_uri_param_imp(pj_scanner *scanner, pj_pool_t *pool,1123 pj_str_t *pname, pj_str_t *pvalue,1124 unsigned option)1125 { 1126 parse_param_imp(scanner, pool, pname, pvalue, &pjsip_PARAM_CHAR_SPEC,1127 &p jsip_PARAM_CHAR_SPEC_ESC, option);1108 PJ_DEF(void) pjsip_parse_uri_param_imp( pj_scanner *scanner, pj_pool_t *pool, 1109 pj_str_t *pname, pj_str_t *pvalue, 1110 unsigned option) 1111 { 1112 parse_param_imp(scanner,pool, pname, pvalue, &pconst.pjsip_PARAM_CHAR_SPEC, 1113 &pconst.pjsip_PARAM_CHAR_SPEC_ESC, option); 1128 1114 } 1129 1115 … … 1163 1149 1164 1150 /* hname */ 1165 parser_get_and_unescape(scanner, pool, &p jsip_HDR_CHAR_SPEC,1166 &p jsip_HDR_CHAR_SPEC_ESC, hname);1151 parser_get_and_unescape(scanner, pool, &pconst.pjsip_HDR_CHAR_SPEC, 1152 &pconst.pjsip_HDR_CHAR_SPEC_ESC, hname); 1167 1153 1168 1154 /* Init hvalue */ … … 1174 1160 pj_scan_get_char(scanner); 1175 1161 if (!pj_scan_is_eof(scanner) && 1176 pj_cis_match(&p jsip_HDR_CHAR_SPEC, *scanner->curptr))1162 pj_cis_match(&pconst.pjsip_HDR_CHAR_SPEC, *scanner->curptr)) 1177 1163 { 1178 parser_get_and_unescape(scanner, pool, &p jsip_HDR_CHAR_SPEC,1179 &p jsip_HDR_CHAR_SPEC_ESC, hvalue);1164 parser_get_and_unescape(scanner, pool, &pconst.pjsip_HDR_CHAR_SPEC, 1165 &pconst.pjsip_HDR_CHAR_SPEC_ESC, hvalue); 1180 1166 } 1181 1167 } … … 1186 1172 pj_str_t *host, int *p_port) 1187 1173 { 1188 pj_scan_get( scanner, &p jsip_HOST_SPEC, host);1174 pj_scan_get( scanner, &pconst.pjsip_HOST_SPEC, host); 1189 1175 /* RFC3261 section 19.1.2: host don't need to be unescaped */ 1190 1176 if (*scanner->curptr == ':') { 1191 1177 pj_str_t port; 1192 1178 pj_scan_get_char(scanner); 1193 pj_scan_get(scanner, &p jsip_DIGIT_SPEC, &port);1179 pj_scan_get(scanner, &pconst.pjsip_DIGIT_SPEC, &port); 1194 1180 *p_port = pj_strtoul(&port); 1195 1181 } else { … … 1207 1193 * must be a username. 1208 1194 */ 1209 if (pj_scan_peek( scanner, &p jsip_PROBE_USER_HOST_SPEC, &dummy) == '@')1195 if (pj_scan_peek( scanner, &pconst.pjsip_PROBE_USER_HOST_SPEC, &dummy) == '@') 1210 1196 is_user = 1; 1211 1197 else … … 1219 1205 pj_str_t *user, pj_str_t *pass) 1220 1206 { 1221 parser_get_and_unescape(scanner, pool, &p jsip_USER_SPEC_LENIENT,1222 &p jsip_USER_SPEC_LENIENT_ESC, user);1207 parser_get_and_unescape(scanner, pool, &pconst.pjsip_USER_SPEC_LENIENT, 1208 &pconst.pjsip_USER_SPEC_LENIENT_ESC, user); 1223 1209 1224 1210 if ( *scanner->curptr == ':') { 1225 1211 pj_scan_get_char( scanner ); 1226 parser_get_and_unescape(scanner, pool, &p jsip_PASSWD_SPEC,1227 &p jsip_PASSWD_SPEC_ESC, pass);1212 parser_get_and_unescape(scanner, pool, &pconst.pjsip_PASSWD_SPEC, 1213 &pconst.pjsip_PASSWD_SPEC_ESC, pass); 1228 1214 } else { 1229 1215 pass->ptr = NULL; … … 1252 1238 int next_ch; 1253 1239 1254 next_ch = pj_scan_peek( scanner, &p jsip_DISPLAY_SPEC, &scheme);1240 next_ch = pj_scan_peek( scanner, &pconst.pjsip_DISPLAY_SPEC, &scheme); 1255 1241 1256 1242 if (next_ch==':') { … … 1305 1291 1306 1292 /* Get scheme. */ 1307 colon = pj_scan_peek(scanner, &p jsip_TOKEN_SPEC, &scheme);1293 colon = pj_scan_peek(scanner, &pconst.pjsip_TOKEN_SPEC, &scheme); 1308 1294 if (colon != ':') { 1309 1295 PJ_THROW(PJSIP_SYN_ERR_EXCEPTION); … … 1338 1324 scanner->skip_ws = 0; 1339 1325 1340 pj_scan_get(scanner, &p jsip_TOKEN_SPEC, &scheme);1326 pj_scan_get(scanner, &pconst.pjsip_TOKEN_SPEC, &scheme); 1341 1327 colon = pj_scan_get_char(scanner); 1342 1328 if (colon != ':') { … … 1344 1330 } 1345 1331 1346 if (parser_stricmp(scheme, p jsip_SIP_STR)==0) {1332 if (parser_stricmp(scheme, pconst.pjsip_SIP_STR)==0) { 1347 1333 url = pjsip_sip_uri_create(pool, 0); 1348 1334 1349 } else if (parser_stricmp(scheme, p jsip_SIPS_STR)==0) {1335 } else if (parser_stricmp(scheme, pconst.pjsip_SIPS_STR)==0) { 1350 1336 url = pjsip_sip_uri_create(pool, 1); 1351 1337 … … 1373 1359 int_parse_uri_param( scanner, pool, &pname, &pvalue, 0); 1374 1360 1375 if (!parser_stricmp(pname, p jsip_USER_STR) && pvalue.slen) {1361 if (!parser_stricmp(pname, pconst.pjsip_USER_STR) && pvalue.slen) { 1376 1362 url->user_param = pvalue; 1377 1363 1378 } else if (!parser_stricmp(pname, p jsip_METHOD_STR) && pvalue.slen) {1364 } else if (!parser_stricmp(pname, pconst.pjsip_METHOD_STR) && pvalue.slen) { 1379 1365 url->method_param = pvalue; 1380 1366 1381 } else if (!parser_stricmp(pname, pjsip_TRANSPORT_STR) && pvalue.slen) {1367 } else if (!parser_stricmp(pname, pconst.pjsip_TRANSPORT_STR) && pvalue.slen) { 1382 1368 url->transport_param = pvalue; 1383 1369 1384 } else if (!parser_stricmp(pname, p jsip_TTL_STR) && pvalue.slen) {1370 } else if (!parser_stricmp(pname, pconst.pjsip_TTL_STR) && pvalue.slen) { 1385 1371 url->ttl_param = pj_strtoul(&pvalue); 1386 1372 1387 } else if (!parser_stricmp(pname, p jsip_MADDR_STR) && pvalue.slen) {1373 } else if (!parser_stricmp(pname, pconst.pjsip_MADDR_STR) && pvalue.slen) { 1388 1374 url->maddr_param = pvalue; 1389 1375 1390 } else if (!parser_stricmp(pname, p jsip_LR_STR)) {1376 } else if (!parser_stricmp(pname, pconst.pjsip_LR_STR)) { 1391 1377 url->lr_param = 1; 1392 1378 … … 1439 1425 * will be parser later. 1440 1426 */ 1441 next = pj_scan_peek(scanner, &p jsip_DISPLAY_SPEC, &dummy);1427 next = pj_scan_peek(scanner, &pconst.pjsip_DISPLAY_SPEC, &dummy); 1442 1428 if (next == '<') { 1443 1429 /* Ok, this is what we're looking for, a display name. */ … … 1470 1456 pj_str_t token; 1471 1457 1472 pj_scan_get( scanner, &p jsip_TOKEN_SPEC, &token);1458 pj_scan_get( scanner, &pconst.pjsip_TOKEN_SPEC, &token); 1473 1459 pjsip_method_init_np( &req_line->method, &token); 1474 1460 … … 1490 1476 pj_scan_advance_n( scanner, 7, 1); 1491 1477 1492 pj_scan_get( scanner, &p jsip_DIGIT_SPEC, &token);1478 pj_scan_get( scanner, &pconst.pjsip_DIGIT_SPEC, &token); 1493 1479 status_line->code = pj_strtoul(&token); 1494 pj_scan_get( scanner, &p jsip_NOT_NEWLINE, &status_line->reason);1480 pj_scan_get( scanner, &pconst.pjsip_NOT_NEWLINE, &status_line->reason); 1495 1481 pj_scan_get_newline( scanner ); 1496 1482 } … … 1539 1525 1540 1526 /* Parse ending of header. */ 1541 voidpjsip_parse_end_hdr_imp( pj_scanner *scanner )1527 PJ_DEF(void) pjsip_parse_end_hdr_imp( pj_scanner *scanner ) 1542 1528 { 1543 1529 parse_hdr_end(scanner); … … 1557 1543 } 1558 1544 1559 pj_scan_get( scanner, &p jsip_NOT_COMMA_OR_NEWLINE, &hdr->values[0]);1545 pj_scan_get( scanner, &pconst.pjsip_NOT_COMMA_OR_NEWLINE, &hdr->values[0]); 1560 1546 hdr->count++; 1561 1547 1562 1548 while (*scanner->curptr == ',') { 1563 1549 pj_scan_get_char(scanner); 1564 pj_scan_get( scanner, &p jsip_NOT_COMMA_OR_NEWLINE,1550 pj_scan_get( scanner, &pconst.pjsip_NOT_COMMA_OR_NEWLINE, 1565 1551 &hdr->values[hdr->count]); 1566 1552 hdr->count++; … … 1578 1564 pj_scanner *scanner ) 1579 1565 { 1580 if (pj_cis_match(&p jsip_NOT_NEWLINE, *scanner->curptr))1581 pj_scan_get( scanner, &p jsip_NOT_NEWLINE, &hdr->hvalue);1566 if (pj_cis_match(&pconst.pjsip_NOT_NEWLINE, *scanner->curptr)) 1567 pj_scan_get( scanner, &pconst.pjsip_NOT_NEWLINE, &hdr->hvalue); 1582 1568 else 1583 1569 hdr->hvalue.slen = 0; … … 1591 1577 { 1592 1578 pj_str_t tmp; 1593 pj_scan_get( scanner, &p jsip_DIGIT_SPEC, &tmp);1579 pj_scan_get( scanner, &pconst.pjsip_DIGIT_SPEC, &tmp); 1594 1580 hdr->ivalue = pj_strtoul(&tmp); 1595 1581 parse_hdr_end(scanner); … … 1617 1603 { 1618 1604 pjsip_cid_hdr *hdr = pjsip_cid_hdr_create(ctx->pool); 1619 pj_scan_get( ctx->scanner, &p jsip_NOT_NEWLINE, &hdr->id);1605 pj_scan_get( ctx->scanner, &pconst.pjsip_NOT_NEWLINE, &hdr->id); 1620 1606 parse_hdr_end(ctx->scanner); 1621 1607 … … 1635 1621 1636 1622 int_parse_param( scanner, pool, &pname, &pvalue, 0); 1637 if (!parser_stricmp(pname, p jsip_Q_STR) && pvalue.slen) {1623 if (!parser_stricmp(pname, pconst.pjsip_Q_STR) && pvalue.slen) { 1638 1624 char *dot_pos = (char*) pj_memchr(pvalue.ptr, '.', pvalue.slen); 1639 1625 if (!dot_pos) { … … 1644 1630 hdr->q1000 = pj_strtoul_mindigit(&pvalue, 3); 1645 1631 } 1646 } else if (!parser_stricmp(pname, p jsip_EXPIRES_STR) && pvalue.slen) {1632 } else if (!parser_stricmp(pname, pconst.pjsip_EXPIRES_STR) && pvalue.slen) { 1647 1633 hdr->expires = pj_strtoul(&pvalue); 1648 1634 … … 1701 1687 1702 1688 hdr = pjsip_clen_hdr_create(ctx->pool); 1703 pj_scan_get(ctx->scanner, &p jsip_DIGIT_SPEC, &digit);1689 pj_scan_get(ctx->scanner, &pconst.pjsip_DIGIT_SPEC, &digit); 1704 1690 hdr->len = pj_strtoul(&digit); 1705 1691 parse_hdr_end(ctx->scanner); … … 1720 1706 1721 1707 /* Parse media type and subtype. */ 1722 pj_scan_get(scanner, &p jsip_TOKEN_SPEC, &hdr->media.type);1708 pj_scan_get(scanner, &pconst.pjsip_TOKEN_SPEC, &hdr->media.type); 1723 1709 pj_scan_get_char(scanner); 1724 pj_scan_get(scanner, &p jsip_TOKEN_SPEC, &hdr->media.subtype);1710 pj_scan_get(scanner, &pconst.pjsip_TOKEN_SPEC, &hdr->media.subtype); 1725 1711 1726 1712 /* Parse media parameters */ … … 1746 1732 1747 1733 hdr = pjsip_cseq_hdr_create(ctx->pool); 1748 pj_scan_get( ctx->scanner, &p jsip_DIGIT_SPEC, &cseq);1734 pj_scan_get( ctx->scanner, &pconst.pjsip_DIGIT_SPEC, &cseq); 1749 1735 hdr->cseq = pj_strtoul(&cseq); 1750 1736 1751 pj_scan_get( ctx->scanner, &p jsip_TOKEN_SPEC, &method);1737 pj_scan_get( ctx->scanner, &pconst.pjsip_TOKEN_SPEC, &method); 1752 1738 pjsip_method_init_np(&hdr->method, &method); 1753 1739 … … 1782 1768 int_parse_param( scanner, pool, &pname, &pvalue, 0); 1783 1769 1784 if (!parser_stricmp(pname, p jsip_TAG_STR)) {1770 if (!parser_stricmp(pname, pconst.pjsip_TAG_STR)) { 1785 1771 hdr->tag = pvalue; 1786 1772 … … 1866 1852 int_parse_param( scanner, pool, &pname, &pvalue, 0); 1867 1853 1868 if (!parser_stricmp(pname, p jsip_BRANCH_STR) && pvalue.slen) {1854 if (!parser_stricmp(pname, pconst.pjsip_BRANCH_STR) && pvalue.slen) { 1869 1855 hdr->branch_param = pvalue; 1870 1856 1871 } else if (!parser_stricmp(pname, p jsip_TTL_STR) && pvalue.slen) {1857 } else if (!parser_stricmp(pname, pconst.pjsip_TTL_STR) && pvalue.slen) { 1872 1858 hdr->ttl_param = pj_strtoul(&pvalue); 1873 1859 1874 } else if (!parser_stricmp(pname, p jsip_MADDR_STR) && pvalue.slen) {1860 } else if (!parser_stricmp(pname, pconst.pjsip_MADDR_STR) && pvalue.slen) { 1875 1861 hdr->maddr_param = pvalue; 1876 1862 1877 } else if (!parser_stricmp(pname, p jsip_RECEIVED_STR) && pvalue.slen) {1863 } else if (!parser_stricmp(pname, pconst.pjsip_RECEIVED_STR) && pvalue.slen) { 1878 1864 hdr->recvd_param = pvalue; 1879 1865 1880 } else if (!parser_stricmp(pname, p jsip_RPORT_STR)) {1866 } else if (!parser_stricmp(pname, pconst.pjsip_RPORT_STR)) { 1881 1867 if (pvalue.slen) 1882 1868 hdr->rport_param = pj_strtoul(&pvalue); … … 2004 1990 pj_scan_advance_n( scanner, 8, 1); 2005 1991 2006 pj_scan_get( scanner, &p jsip_TOKEN_SPEC, &hdr->transport);2007 pj_scan_get( scanner, &p jsip_HOST_SPEC, &hdr->sent_by.host);1992 pj_scan_get( scanner, &pconst.pjsip_TOKEN_SPEC, &hdr->transport); 1993 pj_scan_get( scanner, &pconst.pjsip_HOST_SPEC, &hdr->sent_by.host); 2008 1994 2009 1995 if (*scanner->curptr==':') { 2010 1996 pj_str_t digit; 2011 1997 pj_scan_get_char(scanner); 2012 pj_scan_get(scanner, &p jsip_DIGIT_SPEC, &digit);1998 pj_scan_get(scanner, &pconst.pjsip_DIGIT_SPEC, &digit); 2013 1999 hdr->sent_by.port = pj_strtoul(&digit); 2014 2000 }
Note: See TracChangeset
for help on using the changeset viewer.