@@ -142,6 +142,33 @@ func TestListenerManagerPacketListenerCreatesListenerOnDemand(t *testing.T) {
142
142
<- done
143
143
}
144
144
145
+ func TestMultiPacketListener_SequentialReads (t * testing.T ) {
146
+ m := NewListenerManager ()
147
+ conn , err := m .ListenPacket ("127.0.0.1:0" )
148
+ require .NoError (t , err )
149
+ udpConn , err := net .Dial ("udp" , conn .LocalAddr ().String ())
150
+ require .NoError (t , err )
151
+
152
+ // Send and receive the first packet.
153
+ data1 := []byte ("hello" )
154
+ _ , err = udpConn .Write (data1 )
155
+ require .NoError (t , err )
156
+ received1 := make ([]byte , serverUDPBufferSize )
157
+ n1 , _ , err := conn .ReadFrom (received1 )
158
+ require .NoError (t , err )
159
+
160
+ // Send and receive a second larger packet.
161
+ data2 := []byte ("a longer message than the first one" )
162
+ _ , err = udpConn .Write (data2 )
163
+ require .NoError (t , err )
164
+ received2 := make ([]byte , serverUDPBufferSize )
165
+ n2 , _ , err := conn .ReadFrom (received2 )
166
+ require .NoError (t , err )
167
+
168
+ require .Equal (t , string (data1 ), string (received1 [:n1 ]))
169
+ require .Equal (t , string (data2 ), string (received2 [:n2 ]))
170
+ }
171
+
145
172
func BenchmarkMultiStreamListener_Acquire (b * testing.B ) {
146
173
lm := NewListenerManager ()
147
174
0 commit comments