(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram)
| 345 | } |
| 346 | |
| 347 | func (x *BrookLink) UDPHandle(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram) error { |
| 348 | dstb := append(append([]byte{d.Atyp}, d.DstAddr...), d.DstPort...) |
| 349 | conn, err := x.Pcf.Handle(addr, dstb, d.Data, func(b []byte) (int, error) { |
| 350 | d.Data = b |
| 351 | return s.UDPConn.WriteToUDP(d.Bytes(), addr) |
| 352 | }, x.UDPTimeout) |
| 353 | if err != nil { |
| 354 | return err |
| 355 | } |
| 356 | if conn == nil { |
| 357 | return nil |
| 358 | } |
| 359 | defer conn.Close() |
| 360 | sc, rc, err := x.CreateExchanger("udp", addr.String(), dstb, x.TCPTimeout, x.UDPTimeout) |
| 361 | if err != nil { |
| 362 | return err |
| 363 | } |
| 364 | defer rc.Close() |
| 365 | defer sc.Clean() |
| 366 | if err := sc.Exchange(conn); err != nil { |
| 367 | return nil |
| 368 | } |
| 369 | return nil |
| 370 | } |
| 371 | |
| 372 | func (x *BrookLink) Shutdown() error { |
| 373 | return x.S5.Shutdown() |
nothing calls this directly
no test coverage detected