Illegal character in host name - Android 4.0.4



  • I just tried to set up DavDroid on an old Android 4.0.4 Device and did not get far. I need to sign in with URL and Password. But everytime i tried to sign in, DAVDroid didn't even make an attempt. I only get the error message "Illegal character in host name at index 0: "my_host.name.eu"".
    If i remove the _ (underline) from the URL, everything works just fine (except that I my not communicazing with my Server). IUn a newer Android 7 Device, everything works fine and _ in URLs is no problemm. It seems like you use some old and bugfy Android 4 stuff to check for a valid URL and sadly this code is broken on Android 4.0.4


  • developer

    Are you sure that _ is an allowed character?

    https://tools.ietf.org/html/rfc1035#section-2.3.1

    <domain> ::= <subdomain> | " "
    <subdomain> ::= <label> | <subdomain> "." <label>
    <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
    <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
    <let-dig-hyp> ::= <let-dig> | "-"
    <let-dig> ::= <letter> | <digit>
    <letter> ::= any one of the 52 alphabetic characters A through Z in
    upper case and a through z in lower case
    
    <digit> ::= any one of the ten digits 0 through 9
    

    DAVdroid doesn't use special validity checks, but it has to refuse URLs which throw an UriSyntaxException (https://gitlab.com/bitfireAT/davdroid/blob/de5903b3758b732d0135c27ca0bf967328629959/app/src/main/java/at/bitfire/davdroid/ui/setup/LoginCredentialsFragment.java#L142 ff). So I guess there's nothing we can do in this case.



  • Hello and thanks for you answer
    First of: The use of _ is allowed, even if it is not suggested for domain names (and for subdomains...).
    Second: Why does is work on Android 7 and 7.1.1 without any problems but gives me the "Illegal character" on Adroid 4.0.4? That still looks like a bug to me?!
    And third: Of course we can discuss about RFCs and specifications here but I initially thought this forum would be a place where everyone tries to solve some problems? A simple override for the URI-Check would be a solution or a constant behavior on all Android-Plattforms would at least make things more predictible...


  • developer

    @mitras2 said in Illegal character in host name - Android 4.0.4:

    And third: Of course we can discuss about RFCs and specifications here but I initially thought this forum would be a place where everyone tries to solve some problems?

    Well, before I solve a supposed problem, I'd like to know whether it actually is a problem. In my opinion, it doesn't make sense to hack around randomly using a trial-and-error approach, or to create a dozen of new bugs by introducing non-standard-compliant behavior.

    A simple override for the URI-Check would be a solution or a constant behavior on all Android-Plattforms would at least make things more predictible...

    I don't know how overriding an UriSyntaxException could help, because such an URL wouldn't be processed correctly at a later time.

    However, if you know a working solution, please provide a patch, I'll try to review it.


  • developer

    By the way, when we're talking about solutions: Why don't you just use a host name with only digits, letters and -, as recommended in the DNS standards? To me, this sounds easier and more compatible (also with other applications) than working around years-old Android 4.0.4 behavior with the risk of introducing other problems.