@@ -46,41 +46,37 @@ func (n *Networks) Next() bool {
4646 node := n .nodes [len (n .nodes )- 1 ]
4747 n .nodes = n .nodes [:len (n .nodes )- 1 ]
4848
49- for {
50- if node .pointer < n .reader .Metadata .NodeCount {
51- ipRight := make (net.IP , len (node .ip ))
52- copy (ipRight , node .ip )
53- if len (ipRight ) <= int (node .bit >> 3 ) {
54- n .err = newInvalidDatabaseError (
55- "invalid search tree at %v/%v" , ipRight , node .bit )
56- return false
57- }
58- ipRight [node .bit >> 3 ] |= 1 << (7 - (node .bit % 8 ))
59-
60- rightPointer , err := n .reader .readNode (node .pointer , 1 )
61- if err != nil {
62- n .err = err
63- return false
64- }
49+ for node .pointer != n .reader .Metadata .NodeCount {
50+ if node .pointer > n .reader .Metadata .NodeCount {
51+ n .lastNode = node
52+ return true
53+ }
54+ ipRight := make (net.IP , len (node .ip ))
55+ copy (ipRight , node .ip )
56+ if len (ipRight ) <= int (node .bit >> 3 ) {
57+ n .err = newInvalidDatabaseError (
58+ "invalid search tree at %v/%v" , ipRight , node .bit )
59+ return false
60+ }
61+ ipRight [node .bit >> 3 ] |= 1 << (7 - (node .bit % 8 ))
6562
66- node .bit ++
67- n .nodes = append (n .nodes , netNode {
68- pointer : rightPointer ,
69- ip : ipRight ,
70- bit : node .bit ,
71- })
63+ rightPointer , err := n .reader .readNode (node .pointer , 1 )
64+ if err != nil {
65+ n .err = err
66+ return false
67+ }
7268
73- node .pointer , err = n .reader .readNode (node .pointer , 0 )
74- if err != nil {
75- n .err = err
76- return false
77- }
69+ node .bit ++
70+ n .nodes = append (n .nodes , netNode {
71+ pointer : rightPointer ,
72+ ip : ipRight ,
73+ bit : node .bit ,
74+ })
7875
79- } else if node .pointer > n .reader .Metadata .NodeCount {
80- n .lastNode = node
81- return true
82- } else {
83- break
76+ node .pointer , err = n .reader .readNode (node .pointer , 0 )
77+ if err != nil {
78+ n .err = err
79+ return false
8480 }
8581 }
8682 }
0 commit comments