Improve shadowtls server

This commit is contained in:
世界 2022-11-21 12:03:38 +08:00
parent 468778f67f
commit 89913dfa8c
No known key found for this signature in database
GPG key ID: CD109927C34A63C4

View file

@ -132,7 +132,7 @@ func (s *ShadowTLS) copyUntilHandshakeFinished(dst io.Writer, src io.Reader) err
func (s *ShadowTLS) copyUntilHandshakeFinishedV2(dst net.Conn, src io.Reader, hash *shadowtls.HashWriteConn) (*buf.Buffer, error) {
const applicationData = 0x17
var tlsHdr [5]byte
var applicationDataCount int
var doFallback bool
for {
_, err := io.ReadFull(src, tlsHdr[:])
if err != nil {
@ -152,14 +152,13 @@ func (s *ShadowTLS) copyUntilHandshakeFinishedV2(dst net.Conn, src io.Reader, ha
}
_, err = io.Copy(dst, io.MultiReader(bytes.NewReader(tlsHdr[:]), data))
data.Release()
applicationDataCount++
doFallback = true
} else {
_, err = io.Copy(dst, io.MultiReader(bytes.NewReader(tlsHdr[:]), io.LimitReader(src, int64(length))))
}
if err != nil {
return nil, err
}
if applicationDataCount > 3 {
} else if doFallback {
return nil, os.ErrPermission
}
}