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

Method UDPHandle

brooklink.go:347–370  ·  view source on GitHub ↗
(s *socks5.Server, addr *net.UDPAddr, d *socks5.Datagram)

Source from the content-addressed store, hash-verified

345}
346
347func (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
372func (x *BrookLink) Shutdown() error {
373 return x.S5.Shutdown()

Callers

nothing calls this directly

Calls 5

CreateExchangerMethod · 0.95
HandleMethod · 0.65
CleanMethod · 0.65
ExchangeMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected