forked from yuxh/gearman-go
		
	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
			
			
This commit is contained in:
		
							parent
							
								
									49ea8c0ec1
								
							
						
					
					
						commit
						d82da8fd71
					
				@ -104,6 +104,7 @@ ReadLoop:
 | 
			
		||||
		}
 | 
			
		||||
		if len(leftdata) > 0 { // some data left for processing
 | 
			
		||||
			data = append(leftdata, data...)
 | 
			
		||||
			leftdata = nil
 | 
			
		||||
		}
 | 
			
		||||
		for {
 | 
			
		||||
			l := len(data)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user