MCPcopy
hub / github.com/txthinking/brook / UDPHandle

Method UDPHandle

client.go:96–139  ·  view source on GitHub ↗
(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram)

Source from the content-addressed store, hash-verified

94}
95
96func (x *Client) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error {
97 dstb := append(append([]byte{d.Atyp}, d.DstAddr...), d.DstPort...)
98 conn, err := x.PacketConnFactory.Handle(addr, dstb, d.Data, func(b []byte) (int, error) {
99 d.Data = b
100 return s.UDPConn.WriteToUDP(d.Bytes(), addr)
101 }, x.UDPTimeout)
102 if err != nil {
103 return err
104 }
105 if conn == nil {
106 return nil
107 }
108 defer conn.Close()
109 if x.UDPOverTCP {
110 rc, err := NATDial("tcp", addr.String(), d.Address(), x.ServerAddress)
111 if err != nil {
112 return err
113 }
114 defer rc.Close()
115 sc, err := NewStreamClient("udp", x.Password, addr.String(), rc, x.UDPTimeout, dstb)
116 if err != nil {
117 return err
118 }
119 defer sc.Clean()
120 if err := sc.Exchange(conn); err != nil {
121 return nil
122 }
123 return nil
124 }
125 rc, err := NATDial("udp", addr.String(), d.Address(), x.ServerAddress)
126 if err != nil {
127 return err
128 }
129 defer rc.Close()
130 sc, err := NewPacketClient(x.Password, addr.String(), rc, x.UDPTimeout, dstb)
131 if err != nil {
132 return err
133 }
134 defer sc.Clean()
135 if err := sc.Exchange(conn); err != nil {
136 return nil
137 }
138 return nil
139}
140
141func (x *Client) Shutdown() error {
142 return x.Server.Shutdown()

Callers

nothing calls this directly

Calls 6

CleanMethod · 0.95
ExchangeMethod · 0.95
NewStreamClientFunction · 0.85
NewPacketClientFunction · 0.85
HandleMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected