Fix SockOpt does not work in UDP

This commit is contained in:
风扇滑翔翼 2024-02-06 18:56:55 +08:00 committed by yuhan6665
parent 3a99520370
commit 303beff5dd
1 changed files with 12 additions and 0 deletions

View File

@ -66,6 +66,18 @@ func (d *DefaultSystemDialer) Dial(ctx context.Context, src net.Address, dest ne
if err != nil {
return nil, err
}
if sockopt != nil || len(d.controllers) > 0 {
file, err := packetConn.(*net.UDPConn).File()
if err != nil {
return nil, err
}
fd := file.Fd()
if sockopt != nil {
if err := applyOutboundSocketOptions("udp", dest.NetAddr(), fd, sockopt); err != nil {
newError("failed to apply socket options").Base(err).WriteToLog(session.ExportIDToError(ctx))
}
}
}
return &PacketConnWrapper{
Conn: packetConn,
Dest: destAddr,