forked from quic-go/quic-go
Merge pull request #587 from lucas-clemente/fix-425
close session if reading from the socket fails in the server
This commit is contained in:
@@ -86,6 +86,7 @@ func (s *server) Serve() error {
|
||||
// If it does, we only read a truncated packet, which will then end up undecryptable
|
||||
n, remoteAddr, err := s.conn.ReadFrom(data)
|
||||
if err != nil {
|
||||
_ = s.Close()
|
||||
return err
|
||||
}
|
||||
data = data[:n]
|
||||
|
||||
@@ -243,6 +243,17 @@ var _ = Describe("Server", func() {
|
||||
Expect(err).To(MatchError(testErr))
|
||||
})
|
||||
|
||||
It("closes all sessions when encountering a connection error", func() {
|
||||
err := serv.handlePacket(nil, nil, firstPacket)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(serv.sessions).To(HaveKey(connID))
|
||||
Expect(serv.sessions[connID].(*mockSession).closed).To(BeFalse())
|
||||
testErr := errors.New("connection error")
|
||||
conn.readErr = testErr
|
||||
_ = serv.Serve()
|
||||
Expect(serv.sessions[connID].(*mockSession).closed).To(BeTrue())
|
||||
})
|
||||
|
||||
It("ignores delayed packets with mismatching versions", func() {
|
||||
err := serv.handlePacket(nil, nil, firstPacket)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
Reference in New Issue
Block a user