aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2021-02-15 20:18:08 -0500
committerAdnan Maolood <[email protected]>2021-02-15 20:19:44 -0500
commit1d6cbddc5be1d34692d12c5d66e97cf2abf04445 (patch)
tree6c9bab6dbb1238cc2e040396f1bcac1298258997
parentserver: Avoid creating a new Listener after Close (diff)
downloadgo-gemini-1d6cbddc5be1d34692d12c5d66e97cf2abf04445.tar.xz
go-gemini-1d6cbddc5be1d34692d12c5d66e97cf2abf04445.zip
server: Prevent adding Listeners after Close
Check done after calling trackListener to prevent the listener from being registered after the server is closed.
-rw-r--r--server.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/server.go b/server.go
index 32afe27..f461d4a 100644
--- a/server.go
+++ b/server.go
@@ -163,13 +163,13 @@ func (srv *Server) deleteListener(l *net.Listener) {
func (srv *Server) Serve(l net.Listener) error {
defer l.Close()
+ srv.trackListener(&l)
+ defer srv.deleteListener(&l)
+
if atomic.LoadInt32(&srv.done) == 1 {
return ErrServerClosed
}
- srv.trackListener(&l)
- defer srv.deleteListener(&l)
-
var tempDelay time.Duration // how long to sleep on accept failure
for {