~ubuntu-branches/ubuntu/quantal/aria2/quantal

« back to all changes in this revision

Viewing changes to src/DHTTokenTracker.cc

  • Committer: Bazaar Package Importer
  • Author(s): Kartik Mistry
  • Date: 2010-11-24 12:26:31 UTC
  • mfrom: (1.6.1 upstream) (2.3.8 experimental)
  • Revision ID: james.westby@ubuntu.com-20101124122631-upujekj1ek94h3x2
Tags: 1.10.6-1
* New upstream release:
  + Fixed FTBFS on alpha arch (Closes: #590257)
  + Added IPv6 support (Closes: #448390)
* debian/patches/ftbfs_kfreebsd.diff:
  + Dropped, merged upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
 
60
60
DHTTokenTracker::~DHTTokenTracker() {}
61
61
 
62
 
std::string DHTTokenTracker::generateToken(const unsigned char* infoHash,
63
 
                                           const std::string& ipaddr, uint16_t port,
64
 
                                           const unsigned char* secret) const
 
62
std::string DHTTokenTracker::generateToken
 
63
(const unsigned char* infoHash,
 
64
 const std::string& ipaddr, uint16_t port,
 
65
 const unsigned char* secret) const
65
66
{
66
 
  unsigned char src[DHT_ID_LENGTH+6+SECRET_SIZE];
67
 
  if(!bittorrent::createcompact(src+DHT_ID_LENGTH, ipaddr, port)) {
 
67
  unsigned char src[DHT_ID_LENGTH+COMPACT_LEN_IPV6+SECRET_SIZE];
 
68
  memset(src, 0, sizeof(src));
 
69
  int compactlen = bittorrent::packcompact(src+DHT_ID_LENGTH, ipaddr, port);
 
70
  if(compactlen == 0) {
68
71
    throw DL_ABORT_EX
69
72
      (StringFormat("Token generation failed: ipaddr=%s, port=%u",
70
73
                    ipaddr.c_str(), port).str());
71
74
  }
72
75
  memcpy(src, infoHash, DHT_ID_LENGTH);
73
 
  memcpy(src+DHT_ID_LENGTH+6, secret, SECRET_SIZE);
 
76
  memcpy(src+DHT_ID_LENGTH+COMPACT_LEN_IPV6, secret, SECRET_SIZE);
74
77
  unsigned char md[20];
75
 
  MessageDigestHelper::digest(md, sizeof(md), MessageDigestContext::SHA1, src, sizeof(src));
 
78
  MessageDigestHelper::digest(md, sizeof(md), MessageDigestContext::SHA1,
 
79
                              src, sizeof(src));
76
80
  return std::string(&md[0], &md[sizeof(md)]);
77
81
}
78
82