Browse Source

Improve shadowtls server

世界 2 years ago
parent
commit
89913dfa8c
1 changed files with 3 additions and 4 deletions
  1. 3 4
      inbound/shadowtls.go

+ 3 - 4
inbound/shadowtls.go

@@ -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
 		}
 	}