@@ -281,19 +281,31 @@ func TestUDPv4_findnode(t *testing.T) {
281281	// check that closest neighbors are returned. 
282282	expected  :=  test .table .findnodeByID (testTarget .ID (), bucketSize , true )
283283	test .packetIn (nil , & v4wire.Findnode {Target : testTarget , Expiration : futureExp })
284- 	waitNeighbors  :=  func (want  []* enode.Node ) {
285- 		test .waitPacketOut (func (p  * v4wire.Neighbors , to  netip.AddrPort , hash  []byte ) {
286- 			if  len (p .Nodes ) !=  len (want ) {
287- 				t .Errorf ("wrong number of results: got %d, want %d" , len (p .Nodes ), len (want ))
288- 				return 
289- 			}
290- 			for  i , n  :=  range  p .Nodes  {
291- 				if  n .ID .ID () !=  want [i ].ID () {
292- 					t .Errorf ("result mismatch at %d:\n   got: %v\n   want: %v" , i , n , expected .entries [i ])
284+ 	deadline  :=  time .Now ().Add (1  *  time .Minute )
285+ 	var  waitNeighbors  func ([]* enode.Node )
286+ 	waitNeighbors  =  func (want  []* enode.Node ) {
287+ 		if  time .Now ().After (deadline ) {
288+ 			t .Fatal ("timeout waiting for neighbors response" )
289+ 		}
290+ 		test .waitPacketOut (func (p  v4wire.Packet , to  netip.AddrPort , hash  []byte ) {
291+ 			switch  p  :=  p .(type ) {
292+ 			case  * v4wire.Ping :
293+ 				waitNeighbors (want )
294+ 			case  * v4wire.Neighbors :
295+ 				if  len (p .Nodes ) !=  len (want ) {
296+ 					t .Errorf ("wrong number of results: got %d, want %d" , len (p .Nodes ), len (want ))
297+ 					return 
293298				}
294- 				if  ! live [n .ID .ID ()] {
295- 					t .Errorf ("result includes dead node %v" , n .ID .ID ())
299+ 				for  i , n  :=  range  p .Nodes  {
300+ 					if  n .ID .ID () !=  want [i ].ID () {
301+ 						t .Errorf ("result mismatch at %d:\n   got: %v\n   want: %v" , i , n , expected .entries [i ])
302+ 					}
303+ 					if  ! live [n .ID .ID ()] {
304+ 						t .Errorf ("result includes dead node %v" , n .ID .ID ())
305+ 					}
296306				}
307+ 			default :
308+ 				t .Fatalf ("unexpected packet type: %T" , p )
297309			}
298310		})
299311	}
0 commit comments