From 073ba6f1c54fee8047eb8dc5c37a488ceb3bc858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Wed, 29 Sep 2021 18:52:59 +0800 Subject: [PATCH] Add ApplySockopt --- transport/internet/system_dialer.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/transport/internet/system_dialer.go b/transport/internet/system_dialer.go index 9feab5c4..91044236 100644 --- a/transport/internet/system_dialer.go +++ b/transport/internet/system_dialer.go @@ -104,6 +104,17 @@ func (d *DefaultSystemDialer) Dial(ctx context.Context, src net.Address, dest ne return dialer.DialContext(ctx, dest.Network.SystemString(), dest.NetAddr()) } +func ApplySockopt(sockopt *SocketConfig, dest net.Destination, fd uintptr, ctx context.Context) { + if err := applyOutboundSocketOptions(dest.Network.String(), dest.Address.String(), fd, sockopt); err != nil { + newError("failed to apply socket options").Base(err).WriteToLog(session.ExportIDToError(ctx)) + } + if dest.Network == net.Network_UDP && hasBindAddr(sockopt) { + if err := bindAddr(fd, sockopt.BindAddress, sockopt.BindPort); err != nil { + newError("failed to bind source address to ", sockopt.BindAddress).Base(err).WriteToLog(session.ExportIDToError(ctx)) + } + } +} + type PacketConnWrapper struct { Conn net.PacketConn Dest net.Addr