forked from quic-go/quic-go
remove the handshakeCompleteChan from the TLS crypto setup
In TLS, we know that the handshake completed when RunHandshake() returns.
This commit is contained in:
@@ -63,8 +63,6 @@ type cryptoSetupTLS struct {
|
|||||||
handshakeErrChan chan struct{}
|
handshakeErrChan chan struct{}
|
||||||
// HandleData() sends errors on the messageErrChan
|
// HandleData() sends errors on the messageErrChan
|
||||||
messageErrChan chan error
|
messageErrChan chan error
|
||||||
// handshakeComplete is closed when the handshake completes
|
|
||||||
handshakeComplete chan<- struct{}
|
|
||||||
// handshakeDone is closed as soon as the go routine running qtls.Handshake() returns
|
// handshakeDone is closed as soon as the go routine running qtls.Handshake() returns
|
||||||
handshakeDone chan struct{}
|
handshakeDone chan struct{}
|
||||||
// transport parameters are sent on the receivedTransportParams, as soon as they are received
|
// transport parameters are sent on the receivedTransportParams, as soon as they are received
|
||||||
@@ -110,7 +108,6 @@ func NewCryptoSetupTLSClient(
|
|||||||
connID protocol.ConnectionID,
|
connID protocol.ConnectionID,
|
||||||
params *TransportParameters,
|
params *TransportParameters,
|
||||||
handleParams func(*TransportParameters),
|
handleParams func(*TransportParameters),
|
||||||
handshakeComplete chan<- struct{},
|
|
||||||
tlsConf *tls.Config,
|
tlsConf *tls.Config,
|
||||||
initialVersion protocol.VersionNumber,
|
initialVersion protocol.VersionNumber,
|
||||||
supportedVersions []protocol.VersionNumber,
|
supportedVersions []protocol.VersionNumber,
|
||||||
@@ -124,7 +121,6 @@ func NewCryptoSetupTLSClient(
|
|||||||
connID,
|
connID,
|
||||||
params,
|
params,
|
||||||
handleParams,
|
handleParams,
|
||||||
handshakeComplete,
|
|
||||||
tlsConf,
|
tlsConf,
|
||||||
versionInfo{
|
versionInfo{
|
||||||
currentVersion: currentVersion,
|
currentVersion: currentVersion,
|
||||||
@@ -143,7 +139,6 @@ func NewCryptoSetupTLSServer(
|
|||||||
connID protocol.ConnectionID,
|
connID protocol.ConnectionID,
|
||||||
params *TransportParameters,
|
params *TransportParameters,
|
||||||
handleParams func(*TransportParameters),
|
handleParams func(*TransportParameters),
|
||||||
handshakeComplete chan<- struct{},
|
|
||||||
tlsConf *tls.Config,
|
tlsConf *tls.Config,
|
||||||
supportedVersions []protocol.VersionNumber,
|
supportedVersions []protocol.VersionNumber,
|
||||||
currentVersion protocol.VersionNumber,
|
currentVersion protocol.VersionNumber,
|
||||||
@@ -156,7 +151,6 @@ func NewCryptoSetupTLSServer(
|
|||||||
connID,
|
connID,
|
||||||
params,
|
params,
|
||||||
handleParams,
|
handleParams,
|
||||||
handshakeComplete,
|
|
||||||
tlsConf,
|
tlsConf,
|
||||||
versionInfo{
|
versionInfo{
|
||||||
currentVersion: currentVersion,
|
currentVersion: currentVersion,
|
||||||
@@ -174,7 +168,6 @@ func newCryptoSetupTLS(
|
|||||||
connID protocol.ConnectionID,
|
connID protocol.ConnectionID,
|
||||||
params *TransportParameters,
|
params *TransportParameters,
|
||||||
handleParams func(*TransportParameters),
|
handleParams func(*TransportParameters),
|
||||||
handshakeComplete chan<- struct{},
|
|
||||||
tlsConf *tls.Config,
|
tlsConf *tls.Config,
|
||||||
versionInfo versionInfo,
|
versionInfo versionInfo,
|
||||||
logger utils.Logger,
|
logger utils.Logger,
|
||||||
@@ -191,7 +184,6 @@ func newCryptoSetupTLS(
|
|||||||
readEncLevel: protocol.EncryptionInitial,
|
readEncLevel: protocol.EncryptionInitial,
|
||||||
writeEncLevel: protocol.EncryptionInitial,
|
writeEncLevel: protocol.EncryptionInitial,
|
||||||
handleParamsCallback: handleParams,
|
handleParamsCallback: handleParams,
|
||||||
handshakeComplete: handshakeComplete,
|
|
||||||
logger: logger,
|
logger: logger,
|
||||||
perspective: perspective,
|
perspective: perspective,
|
||||||
handshakeDone: make(chan struct{}),
|
handshakeDone: make(chan struct{}),
|
||||||
@@ -256,7 +248,6 @@ func (h *cryptoSetupTLS) RunHandshake() error {
|
|||||||
<-handshakeErrChan
|
<-handshakeErrChan
|
||||||
return errors.New("Handshake aborted")
|
return errors.New("Handshake aborted")
|
||||||
case <-handshakeComplete: // return when the handshake is done
|
case <-handshakeComplete: // return when the handshake is done
|
||||||
close(h.handshakeComplete)
|
|
||||||
return nil
|
return nil
|
||||||
case err := <-handshakeErrChan:
|
case err := <-handshakeErrChan:
|
||||||
// if handleMessageFor{server,client} are waiting for some qtls action, make them return
|
// if handleMessageFor{server,client} are waiting for some qtls action, make them return
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
&TransportParameters{},
|
&TransportParameters{},
|
||||||
func(p *TransportParameters) {},
|
func(p *TransportParameters) {},
|
||||||
make(chan struct{}),
|
|
||||||
testdata.GetTLSConfig(),
|
testdata.GetTLSConfig(),
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
@@ -94,7 +93,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
&TransportParameters{},
|
&TransportParameters{},
|
||||||
func(p *TransportParameters) {},
|
func(p *TransportParameters) {},
|
||||||
make(chan struct{}),
|
|
||||||
testdata.GetTLSConfig(),
|
testdata.GetTLSConfig(),
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
@@ -124,7 +122,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
&TransportParameters{},
|
&TransportParameters{},
|
||||||
func(p *TransportParameters) {},
|
func(p *TransportParameters) {},
|
||||||
make(chan struct{}),
|
|
||||||
testdata.GetTLSConfig(),
|
testdata.GetTLSConfig(),
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
@@ -204,7 +201,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
&TransportParameters{},
|
&TransportParameters{},
|
||||||
func(p *TransportParameters) {},
|
func(p *TransportParameters) {},
|
||||||
make(chan struct{}),
|
|
||||||
clientConf,
|
clientConf,
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
@@ -221,7 +217,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
&TransportParameters{StatelessResetToken: bytes.Repeat([]byte{42}, 16)},
|
&TransportParameters{StatelessResetToken: bytes.Repeat([]byte{42}, 16)},
|
||||||
func(p *TransportParameters) {},
|
func(p *TransportParameters) {},
|
||||||
make(chan struct{}),
|
|
||||||
serverConf,
|
serverConf,
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
@@ -261,7 +256,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
&TransportParameters{},
|
&TransportParameters{},
|
||||||
func(p *TransportParameters) {},
|
func(p *TransportParameters) {},
|
||||||
make(chan struct{}),
|
|
||||||
&tls.Config{InsecureSkipVerify: true},
|
&tls.Config{InsecureSkipVerify: true},
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
@@ -301,7 +295,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
cTransportParameters,
|
cTransportParameters,
|
||||||
func(p *TransportParameters) { sTransportParametersRcvd = p },
|
func(p *TransportParameters) { sTransportParametersRcvd = p },
|
||||||
make(chan struct{}),
|
|
||||||
&tls.Config{ServerName: "quic.clemente.io"},
|
&tls.Config{ServerName: "quic.clemente.io"},
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
@@ -322,7 +315,6 @@ var _ = Describe("Crypto Setup TLS", func() {
|
|||||||
protocol.ConnectionID{},
|
protocol.ConnectionID{},
|
||||||
sTransportParameters,
|
sTransportParameters,
|
||||||
func(p *TransportParameters) { cTransportParametersRcvd = p },
|
func(p *TransportParameters) { cTransportParametersRcvd = p },
|
||||||
make(chan struct{}),
|
|
||||||
testdata.GetTLSConfig(),
|
testdata.GetTLSConfig(),
|
||||||
[]protocol.VersionNumber{protocol.VersionTLS},
|
[]protocol.VersionNumber{protocol.VersionTLS},
|
||||||
protocol.VersionTLS,
|
protocol.VersionTLS,
|
||||||
|
|||||||
14
session.go
14
session.go
@@ -123,7 +123,7 @@ type session struct {
|
|||||||
// It receives when it makes sense to try decrypting undecryptable packets.
|
// It receives when it makes sense to try decrypting undecryptable packets.
|
||||||
// Only used for gQUIC.
|
// Only used for gQUIC.
|
||||||
handshakeEvent <-chan struct{}
|
handshakeEvent <-chan struct{}
|
||||||
handshakeCompleteChan <-chan struct{} // is closed when the handshake completes
|
handshakeCompleteChan chan struct{} // is closed when the handshake completes
|
||||||
handshakeComplete bool
|
handshakeComplete bool
|
||||||
|
|
||||||
receivedFirstPacket bool // since packet numbers start at 0, we can't use largestRcvdPacketNumber != 0 for this
|
receivedFirstPacket bool // since packet numbers start at 0, we can't use largestRcvdPacketNumber != 0 for this
|
||||||
@@ -327,7 +327,6 @@ func newTLSServerSession(
|
|||||||
logger utils.Logger,
|
logger utils.Logger,
|
||||||
v protocol.VersionNumber,
|
v protocol.VersionNumber,
|
||||||
) (quicSession, error) {
|
) (quicSession, error) {
|
||||||
handshakeCompleteChan := make(chan struct{})
|
|
||||||
s := &session{
|
s := &session{
|
||||||
conn: conn,
|
conn: conn,
|
||||||
sessionRunner: runner,
|
sessionRunner: runner,
|
||||||
@@ -335,7 +334,7 @@ func newTLSServerSession(
|
|||||||
srcConnID: srcConnID,
|
srcConnID: srcConnID,
|
||||||
destConnID: destConnID,
|
destConnID: destConnID,
|
||||||
perspective: protocol.PerspectiveServer,
|
perspective: protocol.PerspectiveServer,
|
||||||
handshakeCompleteChan: handshakeCompleteChan,
|
handshakeCompleteChan: make(chan struct{}),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
version: v,
|
version: v,
|
||||||
}
|
}
|
||||||
@@ -350,7 +349,6 @@ func newTLSServerSession(
|
|||||||
origConnID,
|
origConnID,
|
||||||
params,
|
params,
|
||||||
s.processTransportParameters,
|
s.processTransportParameters,
|
||||||
handshakeCompleteChan,
|
|
||||||
tlsConf,
|
tlsConf,
|
||||||
conf.Versions,
|
conf.Versions,
|
||||||
v,
|
v,
|
||||||
@@ -402,7 +400,6 @@ var newTLSClientSession = func(
|
|||||||
logger utils.Logger,
|
logger utils.Logger,
|
||||||
v protocol.VersionNumber,
|
v protocol.VersionNumber,
|
||||||
) (quicSession, error) {
|
) (quicSession, error) {
|
||||||
handshakeCompleteChan := make(chan struct{})
|
|
||||||
s := &session{
|
s := &session{
|
||||||
conn: conn,
|
conn: conn,
|
||||||
sessionRunner: runner,
|
sessionRunner: runner,
|
||||||
@@ -410,7 +407,7 @@ var newTLSClientSession = func(
|
|||||||
srcConnID: srcConnID,
|
srcConnID: srcConnID,
|
||||||
destConnID: destConnID,
|
destConnID: destConnID,
|
||||||
perspective: protocol.PerspectiveClient,
|
perspective: protocol.PerspectiveClient,
|
||||||
handshakeCompleteChan: handshakeCompleteChan,
|
handshakeCompleteChan: make(chan struct{}),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
version: v,
|
version: v,
|
||||||
}
|
}
|
||||||
@@ -423,7 +420,6 @@ var newTLSClientSession = func(
|
|||||||
s.destConnID,
|
s.destConnID,
|
||||||
params,
|
params,
|
||||||
s.processTransportParameters,
|
s.processTransportParameters,
|
||||||
handshakeCompleteChan,
|
|
||||||
tlsConf,
|
tlsConf,
|
||||||
initialVersion,
|
initialVersion,
|
||||||
conf.Versions,
|
conf.Versions,
|
||||||
@@ -494,6 +490,10 @@ func (s *session) run() error {
|
|||||||
go func() {
|
go func() {
|
||||||
if err := s.cryptoStreamHandler.RunHandshake(); err != nil {
|
if err := s.cryptoStreamHandler.RunHandshake(); err != nil {
|
||||||
s.closeLocal(err)
|
s.closeLocal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if s.version.UsesTLS() {
|
||||||
|
close(s.handshakeCompleteChan)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
if s.version.UsesTLS() && s.perspective == protocol.PerspectiveClient {
|
if s.version.UsesTLS() && s.perspective == protocol.PerspectiveClient {
|
||||||
|
|||||||
Reference in New Issue
Block a user