2699 {
2706 bool flag2 = (flags & Flags.HasUnicode) != 0;
2707 bool flag3 =
flag2 && (flags & Flags.HostUnicodeNormalized) == 0;
2709 char c;
2711 {
2712 if (
syntax.InFact(UriSyntaxFlags.AllowEmptyHost))
2713 {
2714 flags &= ~Flags.UncPath;
2716 {
2718 }
2719 else
2720 {
2721 flags |= Flags.BasicHostType;
2722 }
2723 }
2724 else
2725 {
2727 }
2729 {
2730 flags |= Flags.HostUnicodeNormalized;
2731 }
2733 }
2735 {
2737 }
2739 if ((
flags2 & UriSyntaxFlags.MayHaveUserInfo) != 0)
2740 {
2742 {
2744 {
2746 break;
2747 }
2749 {
2750 continue;
2751 }
2752 flags |= Flags.HasUserInfo;
2753 if (flag)
2754 {
2756 {
2760 {
2763 }
2764 }
2765 else
2766 {
2768 }
2769 }
2772 break;
2773 }
2774 }
2776 if (c ==
'[' &&
syntax.InFact(UriSyntaxFlags.AllowIPv6Host) && IPv6AddressHelper.IsValid(
pString,
j + 1,
ref i))
2777 {
2778 flags |= Flags.IPv6HostType;
2780 {
2782 flags |= Flags.HostUnicodeNormalized;
2784 }
2785 }
2787 {
2788 flags |= Flags.IPv4HostType;
2790 {
2792 flags |= Flags.HostUnicodeNormalized;
2794 }
2795 }
2797 {
2798 flags |= Flags.DnsHostType;
2800 {
2801 flags |= Flags.CanonicalDnsHost;
2802 }
2803 }
2805 {
2807 }
2808 else if ((
flags2 & UriSyntaxFlags.AllowUncHost) != 0 && UncNameHelper.IsValid(
pString,
j,
ref i,
StaticNotAny(flags, Flags.ImplicitFile)) && i -
j <= 256)
2809 {
2810 flags |= Flags.UncHostType;
2812 {
2814 flags |= Flags.HostUnicodeNormalized;
2816 }
2817 }
2819 {
2820 if (
syntax.InFact(UriSyntaxFlags.V1_UnknownUri))
2821 {
2823 flags |= Flags.HostTypeMask;
2825 }
2826 flags &= ~Flags.HostTypeMask;
2827 }
2829 {
2830 if (
syntax.InFact(UriSyntaxFlags.MayHavePort))
2831 {
2835 {
2838 {
2839 case 0:
2840 case 1:
2841 case 2:
2842 case 3:
2843 case 4:
2844 case 5:
2845 case 6:
2846 case 7:
2847 case 8:
2848 case 9:
2850 {
2851 continue;
2852 }
2853 break;
2854 default:
2855 if (
syntax.InFact(UriSyntaxFlags.AllowAnyOtherHost) &&
syntax.NotAny(UriSyntaxFlags.V1_UnknownUri))
2856 {
2857 flags &= ~Flags.HostTypeMask;
2858 break;
2859 }
2862 case -13:
2863 case -1:
2864 case 15:
2865 break;
2866 }
2867 break;
2868 }
2870 {
2871 if (!
syntax.InFact(UriSyntaxFlags.AllowAnyOtherHost))
2872 {
2875 }
2876 flags &= ~Flags.HostTypeMask;
2877 }
2879 {
2881 }
2882 }
2883 else
2884 {
2885 flags &= ~Flags.HostTypeMask;
2886 }
2887 }
2888 if ((flags & Flags.HostTypeMask) == Flags.Zero)
2889 {
2890 flags &= ~Flags.HasUserInfo;
2891 if (
syntax.InFact(UriSyntaxFlags.AllowAnyOtherHost))
2892 {
2893 flags |= Flags.BasicHostType;
2895 {
2896 }
2898 {
2900 try
2901 {
2903 }
2904 catch (ArgumentException)
2905 {
2907 }
2908 flags |= Flags.HostUnicodeNormalized;
2909 }
2910 }
2911 else if (
syntax.InFact(UriSyntaxFlags.V1_UnknownUri))
2912 {
2916 {
2918 {
2920 continue;
2921 }
2923 flags |= Flags.HostTypeMask;
2925 }
2926 flags |= Flags.BasicHostType;
2928 {
2930 try
2931 {
2933 }
2934 catch (ArgumentException)
2935 {
2938 }
2939 flags |= Flags.HostUnicodeNormalized;
2940 }
2941 }
2942 else if (
syntax.InFact(UriSyntaxFlags.MustHaveAuthority) ||
syntax.InFact(UriSyntaxFlags.MailToLikeUri))
2943 {
2945 flags |= Flags.HostTypeMask;
2947 }
2948 }
2950 }
unsafe void CheckAuthorityHelperHandleDnsIri(char *pString, int start, int end, bool hasUnicode, ref Flags flags, ref bool justNormalized, ref string newHost, ref ParsingError err)
string _originalUnicodeString
static bool IriParsingStatic(UriParser syntax)
static bool StaticInFact(Flags allFlags, Flags checkFlags)
static bool StaticIsFile(UriParser syntax)
static bool StaticNotAny(Flags allFlags, Flags checkFlags)