浏览代码

refine auth writer

Darien Raymond 7 年之前
父节点
当前提交
8d0a74b3fa
共有 1 个文件被更改,包括 10 次插入5 次删除
  1. 10 5
      common/crypto/auth.go

+ 10 - 5
common/crypto/auth.go

@@ -204,12 +204,20 @@ func (w *AuthenticationWriter) writeStream(mb buf.MultiBuffer) error {
 func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
 	defer mb.Release()
 
+	if mb.IsEmpty() {
+		b := buf.New()
+		defer b.Release()
+
+		eb, _ := w.seal(b)
+		return w.writer.WriteMultiBuffer(buf.NewMultiBufferValue(eb))
+	}
+
 	mb2Write := buf.NewMultiBufferCap(len(mb) + 1)
 
-	for {
+	for !mb.IsEmpty() {
 		b := mb.SplitFirst()
 		if b == nil {
-			b = buf.New()
+			continue
 		}
 		eb, err := w.seal(b)
 		b.Release()
@@ -218,9 +226,6 @@ func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
 			return err
 		}
 		mb2Write.Append(eb)
-		if mb.IsEmpty() {
-			break
-		}
 	}
 
 	return w.writer.WriteMultiBuffer(mb2Write)