Răsfoiți Sursa

Glue mux meta with data in one frame for Datagram

yuhan6665 1 an în urmă
părinte
comite
c29af68a2f
2 a modificat fișierele cu 5 adăugiri și 3 ștergeri
  1. 4 2
      common/mux/server_test.go
  2. 1 1
      common/mux/writer.go

+ 4 - 2
common/mux/server_test.go

@@ -90,7 +90,8 @@ func TestRegressionOutboundLeak(t *testing.T) {
 	}
 
 	{
-		b := buf.FromBytes([]byte("hello"))
+		b := buf.New()
+		b.Write([]byte("hello"))
 		common.Must(muxClientDownlink.Writer.WriteMultiBuffer(buf.MultiBuffer{b}))
 	}
 
@@ -102,7 +103,8 @@ func TestRegressionOutboundLeak(t *testing.T) {
 	}
 
 	{
-		b := buf.FromBytes([]byte("world"))
+		b := buf.New()
+		b.Write([]byte("world"))
 		common.Must(websiteUplink.Writer.WriteMultiBuffer(buf.MultiBuffer{b}))
 	}
 

+ 1 - 1
common/mux/writer.go

@@ -78,10 +78,10 @@ func writeMetaWithFrame(writer buf.Writer, meta FrameMetadata, data buf.MultiBuf
 	if _, err := serial.WriteUint16(frame, uint16(data.Len())); err != nil {
 		return err
 	}
-
 	mb2 := make(buf.MultiBuffer, 0, len(data)+1)
 	mb2 = append(mb2, frame)
 	mb2 = append(mb2, data...)
+	mb2 = buf.Compact(mb2)
 	return writer.WriteMultiBuffer(mb2)
 }