@@ -69,13 +69,16 @@ func TestUDPMultiplePacketConnWithMultipleGroupListeners(t *testing.T) {
69
69
}
70
70
71
71
for _ , gaddr := range udpMultipleGroupListenerTests {
72
- c1 , err := net .ListenPacket ("udp4" , "224.0.0.0:1024 " ) // wildcard address with reusable port
72
+ c1 , err := net .ListenPacket ("udp4" , "224.0.0.0:0 " ) // wildcard address with reusable port
73
73
if err != nil {
74
74
t .Fatal (err )
75
75
}
76
76
defer c1 .Close ()
77
-
78
- c2 , err := net .ListenPacket ("udp4" , "224.0.0.0:1024" ) // wildcard address with reusable port
77
+ _ , port , err := net .SplitHostPort (c1 .LocalAddr ().String ())
78
+ if err != nil {
79
+ t .Fatal (err )
80
+ }
81
+ c2 , err := net .ListenPacket ("udp4" , net .JoinHostPort ("224.0.0.0" , port )) // wildcard address with reusable port
79
82
if err != nil {
80
83
t .Fatal (err )
81
84
}
@@ -131,16 +134,29 @@ func TestUDPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) {
131
134
if err != nil {
132
135
t .Fatal (err )
133
136
}
137
+ port := "0"
134
138
for i , ifi := range ift {
135
139
ip , ok := nettest .IsMulticastCapable ("ip4" , & ifi )
136
140
if ! ok {
137
141
continue
138
142
}
139
- c , err := net .ListenPacket ("udp4" , ip .String ()+ ":" + "1024" ) // unicast address with non-reusable port
143
+ c , err := net .ListenPacket ("udp4" , net . JoinHostPort ( ip .String (), port ) ) // unicast address with non-reusable port
140
144
if err != nil {
141
- t .Fatal (err )
145
+ // The listen may fail when the serivce is
146
+ // already in use, but it's fine because the
147
+ // purpose of this is not to test the
148
+ // bookkeeping of IP control block inside the
149
+ // kernel.
150
+ t .Log (err )
151
+ continue
142
152
}
143
153
defer c .Close ()
154
+ if port == "0" {
155
+ _ , port , err = net .SplitHostPort (c .LocalAddr ().String ())
156
+ if err != nil {
157
+ t .Fatal (err )
158
+ }
159
+ }
144
160
p := ipv4 .NewPacketConn (c )
145
161
if err := p .JoinGroup (& ifi , & gaddr ); err != nil {
146
162
t .Fatal (err )
0 commit comments