Skip to content

Commit

Permalink
Merge pull request #347 from kdeme/bug/fix-content-distance
Browse files Browse the repository at this point in the history
Source nodes from content logarithmic distance instead of actual distance
  • Loading branch information
carver committed Jun 3, 2021
2 parents 743f3f3 + 6c3f1a1 commit 142911d
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
4 changes: 4 additions & 0 deletions ddht/v5_1/alexandria/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ def compute_content_distance(node_id: NodeID, content_id: ContentID) -> int:
node_id_int = int.from_bytes(node_id, "big")
content_id_int = int.from_bytes(content_id, "big")
return node_id_int ^ content_id_int


def compute_content_log_distance(node_id: NodeID, content_id: ContentID) -> int:
return compute_content_distance(node_id, content_id).bit_length()
8 changes: 5 additions & 3 deletions ddht/v5_1/alexandria/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
from ddht.v5_1.alexandria.client import AlexandriaClient
from ddht.v5_1.alexandria.constants import MAX_RADIUS
from ddht.v5_1.alexandria.content import (
compute_content_distance,
compute_content_log_distance,
content_key_to_content_id,
)
from ddht.v5_1.alexandria.messages import (
Expand Down Expand Up @@ -376,12 +376,14 @@ async def _serve_find_content(self) -> None:
)
else:
content_id = content_key_to_content_id(content_key)
distance = compute_content_distance(self.local_node_id, content_id)
distance = compute_content_log_distance(
self.local_node_id, content_id
)
try:
response_enrs = self._source_nodes((distance,))
except ValidationError as err:
self.logger.debug(
"Ignoring invalid FindNodesMessage from %s@%s: %s",
"Ignoring invalid FindContentMessage from %s@%s: %s",
request.sender_node_id.hex(),
request.sender_endpoint,
err,
Expand Down

0 comments on commit 142911d

Please sign in to comment.