mirror of https://github.com/v2ray/v2ray-core
				
				
				
			
						commit
						9a06ff8f91
					
				| 
						 | 
				
			
			@ -24,20 +24,14 @@ func readOneUDP(r io.Reader) (*Buffer, error) {
 | 
			
		|||
	return nil, newError("Reader returns too many empty payloads.")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadBuffer reads a Buffer from the given reader, without allocating large buffer in advance.
 | 
			
		||||
// ReadBuffer reads a Buffer from the given reader.
 | 
			
		||||
func ReadBuffer(r io.Reader) (*Buffer, error) {
 | 
			
		||||
	// Use an one-byte buffer to wait for incoming payload.
 | 
			
		||||
	var firstByte [1]byte
 | 
			
		||||
	nBytes, err := r.Read(firstByte[:])
 | 
			
		||||
	b := New()
 | 
			
		||||
	_, err := b.ReadFrom(r)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		b.Release()
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	b := New()
 | 
			
		||||
	if nBytes > 0 {
 | 
			
		||||
		common.Must(b.WriteByte(firstByte[0]))
 | 
			
		||||
	}
 | 
			
		||||
	b.ReadFrom(r)
 | 
			
		||||
	return b, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue