forked from quic-go/quic-go
Merge pull request #1739 from lucas-clemente/connection-state
set the ConnectionState
This commit is contained in:
@@ -53,6 +53,7 @@ var ErrOpenerNotYetAvailable = errors.New("CryptoSetup: opener at this encryptio
|
|||||||
|
|
||||||
type cryptoSetup struct {
|
type cryptoSetup struct {
|
||||||
tlsConf *qtls.Config
|
tlsConf *qtls.Config
|
||||||
|
conn *qtls.Conn
|
||||||
|
|
||||||
messageChan chan []byte
|
messageChan chan []byte
|
||||||
|
|
||||||
@@ -124,7 +125,7 @@ func NewCryptoSetupClient(
|
|||||||
currentVersion,
|
currentVersion,
|
||||||
logger,
|
logger,
|
||||||
)
|
)
|
||||||
return newCryptoSetup(
|
cs, clientHelloWritten, err := newCryptoSetup(
|
||||||
initialStream,
|
initialStream,
|
||||||
handshakeStream,
|
handshakeStream,
|
||||||
connID,
|
connID,
|
||||||
@@ -135,6 +136,11 @@ func NewCryptoSetupClient(
|
|||||||
logger,
|
logger,
|
||||||
perspective,
|
perspective,
|
||||||
)
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
cs.conn = qtls.Client(nil, cs.tlsConf)
|
||||||
|
return cs, clientHelloWritten, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCryptoSetupServer creates a new crypto setup for the server
|
// NewCryptoSetupServer creates a new crypto setup for the server
|
||||||
@@ -167,7 +173,11 @@ func NewCryptoSetupServer(
|
|||||||
logger,
|
logger,
|
||||||
perspective,
|
perspective,
|
||||||
)
|
)
|
||||||
return cs, err
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cs.conn = qtls.Server(nil, cs.tlsConf)
|
||||||
|
return cs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newCryptoSetup(
|
func newCryptoSetup(
|
||||||
@@ -180,7 +190,7 @@ func newCryptoSetup(
|
|||||||
tlsConf *tls.Config,
|
tlsConf *tls.Config,
|
||||||
logger utils.Logger,
|
logger utils.Logger,
|
||||||
perspective protocol.Perspective,
|
perspective protocol.Perspective,
|
||||||
) (CryptoSetup, <-chan struct{} /* ClientHello written */, error) {
|
) (*cryptoSetup, <-chan struct{} /* ClientHello written */, error) {
|
||||||
initialSealer, initialOpener, err := NewInitialAEAD(connID, perspective)
|
initialSealer, initialOpener, err := NewInitialAEAD(connID, perspective)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@@ -214,19 +224,12 @@ func newCryptoSetup(
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *cryptoSetup) RunHandshake() error {
|
func (h *cryptoSetup) RunHandshake() error {
|
||||||
var conn *qtls.Conn
|
|
||||||
switch h.perspective {
|
|
||||||
case protocol.PerspectiveClient:
|
|
||||||
conn = qtls.Client(nil, h.tlsConf)
|
|
||||||
case protocol.PerspectiveServer:
|
|
||||||
conn = qtls.Server(nil, h.tlsConf)
|
|
||||||
}
|
|
||||||
// Handle errors that might occur when HandleData() is called.
|
// Handle errors that might occur when HandleData() is called.
|
||||||
handshakeErrChan := make(chan error, 1)
|
handshakeErrChan := make(chan error, 1)
|
||||||
handshakeComplete := make(chan struct{})
|
handshakeComplete := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
defer close(h.handshakeDone)
|
defer close(h.handshakeDone)
|
||||||
if err := conn.Handshake(); err != nil {
|
if err := h.conn.Handshake(); err != nil {
|
||||||
handshakeErrChan <- err
|
handshakeErrChan <- err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -525,6 +528,10 @@ func (h *cryptoSetup) GetOpener(level protocol.EncryptionLevel) (Opener, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *cryptoSetup) ConnectionState() ConnectionState {
|
func (h *cryptoSetup) ConnectionState() ConnectionState {
|
||||||
// TODO: return the connection state
|
connState := h.conn.ConnectionState()
|
||||||
return ConnectionState{}
|
return ConnectionState{
|
||||||
|
HandshakeComplete: connState.HandshakeComplete,
|
||||||
|
ServerName: connState.ServerName,
|
||||||
|
PeerCertificates: connState.PeerCertificates,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user