Changeset 10851 for dotorg/trunk

Show
Ignore:
Timestamp:
02/15/2008 03:04:41 PM (9 months ago)
Author:
dave
Message:

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

Location:
dotorg/trunk/html/beps
Files:
2 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 
  • dotorg/trunk/html/beps/bep_0008.rst

    r10836 r10851  
    432432    response['iv'] = iv 
    433433    numwant = min(numwant, MAX_PEERS) 
    434     if numwant > num_peers: 
     434    if numwant >= num_peers: 
    435435      response['peers'] = obfuscated_tracker_peer_list 
    436436      return response 
    437     i = randint(0,num_peers) 
    438     response['i'] = xor(i,x)  
     437   
     438    i = randint(0,num_peers-numwant) 
     439    response['i'] = xor(i,x) 
    439440    response['n'] = n_xor_y 
     441    # peers at end of tracker peer list have lower probability of being picked, 
     442    # but this requires only one copy. 
    440443    response['peers'] = obfuscated_tracker_peer_list[i*6:(i+numwant)*6] 
    441     if len(response['peers']) < numwant * 6: 
    442       r = numwant - len(response['peers']) / 6 
    443       response['peers'] = response['peers'] + obfuscated_tracker_peer_list[:r]  
    444     return response  
     444    return response 
    445445   
    446446  init()