File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed
Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -488,6 +488,29 @@ func (r *pendingData) moveToWithoutLock(toBuf *linkedBuffer) {
488488 r .stream .session .logger .error ("readBufferSlice error" + err .Error ())
489489 break
490490 }
491+ if slice .size () == 0 {
492+ // 首个slice就是空切片直接回收即可
493+ if toBuf .sliceList .front () == nil {
494+ offset = slice .nextBufferOffset ()
495+ r .stream .session .bufferManager .recycleBuffer (slice )
496+ continue
497+ }
498+ // 找到最后一个slice 只要front()有值 back() 就一定有值
499+ preSlice := toBuf .sliceList .back ()
500+ if slice .hasNext () {
501+ // 如果当前空slice有下一个slice,直接修改preSlice的next slice 并回收当前slice
502+ preSlice .linkNext (slice .nextBufferOffset ())
503+ offset = slice .nextBufferOffset () // 索引下一个
504+ r .stream .session .bufferManager .recycleBuffer (slice )
505+ continue
506+ } else {
507+ // 如果当前空slice是最后一个slice, 清除最后一个slice的next flag 并且回收当前slice
508+ preSlice .clearFlag ()
509+ preSlice .setInUsed ()
510+ r .stream .session .bufferManager .recycleBuffer (slice )
511+ break
512+ }
513+ }
491514 toBuf .appendBufferSlice (slice )
492515 if ! slice .hasNext () {
493516 break
You can’t perform that action at this time.
0 commit comments