diff options
Diffstat (limited to 'libgo/go/net/port_unix.go')
-rw-r--r-- | libgo/go/net/port_unix.go | 32 |
1 files changed, 6 insertions, 26 deletions
diff --git a/libgo/go/net/port_unix.go b/libgo/go/net/port_unix.go index badf8abc79..868d1e4784 100644 --- a/libgo/go/net/port_unix.go +++ b/libgo/go/net/port_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build darwin dragonfly freebsd linux netbsd openbsd solaris nacl // Read system port mappings from /etc/services @@ -10,31 +10,24 @@ package net import "sync" -// services contains minimal mappings between services names and port -// numbers for platforms that don't have a complete list of port numbers -// (some Solaris distros). -var services = map[string]map[string]int{ - "tcp": {"http": 80}, -} -var servicesError error var onceReadServices sync.Once func readServices() { - var file *file - if file, servicesError = open("/etc/services"); servicesError != nil { + file, err := open("/etc/services") + if err != nil { return } for line, ok := file.readLine(); ok; line, ok = file.readLine() { // "http 80/tcp www www-http # World Wide Web HTTP" if i := byteIndex(line, '#'); i >= 0 { - line = line[0:i] + line = line[:i] } f := getFields(line) if len(f) < 2 { continue } portnet := f[1] // "80/tcp" - port, j, ok := dtoi(portnet, 0) + port, j, ok := dtoi(portnet) if !ok || port <= 0 || j >= len(portnet) || portnet[j] != '/' { continue } @@ -56,18 +49,5 @@ func readServices() { // goLookupPort is the native Go implementation of LookupPort. func goLookupPort(network, service string) (port int, err error) { onceReadServices.Do(readServices) - - switch network { - case "tcp4", "tcp6": - network = "tcp" - case "udp4", "udp6": - network = "udp" - } - - if m, ok := services[network]; ok { - if port, ok = m[service]; ok { - return - } - } - return 0, &AddrError{Err: "unknown port", Addr: network + "/" + service} + return lookupPortMap(network, service) } |