Lines Matching refs:scan

90 #define	SIP_URI_ISURLESCAPE(scan, end)			\  argument
91 ((scan) + 2 < (end) && (scan)[0] == '%' && \
92 SIP_URI_ISHEX((scan)[1]) && SIP_URI_ISHEX((scan[2])))
300 sip_uri_parse_tel(char *scan, char *uend) in sip_uri_parse_tel() argument
307 if (scan == uend) in sip_uri_parse_tel()
309 if (*scan == '+') { in sip_uri_parse_tel()
310 ++scan; in sip_uri_parse_tel()
313 mark = scan; in sip_uri_parse_tel()
315 while (scan < uend && SIP_URI_ISPHONEDIGIT(*scan)) in sip_uri_parse_tel()
316 ++scan; in sip_uri_parse_tel()
318 while (scan < uend && in sip_uri_parse_tel()
319 (SIP_URI_ISPHONEDIGIT(*scan) || in sip_uri_parse_tel()
320 SIP_URI_ISDTMFDIGIT(*scan) || in sip_uri_parse_tel()
321 sip_uri_isEscapedPound(&scan, uend) || in sip_uri_parse_tel()
322 *scan == 'p' || *scan == 'w')) { in sip_uri_parse_tel()
323 ++scan; in sip_uri_parse_tel()
326 if (mark == scan || (scan < uend && *scan != ';')) in sip_uri_parse_tel()
332 if (uend - scan > 6 && !sip_uri_url_casecmp(scan, ";isub=", 6)) { in sip_uri_parse_tel()
333 scan += 6; in sip_uri_parse_tel()
334 mark = scan; in sip_uri_parse_tel()
335 while (scan < uend && SIP_URI_ISPHONEDIGIT(*scan)) in sip_uri_parse_tel()
336 ++scan; in sip_uri_parse_tel()
337 if (mark == scan || (scan < uend && *scan != ';')) in sip_uri_parse_tel()
344 if (uend - scan > 7 && !sip_uri_url_casecmp(scan, ";postd=", 7)) { in sip_uri_parse_tel()
345 scan += 7; in sip_uri_parse_tel()
346 mark = scan; in sip_uri_parse_tel()
347 while (scan < uend && in sip_uri_parse_tel()
348 (SIP_URI_ISPHONEDIGIT(*scan) || in sip_uri_parse_tel()
349 SIP_URI_ISDTMFDIGIT(*scan) || in sip_uri_parse_tel()
350 sip_uri_isEscapedPound(&scan, uend) || in sip_uri_parse_tel()
351 *scan == 'p' || *scan == 'w')) { in sip_uri_parse_tel()
352 ++scan; in sip_uri_parse_tel()
354 if (mark == scan || (scan < uend && *scan != ';')) in sip_uri_parse_tel()
362 if (uend - scan > 15 && in sip_uri_parse_tel()
363 !sip_uri_url_casecmp(scan, ";phone-context=", 15)) { in sip_uri_parse_tel()
364 scan += 15; in sip_uri_parse_tel()
365 mark = scan; in sip_uri_parse_tel()
366 while (scan < uend && *scan != ';') in sip_uri_parse_tel()
367 ++scan; in sip_uri_parse_tel()
368 ret = sip_uri_parse_tel_areaspe(mark, scan); in sip_uri_parse_tel()
377 while (scan < uend && ret) { in sip_uri_parse_tel()
378 if (uend - scan > 15 && in sip_uri_parse_tel()
379 !sip_uri_url_casecmp(scan, ";phone-context=", 15)) { in sip_uri_parse_tel()
380 scan += 15; in sip_uri_parse_tel()
381 mark = scan; in sip_uri_parse_tel()
382 while (scan < uend && *scan != ';') in sip_uri_parse_tel()
383 ++scan; in sip_uri_parse_tel()
384 ret = sip_uri_parse_tel_areaspe(mark, scan); in sip_uri_parse_tel()
385 } else if (uend - scan > 5 && in sip_uri_parse_tel()
386 !sip_uri_url_casecmp(scan, ";tsp=", 5)) { in sip_uri_parse_tel()
387 scan += 5; in sip_uri_parse_tel()
388 mark = scan; in sip_uri_parse_tel()
389 while (scan < uend && *scan != ';') in sip_uri_parse_tel()
390 ++scan; in sip_uri_parse_tel()
391 ret = sip_uri_parse_tel_servicepro(mark, scan); in sip_uri_parse_tel()
393 ++scan; in sip_uri_parse_tel()
394 mark = scan; in sip_uri_parse_tel()
395 while (scan < uend && (*scan != ';' || quote)) { in sip_uri_parse_tel()
396 if (sip_uri_hexVal(scan, uend) == 0x22) { in sip_uri_parse_tel()
398 scan += 3; in sip_uri_parse_tel()
400 ++scan; in sip_uri_parse_tel()
403 ret = sip_uri_parse_tel_futureext(mark, scan); in sip_uri_parse_tel()
406 return (ret && scan == uend); in sip_uri_parse_tel()
428 sip_uri_parse_tel_areaspe(char *scan, char *uend) in sip_uri_parse_tel_areaspe() argument
432 if (scan == uend) in sip_uri_parse_tel_areaspe()
438 if (*scan == '+') { in sip_uri_parse_tel_areaspe()
439 ++scan; in sip_uri_parse_tel_areaspe()
440 if (scan == uend) in sip_uri_parse_tel_areaspe()
442 while (scan < uend && SIP_URI_ISPHONEDIGIT(*scan)) in sip_uri_parse_tel_areaspe()
443 ++scan; in sip_uri_parse_tel_areaspe()
447 } else if (SIP_URI_ISPHONEDIGIT(*scan) || SIP_URI_ISDTMFDIGIT(*scan) || in sip_uri_parse_tel_areaspe()
448 sip_uri_isEscapedPound(&scan, uend) || in sip_uri_parse_tel_areaspe()
449 *scan == 'p' || *scan == 'w') { in sip_uri_parse_tel_areaspe()
450 ++scan; in sip_uri_parse_tel_areaspe()
451 while (scan < uend && in sip_uri_parse_tel_areaspe()
452 (SIP_URI_ISPHONEDIGIT(*scan) || in sip_uri_parse_tel_areaspe()
453 SIP_URI_ISDTMFDIGIT(*scan) || in sip_uri_parse_tel_areaspe()
454 sip_uri_isEscapedPound(&scan, uend) || in sip_uri_parse_tel_areaspe()
455 *scan == 'p' || *scan == 'w')) { in sip_uri_parse_tel_areaspe()
456 ++scan; in sip_uri_parse_tel_areaspe()
474 if (*scan == '!' || *scan == '$' || *scan == '&' || in sip_uri_parse_tel_areaspe()
475 *scan == '\'' || *scan == ',' || *scan == '/' || in sip_uri_parse_tel_areaspe()
476 *scan == '=' || *scan == '?' || *scan == '_' || in sip_uri_parse_tel_areaspe()
477 (*scan >= 'E' && *scan <= 'Z' && in sip_uri_parse_tel_areaspe()
478 *scan != 'P' && *scan != 'W') || in sip_uri_parse_tel_areaspe()
479 (*scan >= 'e' && *scan <= 'z' && in sip_uri_parse_tel_areaspe()
480 *scan != 'p' && *scan != 'w')) { in sip_uri_parse_tel_areaspe()
481 ++scan; in sip_uri_parse_tel_areaspe()
483 uri_hexValue = sip_uri_hexVal(scan, uend); in sip_uri_parse_tel_areaspe()
495 scan += 3; in sip_uri_parse_tel_areaspe()
503 while (scan < uend) { in sip_uri_parse_tel_areaspe()
504 if (SIP_URI_ISUNRESERVED(*scan) || in sip_uri_parse_tel_areaspe()
505 (SIP_URI_ISUSER(*scan) && *scan != ';')) { in sip_uri_parse_tel_areaspe()
506 ++scan; in sip_uri_parse_tel_areaspe()
508 uri_hexValue = sip_uri_hexVal(scan, uend); in sip_uri_parse_tel_areaspe()
512 scan += 3; in sip_uri_parse_tel_areaspe()
519 if (scan < uend) in sip_uri_parse_tel_areaspe()
525 sip_uri_hexVal(char *scan, char *uend) in sip_uri_hexVal() argument
529 if (SIP_URI_ISURLESCAPE(scan, uend)) { in sip_uri_hexVal()
530 ret = (SIP_URI_ISDIGIT(scan[1]) ? (scan[1] - '0') : in sip_uri_hexVal()
531 (tolower(scan[1]) - 'a' + 10)) * 16 + in sip_uri_hexVal()
532 (SIP_URI_ISDIGIT(scan[2]) ? (scan[2] - '0') : in sip_uri_hexVal()
533 (tolower(scan[2]) - 'a' + 10)); in sip_uri_hexVal()
544 sip_uri_parse_tel_servicepro(char *scan, char *uend) in sip_uri_parse_tel_servicepro() argument
548 if (scan == uend) in sip_uri_parse_tel_servicepro()
554 if (sip_uri_hexVal(scan, uend) == 0x20 && scan + 3 == uend) in sip_uri_parse_tel_servicepro()
556 while (scan < uend) { in sip_uri_parse_tel_servicepro()
557 mark = scan; in sip_uri_parse_tel_servicepro()
558 while (scan < uend && (*scan == '-'|| SIP_URI_ISALNUM(*scan))) in sip_uri_parse_tel_servicepro()
559 ++scan; in sip_uri_parse_tel_servicepro()
560 if ((scan < uend && *scan != '.') || in sip_uri_parse_tel_servicepro()
561 !SIP_URI_ISALPHA(*mark) || !SIP_URI_ISALNUM(*(scan - 1))) { in sip_uri_parse_tel_servicepro()
564 if (scan < uend) in sip_uri_parse_tel_servicepro()
565 ++scan; in sip_uri_parse_tel_servicepro()
568 if (scan < uend) in sip_uri_parse_tel_servicepro()
580 sip_uri_parse_tel_futureext(char *scan, char *uend) in sip_uri_parse_tel_futureext() argument
585 if (scan == uend) in sip_uri_parse_tel_futureext()
591 mark = scan; in sip_uri_parse_tel_futureext()
592 while (scan < uend && sip_uri_isTokenchar(&scan, uend)) in sip_uri_parse_tel_futureext()
594 if (mark == scan || in sip_uri_parse_tel_futureext()
595 (scan < uend && (*scan != '=' || scan + 1 == uend))) { in sip_uri_parse_tel_futureext()
598 if (scan == uend) in sip_uri_parse_tel_futureext()
600 ++scan; in sip_uri_parse_tel_futureext()
605 if (sip_uri_isTokenchar(&scan, uend)) { in sip_uri_parse_tel_futureext()
606 while (sip_uri_isTokenchar(&scan, uend)) in sip_uri_parse_tel_futureext()
608 if (scan < uend) { in sip_uri_parse_tel_futureext()
609 if (*scan != '?') in sip_uri_parse_tel_futureext()
611 ++scan; in sip_uri_parse_tel_futureext()
612 mark = scan; in sip_uri_parse_tel_futureext()
613 while (sip_uri_isTokenchar(&scan, uend)) in sip_uri_parse_tel_futureext()
615 if (mark == scan) in sip_uri_parse_tel_futureext()
619 uri_hexValue = sip_uri_hexVal(scan, uend); in sip_uri_parse_tel_futureext()
622 scan += 3; in sip_uri_parse_tel_futureext()
623 while (scan < uend && sip_uri_hexVal(scan, uend) != 0x22) { in sip_uri_parse_tel_futureext()
627 if (sip_uri_hexVal(scan, uend) == 0x5c) { in sip_uri_parse_tel_futureext()
628 scan += 3; in sip_uri_parse_tel_futureext()
629 if (scan < uend) { in sip_uri_parse_tel_futureext()
630 if (SIP_URI_ISUNRESERVED(*scan) || in sip_uri_parse_tel_futureext()
631 SIP_URI_ISUSER(*scan)) { in sip_uri_parse_tel_futureext()
632 ++scan; in sip_uri_parse_tel_futureext()
633 } else if (sip_uri_hexVal(scan, uend) >= in sip_uri_parse_tel_futureext()
635 sip_uri_hexVal(scan, uend) <= in sip_uri_parse_tel_futureext()
637 scan += 3; in sip_uri_parse_tel_futureext()
645 if (SIP_URI_ISUNRESERVED(*scan) || in sip_uri_parse_tel_futureext()
646 SIP_URI_ISUSER(*scan)) { in sip_uri_parse_tel_futureext()
647 ++scan; in sip_uri_parse_tel_futureext()
650 sip_uri_hexVal(scan, uend); in sip_uri_parse_tel_futureext()
657 scan += 3; in sip_uri_parse_tel_futureext()
664 if (scan == uend || in sip_uri_parse_tel_futureext()
665 (scan < uend && sip_uri_hexVal(scan, uend) != 0x22)) { in sip_uri_parse_tel_futureext()
668 scan += 3; in sip_uri_parse_tel_futureext()
671 if (scan < uend) in sip_uri_parse_tel_futureext()
684 char *scan = *pscan; in sip_uri_isTokenchar() local
687 if (scan == uend) in sip_uri_isTokenchar()
693 if ((SIP_URI_ISUNRESERVED(*scan) && *scan != '(' && *scan != ')') || in sip_uri_isTokenchar()
694 *scan == '$' || *scan == '&' || *scan == '+') { in sip_uri_isTokenchar()
695 ++scan; in sip_uri_isTokenchar()
696 *pscan = scan; in sip_uri_isTokenchar()
700 uri_hexValue = sip_uri_hexVal(scan, uend); in sip_uri_isTokenchar()
709 scan += 3; in sip_uri_isTokenchar()
710 *pscan = scan; in sip_uri_isTokenchar()
723 char *scan = *pscan; in sip_uri_isEscapedPound() local
725 if (scan == uend) in sip_uri_isEscapedPound()
727 if (*scan == '%' && scan + 2 < uend && scan[1] == '2' && in sip_uri_isEscapedPound()
728 scan[2] == '3') { in sip_uri_isEscapedPound()
729 scan += 2; in sip_uri_isEscapedPound()
730 *pscan = scan; in sip_uri_isEscapedPound()
740 sip_uri_parse_scheme(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_scheme() argument
742 if (scan == uend) { in sip_uri_parse_scheme()
746 outurl->sip_uri_scheme.sip_str_ptr = scan; in sip_uri_parse_scheme()
747 outurl->sip_uri_scheme.sip_str_len = uend - scan; in sip_uri_parse_scheme()
749 if (scan < uend && SIP_URI_ISALPHA(*scan)) { in sip_uri_parse_scheme()
750 ++scan; in sip_uri_parse_scheme()
751 while (scan < uend && SIP_URI_ISSCHEME(*scan)) in sip_uri_parse_scheme()
752 ++scan; in sip_uri_parse_scheme()
754 if (scan < uend) in sip_uri_parse_scheme()
780 sip_uri_parse_params(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_params() argument
791 if (scan == uend || *scan != ';' || scan + 1 == uend) { in sip_uri_parse_params()
796 while (scan < uend) { in sip_uri_parse_params()
797 mark = ++scan; in sip_uri_parse_params()
798 while (scan < uend && *scan != ';') in sip_uri_parse_params()
799 ++scan; in sip_uri_parse_params()
800 if (scan == mark) { in sip_uri_parse_params()
819 equal = memchr(mark, '=', scan - mark); in sip_uri_parse_params()
821 param->param_name.sip_str_len = scan - mark; in sip_uri_parse_params()
824 while (mark < scan && (SIP_URI_ISPARAM(*mark) || in sip_uri_parse_params()
825 SIP_URI_ISURLESCAPE(mark, scan))) { in sip_uri_parse_params()
831 param->param_value.sip_str_len = scan - equal - 1; in sip_uri_parse_params()
833 if (mark == equal || equal + 1 == scan) { in sip_uri_parse_params()
844 if (scan - equal == 1) { in sip_uri_parse_params()
850 while (mark < scan && SIP_URI_ISTOKEN(*mark)) in sip_uri_parse_params()
854 if (scan - equal == 1) { in sip_uri_parse_params()
862 if (mark < scan && in sip_uri_parse_params()
876 if (mark < scan && SIP_URI_ISDIGIT(*mark)) { in sip_uri_parse_params()
878 scan); in sip_uri_parse_params()
884 if (!gothost && mark < scan && *mark == '[') { in sip_uri_parse_params()
886 scan); in sip_uri_parse_params()
892 if (!gothost && mark < scan) { in sip_uri_parse_params()
895 scan))) { in sip_uri_parse_params()
901 mark = scan; in sip_uri_parse_params()
907 while (mark < scan && (SIP_URI_ISPARAM(*mark) || in sip_uri_parse_params()
908 SIP_URI_ISURLESCAPE(mark, scan) || in sip_uri_parse_params()
914 if (mark < scan) { in sip_uri_parse_params()
930 sip_uri_parse_headers(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_headers() argument
935 if (scan == uend || *scan != '?' || scan + 1 == uend) { in sip_uri_parse_headers()
939 outurl->sip_uri_headers.sip_str_ptr = scan + 1; in sip_uri_parse_headers()
940 outurl->sip_uri_headers.sip_str_len = uend - (scan + 1); in sip_uri_parse_headers()
942 while (scan < uend) { in sip_uri_parse_headers()
943 mark = ++scan; in sip_uri_parse_headers()
944 while (scan < uend && *scan != '&') in sip_uri_parse_headers()
945 ++scan; in sip_uri_parse_headers()
946 if (scan == mark) { in sip_uri_parse_headers()
950 equal = memchr(mark, '=', scan - mark); in sip_uri_parse_headers()
955 while (mark < scan && in sip_uri_parse_headers()
957 SIP_URI_ISURLESCAPE(mark, scan) || mark == equal)) { in sip_uri_parse_headers()
960 if (mark < scan) { in sip_uri_parse_headers()
974 sip_uri_parse_abs_opaque(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_abs_opaque() argument
976 if (scan == uend) { in sip_uri_parse_abs_opaque()
980 outurl->sip_uri_opaque.sip_str_ptr = scan; in sip_uri_parse_abs_opaque()
981 outurl->sip_uri_opaque.sip_str_len = uend - scan; in sip_uri_parse_abs_opaque()
983 if (SIP_URI_ISUNRESERVED(*scan) || SIP_URI_ISURLESCAPE(scan, uend) || in sip_uri_parse_abs_opaque()
984 SIP_URI_ISOTHER(*scan) || *scan == ';' || *scan == '?' || in sip_uri_parse_abs_opaque()
985 *scan == ':' || *scan == '@' || *scan == '&') { in sip_uri_parse_abs_opaque()
986 ++scan; in sip_uri_parse_abs_opaque()
991 while (scan < uend && (SIP_URI_ISRESERVED(*scan) || in sip_uri_parse_abs_opaque()
992 SIP_URI_ISUNRESERVED(*scan) || SIP_URI_ISURLESCAPE(scan, uend))) { in sip_uri_parse_abs_opaque()
993 ++scan; in sip_uri_parse_abs_opaque()
995 if (scan < uend) in sip_uri_parse_abs_opaque()
1005 sip_uri_parse_abs_query(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_abs_query() argument
1007 if (uend == scan || *scan != '?' || scan + 1 == uend) in sip_uri_parse_abs_query()
1009 ++scan; in sip_uri_parse_abs_query()
1010 outurl->sip_uri_query.sip_str_ptr = scan; in sip_uri_parse_abs_query()
1011 outurl->sip_uri_query.sip_str_len = uend - scan; in sip_uri_parse_abs_query()
1013 while (scan < uend && (SIP_URI_ISRESERVED(*scan) || in sip_uri_parse_abs_query()
1014 SIP_URI_ISUNRESERVED(*scan) || SIP_URI_ISURLESCAPE(scan, uend))) { in sip_uri_parse_abs_query()
1015 ++scan; in sip_uri_parse_abs_query()
1017 if (scan < uend) in sip_uri_parse_abs_query()
1031 sip_uri_parse_abs_path(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_abs_path() argument
1033 if (scan == uend || *scan != '/') in sip_uri_parse_abs_path()
1035 outurl->sip_uri_path.sip_str_ptr = scan; in sip_uri_parse_abs_path()
1036 outurl->sip_uri_path.sip_str_len = uend - scan; in sip_uri_parse_abs_path()
1038 ++scan; in sip_uri_parse_abs_path()
1039 while (scan < uend && (SIP_URI_ISPCHAR(*scan) || in sip_uri_parse_abs_path()
1040 SIP_URI_ISUNRESERVED(*scan) || SIP_URI_ISURLESCAPE(scan, uend) || in sip_uri_parse_abs_path()
1041 *scan == '/' || *scan == ';')) { in sip_uri_parse_abs_path()
1042 ++scan; in sip_uri_parse_abs_path()
1044 if (scan < uend) in sip_uri_parse_abs_path()
1052 sip_uri_parse_abs_regname(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_abs_regname() argument
1054 if (scan == uend) in sip_uri_parse_abs_regname()
1056 outurl->sip_uri_regname.sip_str_ptr = scan; in sip_uri_parse_abs_regname()
1057 outurl->sip_uri_regname.sip_str_len = uend - scan; in sip_uri_parse_abs_regname()
1059 while (scan < uend && (SIP_URI_ISUNRESERVED(*scan) || in sip_uri_parse_abs_regname()
1060 SIP_URI_ISURLESCAPE(scan, uend) || SIP_URI_ISREGNAME(*scan))) { in sip_uri_parse_abs_regname()
1061 ++scan; in sip_uri_parse_abs_regname()
1063 if (scan < uend) in sip_uri_parse_abs_regname()
1072 sip_uri_parse_password(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_password() argument
1074 if (scan == uend || *scan != ':' || scan + 1 == uend) in sip_uri_parse_password()
1076 ++scan; in sip_uri_parse_password()
1077 outurl->sip_uri_password.sip_str_ptr = scan; in sip_uri_parse_password()
1078 outurl->sip_uri_password.sip_str_len = uend - scan; in sip_uri_parse_password()
1080 while (scan < uend && (SIP_URI_ISUNRESERVED(*scan) || in sip_uri_parse_password()
1081 SIP_URI_ISURLESCAPE(scan, uend) || SIP_URI_ISOTHER(*scan) || in sip_uri_parse_password()
1082 *scan == '&')) { in sip_uri_parse_password()
1083 ++scan; in sip_uri_parse_password()
1085 if (scan < uend) in sip_uri_parse_password()
1094 sip_uri_parse_user(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_user() argument
1096 if (scan == uend) { in sip_uri_parse_user()
1100 outurl->sip_uri_user.sip_str_ptr = scan; in sip_uri_parse_user()
1101 outurl->sip_uri_user.sip_str_len = uend - scan; in sip_uri_parse_user()
1103 if (sip_uri_parse_tel(scan, uend)) { in sip_uri_parse_user()
1106 while (scan < uend && (SIP_URI_ISUNRESERVED(*scan) || in sip_uri_parse_user()
1107 SIP_URI_ISURLESCAPE(scan, uend) || SIP_URI_ISUSER(*scan))) { in sip_uri_parse_user()
1108 ++scan; in sip_uri_parse_user()
1110 if (scan < uend) in sip_uri_parse_user()
1120 sip_uri_parse_port(_sip_uri_t *outurl, char *scan, char *uend) in sip_uri_parse_port() argument
1122 if (scan == uend || *scan != ':' || scan + 1 == uend) { in sip_uri_parse_port()
1126 ++scan; in sip_uri_parse_port()
1130 if (SIP_URI_ISDIGIT(*scan)) { in sip_uri_parse_port()
1131 outurl->sip_uri_port = *scan - '0'; in sip_uri_parse_port()
1132 while (++scan < uend && SIP_URI_ISDIGIT(*scan)) { in sip_uri_parse_port()
1134 outurl->sip_uri_port * 10 + (*scan - '0'); in sip_uri_parse_port()
1142 if (scan < uend) { in sip_uri_parse_port()
1156 sip_uri_parse_ipv4(char *scan, char *uend) in sip_uri_parse_ipv4() argument
1162 if (!SIP_URI_ISDIGIT(*scan)) in sip_uri_parse_ipv4()
1164 val = *scan - '0'; in sip_uri_parse_ipv4()
1165 while (++scan < uend && SIP_URI_ISDIGIT(*scan)) { in sip_uri_parse_ipv4()
1166 val = val * 10 + (*scan - '0'); in sip_uri_parse_ipv4()
1171 if (*scan != '.') in sip_uri_parse_ipv4()
1173 ++scan; in sip_uri_parse_ipv4()
1177 if (j == 4 && scan == uend) in sip_uri_parse_ipv4()
1195 sip_uri_parse_ipv6(char *scan, char *uend) in sip_uri_parse_ipv6() argument
1202 if (*scan != '[') in sip_uri_parse_ipv6()
1204 ++scan; in sip_uri_parse_ipv6()
1210 if (scan + 1 < uend && scan[0] == ':' && scan[1] == ':') { in sip_uri_parse_ipv6()
1212 scan += 2; in sip_uri_parse_ipv6()
1220 while (scan < uend && j < 15) { in sip_uri_parse_ipv6()
1221 if (!SIP_URI_ISHEX(*scan)) in sip_uri_parse_ipv6()
1223 mark = scan; in sip_uri_parse_ipv6()
1224 val = SIP_URI_HEXVAL(*scan); in sip_uri_parse_ipv6()
1225 while (++scan < uend && SIP_URI_ISHEX(*scan)) { in sip_uri_parse_ipv6()
1226 val = val * 16 + SIP_URI_HEXVAL(*scan); in sip_uri_parse_ipv6()
1234 if (scan == uend) in sip_uri_parse_ipv6()
1237 if (*scan == '.' && (j == 12 || (zpad != -1 && j < 12)) && in sip_uri_parse_ipv6()
1242 scan = mark + 1; in sip_uri_parse_ipv6()
1254 if (*scan == ':') { in sip_uri_parse_ipv6()
1258 if (++scan < uend && *scan == ':') { in sip_uri_parse_ipv6()
1262 if (++scan < uend && *scan == ']') { in sip_uri_parse_ipv6()
1263 ++scan; in sip_uri_parse_ipv6()
1267 } else if (*scan == ']' && (j == 16 || zpad != -1)) { in sip_uri_parse_ipv6()
1268 ++scan; in sip_uri_parse_ipv6()
1284 if (scan == uend) in sip_uri_parse_ipv6()
1296 sip_uri_parse_hostname(char *scan, char *uend) in sip_uri_parse_hostname() argument
1300 if (scan < uend && SIP_URI_ISALNUM(*scan)) { in sip_uri_parse_hostname()
1302 sawalpha = SIP_URI_ISALPHA(*scan); in sip_uri_parse_hostname()
1303 while (SIP_URI_ISHOST(*scan)) in sip_uri_parse_hostname()
1304 ++scan; in sip_uri_parse_hostname()
1305 if (*scan != '.') in sip_uri_parse_hostname()
1307 ++scan; in sip_uri_parse_hostname()
1308 } while (scan < uend && SIP_URI_ISALNUM(*scan)); in sip_uri_parse_hostname()
1311 if (sawalpha && scan == uend) in sip_uri_parse_hostname()
1326 char *scan = *pscan; in sip_uri_parse_netpath() local
1332 mark = scan; in sip_uri_parse_netpath()
1333 while (scan < uend && *scan != '@') in sip_uri_parse_netpath()
1334 ++scan; in sip_uri_parse_netpath()
1338 if (scan < uend && *scan == '@') { in sip_uri_parse_netpath()
1343 while (mark < scan && *mark != ':') in sip_uri_parse_netpath()
1350 sip_uri_parse_password(outurl, mark, scan); in sip_uri_parse_netpath()
1351 mark = ++scan; in sip_uri_parse_netpath()
1354 scan = mark; in sip_uri_parse_netpath()
1355 if (scan < uend && *scan == '[') { /* look for an IPv6 address */ in sip_uri_parse_netpath()
1356 while (scan < uend && *scan != ']') in sip_uri_parse_netpath()
1357 ++scan; in sip_uri_parse_netpath()
1358 if (scan < uend) { in sip_uri_parse_netpath()
1359 ++scan; in sip_uri_parse_netpath()
1360 if (sip_uri_parse_ipv6(mark, scan)) in sip_uri_parse_netpath()
1364 while (scan < uend && ((issip && !SIP_URI_ISSIPHDELIM(*scan)) || in sip_uri_parse_netpath()
1365 (!issip && !SIP_URI_ISABSHDELIM(*scan)))) { in sip_uri_parse_netpath()
1366 ++scan; in sip_uri_parse_netpath()
1372 if (mark < scan && SIP_URI_ISDIGIT(*mark) && in sip_uri_parse_netpath()
1373 sip_uri_parse_ipv4(mark, scan)) { in sip_uri_parse_netpath()
1380 if (!gothost && mark < scan && in sip_uri_parse_netpath()
1381 sip_uri_parse_hostname(mark, scan)) { in sip_uri_parse_netpath()
1394 outurl->sip_uri_host.sip_str_len = scan - mark; in sip_uri_parse_netpath()
1396 mark = scan; in sip_uri_parse_netpath()
1400 if (scan < uend && *scan == ':') { in sip_uri_parse_netpath()
1401 while (scan < uend && ((issip && !SIP_URI_ISSIPDELIM(*scan)) || in sip_uri_parse_netpath()
1402 (!issip && !SIP_URI_ISABSDELIM(*scan)))) { in sip_uri_parse_netpath()
1403 ++scan; in sip_uri_parse_netpath()
1405 sip_uri_parse_port(outurl, mark, scan); in sip_uri_parse_netpath()
1411 *pscan = scan; in sip_uri_parse_netpath()
1422 char *scan; in sip_uri_parse_it() local
1464 mark = scan = str; in sip_uri_parse_it()
1465 while (scan < uend && *scan != ':') in sip_uri_parse_it()
1466 ++scan; in sip_uri_parse_it()
1467 if (scan == uend || !sip_uri_parse_scheme(outurl, mark, scan)) { in sip_uri_parse_it()
1482 ++scan; /* skip ':' */ in sip_uri_parse_it()
1488 sip_uri_parse_netpath(outurl, &scan, uend, B_TRUE); in sip_uri_parse_it()
1493 if (scan < uend && *scan == ';') { in sip_uri_parse_it()
1494 mark = scan; in sip_uri_parse_it()
1495 while (scan < uend && *scan != '?') in sip_uri_parse_it()
1496 ++scan; in sip_uri_parse_it()
1497 sip_uri_parse_params(outurl, mark, scan); in sip_uri_parse_it()
1503 if (scan < uend && *scan == '?') in sip_uri_parse_it()
1504 sip_uri_parse_headers(outurl, scan, uend); in sip_uri_parse_it()
1505 } else if (scan < uend && scan[0] == '/') { /* parse absoluteURL */ in sip_uri_parse_it()
1506 ++scan; in sip_uri_parse_it()
1514 if (scan < uend && *scan == '/') { in sip_uri_parse_it()
1515 ++scan; in sip_uri_parse_it()
1516 mark = scan; in sip_uri_parse_it()
1520 sip_uri_parse_netpath(outurl, &scan, uend, B_FALSE); in sip_uri_parse_it()
1530 scan = mark; in sip_uri_parse_it()
1531 while (scan < uend && *scan != '/' && in sip_uri_parse_it()
1532 *scan != '?') { in sip_uri_parse_it()
1533 ++scan; in sip_uri_parse_it()
1535 sip_uri_parse_abs_regname(outurl, mark, scan); in sip_uri_parse_it()
1565 --scan; in sip_uri_parse_it()
1570 if (scan < uend && *scan == '/') { in sip_uri_parse_it()
1571 mark = scan; in sip_uri_parse_it()
1572 while (scan < uend && *scan != '?') in sip_uri_parse_it()
1573 ++scan; in sip_uri_parse_it()
1574 sip_uri_parse_abs_path(outurl, mark, scan); in sip_uri_parse_it()
1580 if (scan < uend && *scan == '?') in sip_uri_parse_it()
1581 sip_uri_parse_abs_query(outurl, scan, uend); in sip_uri_parse_it()
1586 sip_uri_parse_abs_opaque(outurl, scan, uend); in sip_uri_parse_it()