| // Copyright 2016 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| // parsePort parses service as a decimal integer and returns the |
| // corresponding value as port. It is the caller's responsibility to |
| // parse service as a non-decimal integer when needsLookup is true. |
| // Some system resolvers will return a valid port number when given a number |
| // over 65536 (see https://golang.org/issues/11715). Alas, the parser |
| // can't bail early on numbers > 65536. Therefore reasonably large/small |
| // numbers are parsed in full and rejected if invalid. |
| func parsePort(service string) (port int, needsLookup bool) { |
| // Lock in the legacy behavior that an empty string |
| // means port 0. See golang.org/issue/13610. |
| } else if service[0] == '-' { |
| for _, d := range service { |
| if '0' <= d && d <= '9' { |
| } else if neg && n > cutoff { |