You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/06/23 14:57:50 UTC
[plc4x] 02/02: fix(plc4go): fix so_reuse
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit fd0eddda14eae0df3f75d061e37b6a1b7428a71a
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jun 23 16:57:41 2022 +0200
fix(plc4go): fix so_reuse
---
plc4go/internal/spi/transports/udp/Transport.go | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/plc4go/internal/spi/transports/udp/Transport.go b/plc4go/internal/spi/transports/udp/Transport.go
index 94ebe4f6b..1a6be5dea 100644
--- a/plc4go/internal/spi/transports/udp/Transport.go
+++ b/plc4go/internal/spi/transports/udp/Transport.go
@@ -143,20 +143,19 @@ func (m *TransportInstance) Connect() error {
// "connect" to the remote
var err error
- if m.SoReUse {
- if m.udpConn, err = net.ListenUDP("udp", m.LocalAddress); err != nil {
+ if m.RemoteAddress != nil {
+ if m.udpConn, err = net.DialUDP("upd", m.LocalAddress, m.RemoteAddress); err != nil {
return errors.Wrap(err, "error connecting to remote address")
}
- rawConn, err := m.udpConn.SyscallConn()
- if err != nil {
- return errors.Wrap(err, "Error getting syscall connection")
- }
- if err := reuseport.Control("", "", rawConn); err != nil {
- return errors.Wrap(err, "Error setting re-use control")
+ } else if m.SoReUse {
+ if packetConn, err := reuseport.ListenPacket("udp", m.LocalAddress.String()); err != nil {
+ return errors.Wrap(err, "error connecting to local address")
+ } else {
+ m.udpConn = packetConn.(*net.UDPConn)
}
} else {
if m.udpConn, err = net.ListenUDP("udp", m.LocalAddress); err != nil {
- return errors.Wrap(err, "error connecting to remote address")
+ return errors.Wrap(err, "error connecting to local address")
}
}