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

Avoid read channel corruption when response size > bufferSize

When receiving a response, what was happening

1. Read bufferSize and it gets assigned to leftdata
2. Read another bufferSize
3. 2 buffers get appended, but leftdata still points to first buffer
4. Process data buffer which contains only complete responses
5. Back to ReadLoop, but leftdata still points to first incomplete buffer
    causing corrupt data to be processed

Solution is to make leftdata nil once we have merged it with the second buffer
tags/0.2
Graham Barr 10 лет назад
Родитель
Сommit
d82da8fd71
1 измененных файлов: 1 добавлений и 0 удалений
  1. +1
    -0
      client/client.go

+ 1
- 0
client/client.go Просмотреть файл

@@ -104,6 +104,7 @@ ReadLoop:
}
if len(leftdata) > 0 { // some data left for processing
data = append(leftdata, data...)
leftdata = nil
}
for {
l := len(data)


Загрузка…
Отмена
Сохранить