fix type assert
This commit is contained in:
parent
e203d7760e
commit
ee8b5d572c
17
relay.go
17
relay.go
@ -271,16 +271,20 @@ func (c *relayConn) Read(b []byte) (n int, err error) {
|
||||
resp := new(relay.Response)
|
||||
_, err = resp.ReadFrom(c.Conn)
|
||||
if err != nil {
|
||||
log.Log("[relay] read:", err)
|
||||
return
|
||||
}
|
||||
if resp.Version != relay.Version1 {
|
||||
err = relay.ErrBadVersion
|
||||
log.Log("[relay] read:", err)
|
||||
return
|
||||
}
|
||||
if resp.Status != relay.StatusOK {
|
||||
err = fmt.Errorf("status %d", resp.Status)
|
||||
log.Log("[relay] read:", err)
|
||||
return
|
||||
}
|
||||
log.Log("[relay] read response OK")
|
||||
})
|
||||
|
||||
if !c.udp {
|
||||
@ -292,6 +296,7 @@ func (c *relayConn) Read(b []byte) (n int, err error) {
|
||||
return
|
||||
}
|
||||
dlen := int(binary.BigEndian.Uint16(bb[:]))
|
||||
log.Log("[relay] read udp", dlen)
|
||||
if len(b) >= dlen {
|
||||
return io.ReadFull(c.Conn, b[:dlen])
|
||||
}
|
||||
@ -301,6 +306,12 @@ func (c *relayConn) Read(b []byte) (n int, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (c *relayConn) ReadFrom(b []byte) (n int, addr net.Addr, err error) {
|
||||
n, err = c.Read(b)
|
||||
addr = c.Conn.RemoteAddr()
|
||||
return
|
||||
}
|
||||
|
||||
func (c *relayConn) Write(b []byte) (n int, err error) {
|
||||
if len(b) > 0xFFFF {
|
||||
err = errors.New("write: data maximum exceeded")
|
||||
@ -314,6 +325,7 @@ func (c *relayConn) Write(b []byte) (n int, err error) {
|
||||
c.wbuf.Write(bb[:])
|
||||
}
|
||||
c.wbuf.Write(b) // append the data to the cached header
|
||||
log.Log("[relay] write wbuf", len(b))
|
||||
// _, err = c.Conn.Write(c.wbuf.Bytes())
|
||||
// c.wbuf.Reset()
|
||||
_, err = c.wbuf.WriteTo(c.Conn)
|
||||
@ -327,5 +339,10 @@ func (c *relayConn) Write(b []byte) (n int, err error) {
|
||||
binary.BigEndian.PutUint16(buf[:2], uint16(len(b)))
|
||||
n = copy(buf[2:], b)
|
||||
_, err = c.Conn.Write(buf)
|
||||
log.Log("[relay] write", n)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *relayConn) WriteTo(b []byte, addr net.Addr) (n int, err error) {
|
||||
return c.Write(b)
|
||||
}
|
||||
|
8
ss.go
8
ss.go
@ -302,7 +302,13 @@ func (h *shadowUDPHandler) Handle(conn net.Conn) {
|
||||
log.Logf("[ssu] %s: %s", conn.LocalAddr(), err)
|
||||
return
|
||||
}
|
||||
cc = c.(net.PacketConn)
|
||||
var ok bool
|
||||
cc, ok = c.(net.PacketConn)
|
||||
if !ok {
|
||||
log.Logf("[ssu] %s: not a packet connection", conn.LocalAddr())
|
||||
return
|
||||
}
|
||||
|
||||
defer cc.Close()
|
||||
|
||||
pc, ok := conn.(net.PacketConn)
|
||||
|
@ -173,7 +173,13 @@ func (h *tunHandler) Handle(conn net.Conn) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
pc = cc.(net.PacketConn)
|
||||
var ok bool
|
||||
pc, ok = cc.(net.PacketConn)
|
||||
if !ok {
|
||||
err = errors.New("not a packet connection")
|
||||
log.Logf("[tun] %s - %s: %s", conn.LocalAddr(), raddr, err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
if h.options.TCPMode {
|
||||
if raddr != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user