Skip to content

Commit d2a8320

Browse files
committed
Do not use composition for UDPEndpoint
Signed-off-by: Steffen Vogel <[email protected]>
1 parent 1336454 commit d2a8320

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

conn_udp.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ import (
1212

1313
var errInvalidEndpoint = errors.New("invalid endpoint type")
1414

15-
type UDPEndpoint struct {
16-
*net.UDPAddr
15+
type UDPEndpoint net.UDPAddr
16+
17+
func (ep *UDPEndpoint) String() string {
18+
addr := (*net.UDPAddr)(ep)
19+
return addr.String()
1720
}
1821

19-
func (ep *UDPEndpoint) Equal(o Endpoint) bool {
22+
func (ep UDPEndpoint) Equal(o Endpoint) bool {
2023
ep2, ok := o.(*UDPEndpoint)
2124
if !ok {
2225
return false
@@ -78,7 +81,7 @@ func (s *UDPConn) Send(pl payload, spkt spk, ep Endpoint) error {
7881
e.typ = msgTypeEmptyData
7982
}
8083

81-
network := networkFromAddr(uep.UDPAddr)
84+
network := networkFromAddr((*net.UDPAddr)(uep))
8285

8386
// Check if we are on DragonFly or OpenBSD systems
8487
// which require two independent sockets for listening
@@ -91,7 +94,7 @@ func (s *UDPConn) Send(pl payload, spkt spk, ep Endpoint) error {
9194
}
9295

9396
buf := e.MarshalBinaryAndSeal(spkt)
94-
if n, err := conn.WriteToUDP(buf, uep.UDPAddr); err != nil {
97+
if n, err := conn.WriteToUDP(buf, (*net.UDPAddr)(uep)); err != nil {
9598
return err
9699
} else if n != len(buf) {
97100
return fmt.Errorf("partial write")
@@ -147,6 +150,6 @@ func receiveFromConn(conn *net.UDPConn) ReceiveFunc {
147150
return nil, nil, fmt.Errorf("parsed partial packet")
148151
}
149152

150-
return e.payload, &UDPEndpoint{from}, nil
153+
return e.payload, (*UDPEndpoint)(from), nil
151154
}
152155
}

conn_udp_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ func TestUDPConn(t *testing.T) {
1616
spk, _, err := generateStaticKeyPair()
1717
require.NoError(err)
1818

19+
ep := net.UDPAddr{
20+
IP: net.IPv6loopback,
21+
Port: 1234,
22+
}
23+
1924
p := &peer{
20-
spkt: spk,
21-
endpoint: &UDPEndpoint{
22-
&net.UDPAddr{
23-
IP: net.IPv6loopback,
24-
Port: 1234,
25-
},
26-
},
25+
spkt: spk,
26+
endpoint: (*UDPEndpoint)(&ep),
2727
}
2828

2929
c, err := NewUDPConn([]*net.UDPAddr{

peer.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ func (s *Server) newPeer(cfg PeerConfig) (*peer, error) {
5151
p := &peer{
5252
server: s,
5353

54-
initialEndpoint: &UDPEndpoint{cfg.Endpoint},
54+
initialEndpoint: (*UDPEndpoint)(cfg.Endpoint),
5555
spkt: cfg.PublicKey,
5656
psk: cfg.PresharedKey,
5757
}
5858

5959
if cfg.Endpoint != nil {
60-
p.endpoint = &UDPEndpoint{cfg.Endpoint}
60+
p.endpoint = (*UDPEndpoint)(cfg.Endpoint)
6161
}
6262

6363
p.logger = s.logger.With(slog.Any("pid", p.PID()))

0 commit comments

Comments
 (0)