f99aq8ove's blog

キー交換のどーのこーの ver.2

tag:
16 November 2004

このエントリは 2004-11-16 に書かれました。 内容が古くなっていたり、もはや正しくないこともありますので、十分検証を行ってください。

ちょっと修正

・自分がキャッシュを保持しているキーは各ノード addr=127.0.0.1, port=自port として保持しておく。
・キー交換時に自分が firewalled かどうかも相手に教える。

・B(nodeB)からキー(key)が入ってきたとき、
 if (key.addr == 127.0.0.1) {
  key.addr = nodeB.addr;
  // port そのまま
  key.firewalled = nodeB.firewalled;
 } else {
  // addr, port そのまま
  key.firewalled = false;
 }
 keys.insert(key);

・B(nodeB)にキー(key)を投げるとき、
 if (key.addr != nodeB.addr) {
  Key tmp = key;
  if (tmp.firewalled || rand() % 100 == 0) {
   tmp.addr = 127.0.0.1;
   tmp.port = myPort;
  }
  sendkey(tmp);
 } else {
  // 投げない
 }

Related Posts