Skip to content

Commit

Permalink
don't close established connections on Listener.Close
Browse files Browse the repository at this point in the history
  • Loading branch information
marten-seemann committed Sep 11, 2023
1 parent a7f8078 commit 94e3d8e
Show file tree
Hide file tree
Showing 7 changed files with 3 additions and 54 deletions.
12 changes: 0 additions & 12 deletions mock_packet_handler_manager_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 0 additions & 17 deletions packet_handler_map.go
Expand Up @@ -226,23 +226,6 @@ func (h *packetHandlerMap) GetByResetToken(token protocol.StatelessResetToken) (
return handler, ok
}

func (h *packetHandlerMap) CloseServer() {
h.mutex.Lock()
var wg sync.WaitGroup
for _, handler := range h.handlers {
if handler.getPerspective() == protocol.PerspectiveServer {
wg.Add(1)
go func(handler packetHandler) {
// blocks until the CONNECTION_CLOSE has been sent and the run-loop has stopped
handler.shutdown()
wg.Done()
}(handler)
}
}
h.mutex.Unlock()
wg.Wait()
}

func (h *packetHandlerMap) Close(e error) {
h.mutex.Lock()

Expand Down
17 changes: 0 additions & 17 deletions packet_handler_map_test.go
Expand Up @@ -159,23 +159,6 @@ var _ = Describe("Packet Handler Map", func() {
Eventually(func() bool { _, ok := m.Get(connID); return ok }).Should(BeFalse())
})

It("closes the server", func() {
m := newPacketHandlerMap(nil, nil, utils.DefaultLogger)
for i := 0; i < 10; i++ {
conn := NewMockPacketHandler(mockCtrl)
if i%2 == 0 {
conn.EXPECT().getPerspective().Return(protocol.PerspectiveClient)
} else {
conn.EXPECT().getPerspective().Return(protocol.PerspectiveServer)
conn.EXPECT().shutdown()
}
b := make([]byte, 12)
rand.Read(b)
m.Add(protocol.ParseConnectionID(b), conn)
}
m.CloseServer()
})

It("closes", func() {
m := newPacketHandlerMap(nil, nil, utils.DefaultLogger)
testErr := errors.New("shutdown")
Expand Down
4 changes: 2 additions & 2 deletions server.go
Expand Up @@ -35,7 +35,6 @@ type packetHandlerManager interface {
GetByResetToken(protocol.StatelessResetToken) (packetHandler, bool)
AddWithConnID(protocol.ConnectionID, protocol.ConnectionID, func() (packetHandler, bool)) bool
Close(error)
CloseServer()
connRunner
}

Expand Down Expand Up @@ -125,7 +124,8 @@ func (l *Listener) Accept(ctx context.Context) (Connection, error) {
return l.baseServer.Accept(ctx)
}

// Close the server. All active connections will be closed.
// Close the server.
// This doesn't have any effect on already established connections.
func (l *Listener) Close() error {
return l.baseServer.Close()
}
Expand Down
5 changes: 1 addition & 4 deletions server_test.go
Expand Up @@ -1338,10 +1338,7 @@ var _ = Describe("Server", func() {
serv.connHandler = phm
})

AfterEach(func() {
phm.EXPECT().CloseServer().MaxTimes(1)
tr.Close()
})
AfterEach(func() { tr.Close() })

It("passes packets to existing connections", func() {
connID := protocol.ParseConnectionID([]byte{1, 2, 3, 4, 5, 6, 7, 8})
Expand Down
1 change: 0 additions & 1 deletion transport.go
Expand Up @@ -272,7 +272,6 @@ func (t *Transport) Close() error {
}

func (t *Transport) closeServer() {
t.handlerMap.CloseServer()
t.mutex.Lock()
t.server = nil
if t.isSingleUse {
Expand Down
1 change: 0 additions & 1 deletion transport_test.go
Expand Up @@ -114,7 +114,6 @@ var _ = Describe("Transport", func() {
phm := NewMockPacketHandlerManager(mockCtrl)
tr.handlerMap = phm

phm.EXPECT().CloseServer()
Expect(ln.Close()).To(Succeed())

// shutdown
Expand Down

0 comments on commit 94e3d8e

Please sign in to comment.