mirror of
https://github.com/logos-messaging/go-multiaddr.git
synced 2026-04-18 08:43:13 +00:00
move multiaddr-net for merge with multiaddr
This commit is contained in:
parent
f512d0e050
commit
0ae1c1ce2e
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +0,0 @@
|
|||||||
bin/gx*
|
|
||||||
*.swp
|
|
||||||
@ -1 +0,0 @@
|
|||||||
1.7.2: Qmc85NSvmSG4Frn9Vb2cBc1rMyULH6D3TNVEfCzSKoUpip
|
|
||||||
30
.travis.yml
30
.travis.yml
@ -1,30 +0,0 @@
|
|||||||
os:
|
|
||||||
- linux
|
|
||||||
|
|
||||||
language: go
|
|
||||||
|
|
||||||
go:
|
|
||||||
- 1.12.x
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- GOTFLAGS="-race"
|
|
||||||
matrix:
|
|
||||||
- BUILD_DEPTYPE=gomod
|
|
||||||
|
|
||||||
|
|
||||||
# disable travis install
|
|
||||||
install:
|
|
||||||
- true
|
|
||||||
|
|
||||||
script:
|
|
||||||
- bash <(curl -s https://raw.githubusercontent.com/ipfs/ci-helpers/master/travis-ci/run-standard-tests.sh)
|
|
||||||
|
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- $GOPATH/pkg/mod
|
|
||||||
- /home/travis/.cache/go-build
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
21
LICENSE
21
LICENSE
@ -1,21 +0,0 @@
|
|||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Juan Batiz-Benet
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
9
Makefile
9
Makefile
@ -1,9 +0,0 @@
|
|||||||
export IPFS_API ?= v04x.ipfs.io
|
|
||||||
|
|
||||||
gx:
|
|
||||||
go get -u github.com/whyrusleeping/gx
|
|
||||||
go get -u github.com/whyrusleeping/gx-go
|
|
||||||
|
|
||||||
deps: gx
|
|
||||||
gx --verbose install --global
|
|
||||||
gx-go rewrite
|
|
||||||
53
README.md
53
README.md
@ -1,53 +0,0 @@
|
|||||||
# go-multiaddr-net
|
|
||||||
|
|
||||||
[](https://protocol.ai)
|
|
||||||
[](https://github.com/multiformats/multiformats)
|
|
||||||
[](https://webchat.freenode.net/?channels=%23ipfs)
|
|
||||||
[](https://github.com/RichardLitt/standard-readme)
|
|
||||||
[](https://godoc.org/github.com/multiformats/go-multiaddr-net)
|
|
||||||
[](https://travis-ci.org/multiformats/go-multiaddr-net)
|
|
||||||
|
|
||||||
<!---[](https://codecov.io/github/multiformats/go-multiaddr-net?branch=master)--->
|
|
||||||
|
|
||||||
> Multiaddress net tools
|
|
||||||
|
|
||||||
This package provides [Multiaddr](https://github.com/multiformats/go-multiaddr) specific versions of common functions in [stdlib](https://github.com/golang/go/tree/master/src)'s `net` package. This means wrappers of standard net symbols like `net.Dial` and `net.Listen`, as well
|
|
||||||
as conversion to and from `net.Addr`.
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
- [Install](#install)
|
|
||||||
- [Usage](#usage)
|
|
||||||
- [Maintainers](#maintainers)
|
|
||||||
- [Contribute](#contribute)
|
|
||||||
- [License](#license)
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
`go-multiaddr-net` is a standard Go module which can be installed with:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
go get github.com/multiformats/go-multiaddr-net
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that `go-multiaddr-net` is packaged with Gx, so it is recommended to use Gx to install and use it (see Usage section).
|
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
See the docs:
|
|
||||||
|
|
||||||
- `multiaddr/net`: https://godoc.org/github.com/multiformats/go-multiaddr-net
|
|
||||||
- `multiaddr`: https://godoc.org/github.com/multiformats/go-multiaddr
|
|
||||||
|
|
||||||
## Contribute
|
|
||||||
|
|
||||||
Contributions welcome. Please check out [the issues](https://github.com/multiformats/go-multiaddr-net/issues).
|
|
||||||
|
|
||||||
Check out our [contributing document](https://github.com/multiformats/multiformats/blob/master/contributing.md) for more information on how we work, and about contributing in general. Please be aware that all interactions related to multiformats are subject to the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
|
|
||||||
|
|
||||||
Small note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
[MIT](LICENSE) © 2014 Juan Batiz-Benet
|
|
||||||
146
bin/dist_get
146
bin/dist_get
@ -1,146 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
die() {
|
|
||||||
echo "$@" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
have_binary() {
|
|
||||||
type "$1" > /dev/null 2> /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
check_writeable() {
|
|
||||||
printf "" > "$1" && rm "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
download() {
|
|
||||||
local url="$1"
|
|
||||||
local output="$2"
|
|
||||||
|
|
||||||
if [ -z "$url" ] || [ -z "$output" ]; then
|
|
||||||
die "download takes exactly two arguments. was given '$@'"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! check_writeable "$output"; then
|
|
||||||
die "download error: cannot write to $output"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if have_binary wget; then
|
|
||||||
printf 'Using wget to download "%s" to "%s"\n' "$url" "$output"
|
|
||||||
wget "$url" -O "$output"
|
|
||||||
elif have_binary curl; then
|
|
||||||
printf 'Using curl to download "%s" to "%s"\n' "$url" "$output"
|
|
||||||
curl --silent "$url" > "$output"
|
|
||||||
elif have_binary fetch; then
|
|
||||||
printf 'Using fetch to download "%s" to "%s"\n' "$url" "$output"
|
|
||||||
fetch "$url" -o "$output"
|
|
||||||
else
|
|
||||||
die "no binary found to download $url. exiting."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
unarchive() {
|
|
||||||
local archivetype="$1"
|
|
||||||
local infile="$2"
|
|
||||||
local outfile="$3"
|
|
||||||
local distname="$4"
|
|
||||||
|
|
||||||
if ! check_writeable "$outfile"; then
|
|
||||||
die "unarchive error: cannot write to $outfile"
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $archivetype in
|
|
||||||
tar.gz)
|
|
||||||
if have_binary tar; then
|
|
||||||
echo "==> using 'tar' to extract binary from archive"
|
|
||||||
cat "$infile" | tar -O -z -x "$distname/$distname" > "$outfile"
|
|
||||||
else
|
|
||||||
die "no binary on system for extracting tar files"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
zip)
|
|
||||||
if have_binary unzip; then
|
|
||||||
echo "==> using 'unzip' to extract binary from archive"
|
|
||||||
unzip -p "$infile" "$distname/$distname" > "$outfile"
|
|
||||||
else
|
|
||||||
die "no installed method for extracting .zip archives"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
die "unrecognized archive type '$archivetype'"
|
|
||||||
esac
|
|
||||||
|
|
||||||
chmod +x "$outfile"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_go_vars() {
|
|
||||||
if [ ! -z "$GOOS" ] && [ ! -z "$GOARCH" ]; then
|
|
||||||
printf "%s-%s" "$GOOS" "$GOARCH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if have_binary go; then
|
|
||||||
printf "%s-%s" "$(go env GOOS)" "$(go env GOARCH)"
|
|
||||||
else
|
|
||||||
die "no way of determining system GOOS and GOARCH\nPlease manually set GOOS and GOARCH then retry."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
mkurl() {
|
|
||||||
local name="$1"
|
|
||||||
local vers="$2"
|
|
||||||
local archive="$3"
|
|
||||||
|
|
||||||
local govars=$(get_go_vars)
|
|
||||||
|
|
||||||
echo "http://dist.ipfs.io/$name/$vers/${name}_${vers}_$govars.$archive"
|
|
||||||
}
|
|
||||||
|
|
||||||
distname="$1"
|
|
||||||
outpath="$2"
|
|
||||||
version="$3"
|
|
||||||
|
|
||||||
if [ -z "$distname" ] || [ -z "$outpath" ] || [ -z "$version" ]; then
|
|
||||||
die "usage: dist_get <distname> <outpath> <version>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ${version:0:1} != "v" ]; then
|
|
||||||
echo "invalid version '$version'" >&2
|
|
||||||
die "versions must begin with 'v', for example: v0.4.0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# TODO: don't depend on the go tool being installed to detect this
|
|
||||||
goenv=$(get_go_vars)
|
|
||||||
|
|
||||||
case $goenv in
|
|
||||||
linux-*)
|
|
||||||
archive="tar.gz"
|
|
||||||
;;
|
|
||||||
darwin-*)
|
|
||||||
archive="tar.gz"
|
|
||||||
;;
|
|
||||||
windows-*)
|
|
||||||
archive="zip"
|
|
||||||
;;
|
|
||||||
freebsd-*)
|
|
||||||
archive="tar.gz"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "unrecognized system environment: $goenv" >&2
|
|
||||||
die "currently only linux, darwin, windows and freebsd are supported by this script"
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
mkdir -p bin/tmp
|
|
||||||
|
|
||||||
url=$(mkurl "$distname" "$version" "$archive")
|
|
||||||
tmpfi="bin/tmp/$distname.$archive"
|
|
||||||
|
|
||||||
download "$url" "$tmpfi"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
die "failed to download $url to $tmpfi"
|
|
||||||
fi
|
|
||||||
|
|
||||||
unarchive "$archive" "$tmpfi" "$outpath" "$distname"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
die "failed to exract archive $tmpfi"
|
|
||||||
fi
|
|
||||||
5
go.mod
5
go.mod
@ -1,5 +0,0 @@
|
|||||||
module github.com/multiformats/go-multiaddr-net
|
|
||||||
|
|
||||||
require github.com/multiformats/go-multiaddr v0.2.1
|
|
||||||
|
|
||||||
go 1.12
|
|
||||||
31
go.sum
31
go.sum
@ -1,31 +0,0 @@
|
|||||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g=
|
|
||||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
|
|
||||||
github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771 h1:MHkK1uRtFbVqvAgvWxafZe54+5uBxLluGylDiKgdhwo=
|
|
||||||
github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
|
||||||
github.com/mr-tron/base58 v1.1.2 h1:ZEw4I2EgPKDJ2iEw0cNmLB3ROrEmkOtXIkaG7wZg+78=
|
|
||||||
github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
|
||||||
github.com/mr-tron/base58 v1.1.3 h1:v+sk57XuaCKGXpWtVBX8YJzO7hMGx4Aajh4TQbdEFdc=
|
|
||||||
github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
|
||||||
github.com/multiformats/go-multiaddr v0.2.0 h1:lR52sFwcTCuQb6bTfnXF6zA2XfyYvyd+5a9qECv/J90=
|
|
||||||
github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4=
|
|
||||||
github.com/multiformats/go-multiaddr v0.2.1 h1:SgG/cw5vqyB5QQe5FPe2TqggU9WtrA9X4nZw7LlVqOI=
|
|
||||||
github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE=
|
|
||||||
github.com/multiformats/go-multihash v0.0.8 h1:wrYcW5yxSi3dU07n5jnuS5PrNwyHy0zRHGVoUugWvXg=
|
|
||||||
github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew=
|
|
||||||
github.com/multiformats/go-multihash v0.0.13 h1:06x+mk/zj1FoMsgNejLpy6QTvJqlSt/BhLEy87zidlc=
|
|
||||||
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
|
||||||
github.com/multiformats/go-varint v0.0.1 h1:TR/0rdQtnNxuN2IhiB639xC3tWM4IUi7DkTBVTdGW/M=
|
|
||||||
github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
|
||||||
github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
|
||||||
github.com/multiformats/go-varint v0.0.5 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg=
|
|
||||||
github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
|
||||||
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
|
||||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU=
|
|
||||||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
1
multiaddr/.gitignore
vendored
1
multiaddr/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
multiaddr
|
|
||||||
@ -1,96 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/hex"
|
|
||||||
"flag"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
ma "github.com/multiformats/go-multiaddr"
|
|
||||||
manet "github.com/multiformats/go-multiaddr-net"
|
|
||||||
)
|
|
||||||
|
|
||||||
// flags
|
|
||||||
var formats = []string{"string", "bytes", "hex", "slice"}
|
|
||||||
var format string
|
|
||||||
var hideLoopback bool
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
flag.Usage = func() {
|
|
||||||
fmt.Fprintf(os.Stderr, "usage: %s [<multiaddr>]\n\nFlags:\n", os.Args[0])
|
|
||||||
flag.PrintDefaults()
|
|
||||||
}
|
|
||||||
|
|
||||||
usage := fmt.Sprintf("output format, one of: %v", formats)
|
|
||||||
flag.StringVar(&format, "format", "string", usage)
|
|
||||||
flag.StringVar(&format, "f", "string", usage+" (shorthand)")
|
|
||||||
flag.BoolVar(&hideLoopback, "hide-loopback", false, "do not display loopback addresses")
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
flag.Parse()
|
|
||||||
args := flag.Args()
|
|
||||||
if len(args) == 0 {
|
|
||||||
output(localAddresses()...)
|
|
||||||
} else {
|
|
||||||
output(address(args[0]))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func localAddresses() []ma.Multiaddr {
|
|
||||||
maddrs, err := manet.InterfaceMultiaddrs()
|
|
||||||
if err != nil {
|
|
||||||
die(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !hideLoopback {
|
|
||||||
return maddrs
|
|
||||||
}
|
|
||||||
|
|
||||||
var maddrs2 []ma.Multiaddr
|
|
||||||
for _, a := range maddrs {
|
|
||||||
if !manet.IsIPLoopback(a) {
|
|
||||||
maddrs2 = append(maddrs2, a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return maddrs2
|
|
||||||
}
|
|
||||||
|
|
||||||
func address(addr string) ma.Multiaddr {
|
|
||||||
m, err := ma.NewMultiaddr(addr)
|
|
||||||
if err != nil {
|
|
||||||
die(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
|
|
||||||
func output(ms ...ma.Multiaddr) {
|
|
||||||
for _, m := range ms {
|
|
||||||
fmt.Println(outfmt(m))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func outfmt(m ma.Multiaddr) string {
|
|
||||||
switch format {
|
|
||||||
case "string":
|
|
||||||
return m.String()
|
|
||||||
case "slice":
|
|
||||||
return fmt.Sprintf("%v", m.Bytes())
|
|
||||||
case "bytes":
|
|
||||||
return string(m.Bytes())
|
|
||||||
case "hex":
|
|
||||||
return "0x" + hex.EncodeToString(m.Bytes())
|
|
||||||
}
|
|
||||||
|
|
||||||
die("error: invalid format", format)
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func die(v ...interface{}) {
|
|
||||||
fmt.Fprint(os.Stderr, v...)
|
|
||||||
fmt.Fprint(os.Stderr, "\n")
|
|
||||||
flag.Usage()
|
|
||||||
os.Exit(-1)
|
|
||||||
}
|
|
||||||
@ -224,9 +224,9 @@ func (nla *netListenerAdapter) Accept() (net.Conn, error) {
|
|||||||
|
|
||||||
// NetListener turns this Listener into a net.Listener.
|
// NetListener turns this Listener into a net.Listener.
|
||||||
//
|
//
|
||||||
// * Connections returned from Accept implement multiaddr-net Conn.
|
// * Connections returned from Accept implement multiaddr/net Conn.
|
||||||
// * Calling WrapNetListener on the net.Listener returned by this function will
|
// * Calling WrapNetListener on the net.Listener returned by this function will
|
||||||
// return the original (underlying) multiaddr-net Listener.
|
// return the original (underlying) multiaddr/net Listener.
|
||||||
func NetListener(l Listener) net.Listener {
|
func NetListener(l Listener) net.Listener {
|
||||||
return &netListenerAdapter{l}
|
return &netListenerAdapter{l}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user