Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/net/netutil: LimitListener Accept() does not unblock when Close() is called with connection limit reached. #24458

Closed
akmistry opened this issue Mar 20, 2018 · 1 comment
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done.
Milestone

Comments

@akmistry
Copy link

What version of Go are you using (go version)?

go version go1.9.2 linux/amd64

Does this issue reproduce with the latest release?

Untested, but issue is not with the runtime.

What operating system and processor architecture are you using (go env)?

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/amistry/go-src"
GORACE=""
GOROOT="/home/amistry/go"
GOTOOLDIR="/home/amistry/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build151791535=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"

What did you do?

Use netutil.LimitListener and accept the maximum number of connections. Without closing any connections, close the listener. According to the net.Listener interface, any active Accept() calls should unblock and error. LimitListener does not do this.

https://play.golang.org/p/6PL6suf4CUP

What did you expect to see?

Accept() unblocks with an error.

What did you see instead?

Accept() stays blocked.

Bug and solution are trivial. I'll send a CL soon.

@gopherbot gopherbot added this to the Unreleased milestone Mar 20, 2018
@gopherbot
Copy link

Change https://golang.org/cl/101535 mentions this issue: netutil: Unblock LimitListener.Accept on Close.

@mikioh mikioh changed the title x/net: netutil.LimitListener Accept() does not unblock when Close() is called with connection limit reached. x/net/netutil: LimitListener Accept() does not unblock when Close() is called with connection limit reached. Mar 20, 2018
@andybons andybons added the NeedsFix The path to resolution is known, but the work has not been done. label Mar 20, 2018
@golang golang locked and limited conversation to collaborators Apr 4, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge NeedsFix The path to resolution is known, but the work has not been done.
Projects
None yet
Development

No branches or pull requests

3 participants