Преглед изворни кода

Fix an edge case with tls hello fragment

yuhan6665 пре 1 година
родитељ
комит
548646fb06
1 измењених фајлова са 3 додато и 0 уклоњено
  1. 3 0
      proxy/freedom/freedom.go

+ 3 - 0
proxy/freedom/freedom.go

@@ -373,6 +373,9 @@ func (f *FragmentWriter) Write(b []byte) (int, error) {
 			return f.writer.Write(b)
 		}
 		recordLen := 5 + ((int(b[3]) << 8) | int(b[4]))
+		if len(b) < recordLen { // maybe already fragmented somehow
+			return f.writer.Write(b)
+		}
 		data := b[5:recordLen]
 		buf := make([]byte, 1024)
 		for from := 0; ; {