Source File
port.go
Belonging Package
net
// 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.
package net
// 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( string) ( int, bool) {
if == "" {
// Lock in the legacy behavior that an empty string
// means port 0. See golang.org/issue/13610.
return 0, false
}
const (
= uint32(1<<32 - 1)
= uint32(1 << 30)
)
:= false
if [0] == '+' {
= [1:]
} else if [0] == '-' {
= true
= [1:]
}
var uint32
for , := range {
if '0' <= && <= '9' {
-= '0'
} else {
return 0, true
}
if >= {
=
break
}
*= 10
:= + uint32()
if < || > {
=
break
}
=
}
if ! && >= {
= int( - 1)
} else if && > {
= int()
} else {
= int()
}
if {
= -
}
return , false
}
The pages are generated with Golds v0.7.0-preview. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |