Просмотр исходного кода

Fix: return number of byte buffered

mirokuratczyk 3 лет назад
Родитель
Сommit
64ba57ffa7
1 измененных файлов с 6 добавлено и 3 удалено
  1. 6 3
      psiphon/common/transforms/httpTransformer.go

+ 6 - 3
psiphon/common/transforms/httpTransformer.go

@@ -131,7 +131,8 @@ func (t *HTTPTransformer) Write(b []byte) (int, error) {
 
 			n, err := strconv.ParseUint(string(cl), 10, 63)
 			if err != nil {
-				return 0, errors.Trace(err)
+				// b buffered in t.b
+				return len(b), errors.Trace(err)
 			}
 
 			t.remain = n
@@ -144,7 +145,8 @@ func (t *HTTPTransformer) Write(b []byte) (int, error) {
 			if t.transform != nil {
 				newHeaderS, err := t.transform.Apply(t.seed, string(header))
 				if err != nil {
-					return 0, errors.Trace(err)
+					// b buffered in t.b
+					return len(b), errors.Trace(err)
 				}
 
 				newHeader := []byte(newHeaderS)
@@ -160,7 +162,8 @@ func (t *HTTPTransformer) Write(b []byte) (int, error) {
 			}
 
 			if math.MaxUint64-t.remain < uint64(len(header)) {
-				return 0, errors.TraceNew("t.remain + uint64(len(header)) overflows")
+				// b buffered in t.b
+				return len(b), errors.TraceNew("t.remain + uint64(len(header)) overflows")
 			}
 			t.remain += uint64(len(header))