Support ipv6 for Pex request parsing

This commit is contained in:
shortcutme 2019-01-20 16:26:04 +01:00
parent 1350096545
commit 6ac1960c47
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -1,6 +1,7 @@
import logging import logging
import time import time
import sys import sys
import itertools
import gevent import gevent
@ -260,15 +261,17 @@ class Peer(object):
# give back 5 connectible peers # give back 5 connectible peers
packed_peers = helper.packPeers(self.site.getConnectablePeers(5, allow_private=False)) packed_peers = helper.packPeers(self.site.getConnectablePeers(5, allow_private=False))
request = {"site": site.address, "peers": packed_peers["ip4"], "need": need_num} request = {"site": site.address, "peers": packed_peers["ipv4"], "need": need_num}
if packed_peers["onion"]: if packed_peers["onion"]:
request["peers_onion"] = packed_peers["onion"] request["peers_onion"] = packed_peers["onion"]
if packed_peers["ipv6"]:
request["peers_ipv6"] = packed_peers["ipv6"]
res = self.request("pex", request) res = self.request("pex", request)
if not res or "error" in res: if not res or "error" in res:
return False return False
added = 0 added = 0
# Ip4
for peer in res.get("peers", []): for peer in itertools.chain(res.get("peers", []), res.get("peers_ipv6", [])):
address = helper.unpackAddress(peer) address = helper.unpackAddress(peer)
if site.addPeer(*address, source="pex"): if site.addPeer(*address, source="pex"):
added += 1 added += 1