Skip to content

Commit

Permalink
dial all addresses
Browse files Browse the repository at this point in the history
  • Loading branch information
kevodwyer committed Jul 11, 2023
1 parent 370dcb9 commit 410d60d
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions src/main/java/org/peergos/HttpProxyService.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,22 @@ public HttpProxyService(Host node, HttpProtocol.Binding p2pHttpBinding, Kademlia
public ProxyResponse proxyRequest(Multihash targetNodeId, ProxyRequest request) throws IOException, ProxyException {

AddressBook addressBook = node.getAddressBook();
Optional<Multiaddr> targetAddressesOpt = addressBook.get(PeerId.fromBase58(targetNodeId.bareMultihash().toBase58())).join().stream().findFirst();
PeerId peerId = PeerId.fromBase58(targetNodeId.bareMultihash().toBase58());
Optional<Multiaddr> targetAddressesOpt = addressBook.get(peerId).join().stream().findFirst();
Multiaddr[] allAddresses = null;
if (targetAddressesOpt.isEmpty()) {
List<PeerAddresses> closestPeers = dht.findClosestPeers(targetNodeId, 20, node);
Optional<PeerAddresses> matching = closestPeers.stream().filter(p -> p.peerId.equals(targetNodeId)).findFirst();
if (matching.isEmpty()) {
throw new ProxyException("Target not found: " + targetNodeId);
}
PeerAddresses peer = matching.get();
Multiaddr[] addrs = peer.getPublicAddresses().stream().map(a -> Multiaddr.fromString(a.toString())).toArray(Multiaddr[]::new);
targetAddressesOpt = Optional.of(addrs[0]);
allAddresses = peer.getPublicAddresses().stream().map(a -> Multiaddr.fromString(a.toString())).toArray(Multiaddr[]::new);
}
Multiaddr finalAddress = targetAddressesOpt.get().toString().contains("/ipfs/") ? targetAddressesOpt.get()
: new Multiaddr(targetAddressesOpt.get() + "/ipfs/" + targetNodeId);

HttpProtocol.HttpController proxier = p2pHttpBinding.dial(node, finalAddress).getController().join();
Multiaddr[] addressesToDial = targetAddressesOpt.isPresent() ?
Arrays.asList(targetAddressesOpt.get()).toArray(Multiaddr[]::new)
: allAddresses;
HttpProtocol.HttpController proxier = p2pHttpBinding.dial(node, peerId, addressesToDial).getController().join();
String urlParams = constructQueryParamString(request.queryParams);
FullHttpRequest httpRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1,
HttpMethod.valueOf(request.method.name()),
Expand Down

0 comments on commit 410d60d

Please sign in to comment.