Show
Ignore:
Timestamp:
02/15/08 15:04:41 (2 years ago)
Author:
dave
Message:

Fix in example python that causes incorrect results when returned peer
list wraps end of tracker peer list.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • dotorg/trunk/html/beps/bep_0008.py

    r10580 r10851  
    5454  response['iv'] = iv 
    5555  numwant = min(numwant, MAX_PEERS) 
    56   if numwant > num_peers: 
     56  if numwant >= num_peers: 
    5757    response['peers'] = obfuscated_tracker_peer_list 
    5858    return response 
    5959 
    60   i = randint(0,num_peers) 
     60  i = randint(0,num_peers-numwant)  
    6161  response['i'] = xor(i,x)  
    6262  response['n'] = n_xor_y 
    63   response['peers'] = obfuscated_tracker_peer_list[i*6:(i+numwant)*6] 
    64    
    65   if len(response['peers']) < numwant * 6: 
    66     r = numwant - len(response['peers']) / 6 
    67     response['peers'] = response['peers'] + obfuscated_tracker_peer_list[:r]  
     63  # peers at end of tracker peer list have lower probability of being picked, 
     64  # but this requires only one copy. 
     65  response['peers'] = obfuscated_tracker_peer_list[i*6:(i+numwant)*6]   
    6866  return response  
    6967