|  | @@ -82,23 +82,21 @@ func (w *Writer) writeData(mb buf.MultiBuffer) error {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  // Write implements buf.MultiBufferWriter.
 |  |  // Write implements buf.MultiBufferWriter.
 | 
											
												
													
														|  |  func (w *Writer) Write(mb buf.MultiBuffer) error {
 |  |  func (w *Writer) Write(mb buf.MultiBuffer) error {
 | 
											
												
													
														|  | 
 |  | +	defer mb.Release()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	if mb.IsEmpty() {
 |  |  	if mb.IsEmpty() {
 | 
											
												
													
														|  |  		return w.writeMetaOnly()
 |  |  		return w.writeMetaOnly()
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	if w.transferType == protocol.TransferTypeStream {
 |  | 
 | 
											
												
													
														|  | -		const chunkSize = 8 * 1024
 |  | 
 | 
											
												
													
														|  | -		for !mb.IsEmpty() {
 |  | 
 | 
											
												
													
														|  | -			slice := mb.SliceBySize(chunkSize)
 |  | 
 | 
											
												
													
														|  | -			if err := w.writeData(slice); err != nil {
 |  | 
 | 
											
												
													
														|  | -				return err
 |  | 
 | 
											
												
													
														|  | -			}
 |  | 
 | 
											
												
													
														|  | 
 |  | +	for !mb.IsEmpty() {
 | 
											
												
													
														|  | 
 |  | +		var chunk buf.MultiBuffer
 | 
											
												
													
														|  | 
 |  | +		if w.transferType == protocol.TransferTypeStream {
 | 
											
												
													
														|  | 
 |  | +			chunk = mb.SliceBySize(8 * 1024)
 | 
											
												
													
														|  | 
 |  | +		} else {
 | 
											
												
													
														|  | 
 |  | +			chunk = buf.NewMultiBufferValue(mb.SplitFirst())
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  | -	} else {
 |  | 
 | 
											
												
													
														|  | -		for _, b := range mb {
 |  | 
 | 
											
												
													
														|  | -			if err := w.writeData(buf.NewMultiBufferValue(b)); err != nil {
 |  | 
 | 
											
												
													
														|  | -				return err
 |  | 
 | 
											
												
													
														|  | -			}
 |  | 
 | 
											
												
													
														|  | 
 |  | +		if err := w.writeData(chunk); err != nil {
 | 
											
												
													
														|  | 
 |  | +			return err
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 |