|
|
@@ -1,6 +1,7 @@
|
|
|
package mux
|
|
|
|
|
|
import (
|
|
|
+ "v2ray.com/core/common"
|
|
|
"v2ray.com/core/common/bitmask"
|
|
|
"v2ray.com/core/common/buf"
|
|
|
"v2ray.com/core/common/net"
|
|
|
@@ -58,21 +59,21 @@ type FrameMetadata struct {
|
|
|
|
|
|
func (f FrameMetadata) WriteTo(b *buf.Buffer) error {
|
|
|
lenBytes := b.Bytes()
|
|
|
- b.AppendBytes(0x00, 0x00)
|
|
|
+ common.Must2(b.AppendBytes(0x00, 0x00))
|
|
|
|
|
|
len0 := b.Len()
|
|
|
if err := b.AppendSupplier(serial.WriteUint16(f.SessionID)); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- b.AppendBytes(byte(f.SessionStatus), byte(f.Option))
|
|
|
+ common.Must2(b.AppendBytes(byte(f.SessionStatus), byte(f.Option)))
|
|
|
|
|
|
if f.SessionStatus == SessionStatusNew {
|
|
|
switch f.Target.Network {
|
|
|
case net.Network_TCP:
|
|
|
- b.AppendBytes(byte(TargetNetworkTCP))
|
|
|
+ common.Must2(b.AppendBytes(byte(TargetNetworkTCP)))
|
|
|
case net.Network_UDP:
|
|
|
- b.AppendBytes(byte(TargetNetworkUDP))
|
|
|
+ common.Must2(b.AppendBytes(byte(TargetNetworkUDP)))
|
|
|
}
|
|
|
|
|
|
if err := addrParser.WriteAddressPort(b, f.Target.Address, f.Target.Port); err != nil {
|
|
|
@@ -85,6 +86,8 @@ func (f FrameMetadata) WriteTo(b *buf.Buffer) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+// ReadFrameFrom reads a FrameMetadata from the given buffer.
|
|
|
+// Visible for testing only.
|
|
|
func ReadFrameFrom(b *buf.Buffer) (*FrameMetadata, error) {
|
|
|
if b.Len() < 4 {
|
|
|
return nil, newError("insufficient buffer: ", b.Len())
|