|  | @@ -68,12 +68,19 @@ type ChunkStreamReader struct {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	buffer       []byte
 |  |  	buffer       []byte
 | 
											
												
													
														|  |  	leftOverSize int32
 |  |  	leftOverSize int32
 | 
											
												
													
														|  | 
 |  | +	maxNumChunk  uint32
 | 
											
												
													
														|  | 
 |  | +	numChunk     uint32
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func NewChunkStreamReader(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader {
 |  |  func NewChunkStreamReader(sizeDecoder ChunkSizeDecoder, reader io.Reader) *ChunkStreamReader {
 | 
											
												
													
														|  | 
 |  | +	return NewChunkStreamReaderWithChunkCount(sizeDecoder, reader, 0)
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func NewChunkStreamReaderWithChunkCount(sizeDecoder ChunkSizeDecoder, reader io.Reader, maxNumChunk uint32) *ChunkStreamReader {
 | 
											
												
													
														|  |  	r := &ChunkStreamReader{
 |  |  	r := &ChunkStreamReader{
 | 
											
												
													
														|  |  		sizeDecoder: sizeDecoder,
 |  |  		sizeDecoder: sizeDecoder,
 | 
											
												
													
														|  |  		buffer:      make([]byte, sizeDecoder.SizeBytes()),
 |  |  		buffer:      make([]byte, sizeDecoder.SizeBytes()),
 | 
											
												
													
														|  | 
 |  | +		maxNumChunk: maxNumChunk,
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	if breader, ok := reader.(*buf.BufferedReader); ok {
 |  |  	if breader, ok := reader.(*buf.BufferedReader); ok {
 | 
											
												
													
														|  |  		r.reader = breader
 |  |  		r.reader = breader
 | 
											
										
											
												
													
														|  | @@ -94,6 +101,10 @@ func (r *ChunkStreamReader) readSize() (uint16, error) {
 | 
											
												
													
														|  |  func (r *ChunkStreamReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
 |  |  func (r *ChunkStreamReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
 | 
											
												
													
														|  |  	size := r.leftOverSize
 |  |  	size := r.leftOverSize
 | 
											
												
													
														|  |  	if size == 0 {
 |  |  	if size == 0 {
 | 
											
												
													
														|  | 
 |  | +		r.numChunk++
 | 
											
												
													
														|  | 
 |  | +		if r.maxNumChunk > 0 && r.numChunk > r.maxNumChunk {
 | 
											
												
													
														|  | 
 |  | +			return nil, io.EOF
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  |  		nextSize, err := r.readSize()
 |  |  		nextSize, err := r.readSize()
 | 
											
												
													
														|  |  		if err != nil {
 |  |  		if err != nil {
 | 
											
												
													
														|  |  			return nil, err
 |  |  			return nil, err
 |