From 8d0a74b3fabbbc4ad95ea9cfa661f3ca46796b03 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Sun, 1 Apr 2018 22:41:38 +0200 Subject: [PATCH] refine auth writer --- common/crypto/auth.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/common/crypto/auth.go b/common/crypto/auth.go index 416645315..9895bed14 100644 --- a/common/crypto/auth.go +++ b/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)