forked from quic-go/quic-go
call the ConnStateCallback in the server for encryption level changes
ref #439
This commit is contained in:
15
server.go
15
server.go
@@ -36,7 +36,7 @@ type server struct {
|
||||
sessionsMutex sync.RWMutex
|
||||
deleteClosedSessionsAfter time.Duration
|
||||
|
||||
newSession func(conn connection, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, closeCallback closeCallback) (packetHandler, error)
|
||||
newSession func(conn connection, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, closeCallback closeCallback, cryptoChangeCallback cryptoChangeCallback) (packetHandler, error)
|
||||
}
|
||||
|
||||
var _ Listener = &server{}
|
||||
@@ -185,6 +185,7 @@ func (s *server) handlePacket(pconn net.PacketConn, remoteAddr net.Addr, packet
|
||||
hdr.ConnectionID,
|
||||
s.scfg,
|
||||
s.closeCallback,
|
||||
s.cryptoChangeCallback,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -210,6 +211,18 @@ func (s *server) handlePacket(pconn net.PacketConn, remoteAddr net.Addr, packet
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *server) cryptoChangeCallback(session Session, isForwardSecure bool) {
|
||||
var state ConnState
|
||||
if isForwardSecure {
|
||||
state = ConnStateForwardSecure
|
||||
} else {
|
||||
state = ConnStateSecure
|
||||
}
|
||||
if s.config.ConnState != nil {
|
||||
go s.config.ConnState(session, state)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *server) closeCallback(id protocol.ConnectionID) {
|
||||
s.sessionsMutex.Lock()
|
||||
s.sessions[id] = nil
|
||||
|
||||
Reference in New Issue
Block a user