|  | @@ -212,6 +212,13 @@ func (this *SendingQueue) Pop() *alloc.Buffer {
 | 
											
												
													
														|  |  	return seg
 |  |  	return seg
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +func (this *SendingQueue) Last() *alloc.Buffer {
 | 
											
												
													
														|  | 
 |  | +	if this.IsEmpty() {
 | 
											
												
													
														|  | 
 |  | +		return nil
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return this.list[(this.start+this.len-1+this.cap)%this.cap]
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  func (this *SendingQueue) Push(seg *alloc.Buffer) {
 |  |  func (this *SendingQueue) Push(seg *alloc.Buffer) {
 | 
											
												
													
														|  |  	if this.IsFull() {
 |  |  	if this.IsFull() {
 | 
											
												
													
														|  |  		return
 |  |  		return
 | 
											
										
											
												
													
														|  | @@ -339,6 +346,18 @@ func (this *SendingWorker) Push(b []byte) int {
 | 
											
												
													
														|  |  	nBytes := 0
 |  |  	nBytes := 0
 | 
											
												
													
														|  |  	this.Lock()
 |  |  	this.Lock()
 | 
											
												
													
														|  |  	defer this.Unlock()
 |  |  	defer this.Unlock()
 | 
											
												
													
														|  | 
 |  | +	if !this.queue.IsEmpty() {
 | 
											
												
													
														|  | 
 |  | +		lastSeg := this.queue.Last()
 | 
											
												
													
														|  | 
 |  | +		if lastSeg.Len() < int(this.conn.mss) {
 | 
											
												
													
														|  | 
 |  | +			delta := int(this.conn.mss) - lastSeg.Len()
 | 
											
												
													
														|  | 
 |  | +			if delta > len(b) {
 | 
											
												
													
														|  | 
 |  | +				delta = len(b)
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  | 
 |  | +			lastSeg.Append(b[:delta])
 | 
											
												
													
														|  | 
 |  | +			b = b[delta:]
 | 
											
												
													
														|  | 
 |  | +			nBytes += delta
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  	for len(b) > 0 && !this.queue.IsFull() {
 |  |  	for len(b) > 0 && !this.queue.IsFull() {
 | 
											
												
													
														|  |  		var size int
 |  |  		var size int
 | 
											
												
													
														|  |  		if len(b) > int(this.conn.mss) {
 |  |  		if len(b) > int(this.conn.mss) {
 |