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

Fix: CopyFromPosition skip logic bugs

Rod Hynes 9 лет назад
Родитель
Сommit
72e9e72612
2 измененных файлов с 5 добавлено и 3 удалено
  1. 3 3
      psiphon/server/meekBuffer.go
  2. 2 0
      psiphon/server/meek_test.go

+ 3 - 3
psiphon/server/meekBuffer.go

@@ -144,8 +144,10 @@ func (response *CachedResponse) CopyFromPosition(
 
 		toCopy := min(len(buffer)-index, available)
 
+		available -= toCopy
+
 		if skip > 0 {
-			if toCopy > skip {
+			if toCopy >= skip {
 				index += skip
 				toCopy -= skip
 				skip = 0
@@ -161,8 +163,6 @@ func (response *CachedResponse) CopyFromPosition(
 			}
 		}
 
-		available -= toCopy
-
 		index = 0
 		bufferIndex = (bufferIndex + 1) % len(response.buffers)
 	}

+ 2 - 0
psiphon/server/meek_test.go

@@ -64,6 +64,8 @@ func TestCachedResponse(t *testing.T) {
 
 		{1, 16, 16, 0, 0, 1, 1, 16, true},
 
+		{1, 64*KB + 1, 64 * KB, 64 * KB, 1, 1, 1 * KB, 64 * KB, true},
+
 		{1, 10 * MB, 64 * KB, 64 * KB, 158, 1, 32 * KB, 0, false},
 
 		{1, 10 * MB, 64 * KB, 64 * KB, 159, 1, 32 * KB, 0, true},