func isCookieDomainName()

in garbage/nethttp.go [854:904]


func isCookieDomainName(s string) bool {
	if len(s) == 0 {
		return false
	}
	if len(s) > 255 {
		return false
	}

	if s[0] == '.' {

		s = s[1:]
	}
	last := byte('.')
	ok := false
	partlen := 0
	for i := 0; i < len(s); i++ {
		c := s[i]
		switch {
		default:
			return false
		case 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z':

			ok = true
			partlen++
		case '0' <= c && c <= '9':

			partlen++
		case c == '-':

			if last == '.' {
				return false
			}
			partlen++
		case c == '.':

			if last == '.' || last == '-' {
				return false
			}
			if partlen > 63 || partlen == 0 {
				return false
			}
			partlen = 0
		}
		last = c
	}
	if last == '-' || partlen > 63 {
		return false
	}

	return ok
}