mirror of https://github.com/v2ray/v2ray-core
refine auth writer
parent
b3ecb9f766
commit
8d0a74b3fa
|
@ -204,12 +204,20 @@ func (w *AuthenticationWriter) writeStream(mb buf.MultiBuffer) error {
|
||||||
func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
|
func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
|
||||||
defer mb.Release()
|
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)
|
mb2Write := buf.NewMultiBufferCap(len(mb) + 1)
|
||||||
|
|
||||||
for {
|
for !mb.IsEmpty() {
|
||||||
b := mb.SplitFirst()
|
b := mb.SplitFirst()
|
||||||
if b == nil {
|
if b == nil {
|
||||||
b = buf.New()
|
continue
|
||||||
}
|
}
|
||||||
eb, err := w.seal(b)
|
eb, err := w.seal(b)
|
||||||
b.Release()
|
b.Release()
|
||||||
|
@ -218,9 +226,6 @@ func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
mb2Write.Append(eb)
|
mb2Write.Append(eb)
|
||||||
if mb.IsEmpty() {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return w.writer.WriteMultiBuffer(mb2Write)
|
return w.writer.WriteMultiBuffer(mb2Write)
|
||||||
|
|
Loading…
Reference in New Issue