Skip to content

Commit

Permalink
Fix relay manager npe
Browse files Browse the repository at this point in the history
  • Loading branch information
ianopolous committed Dec 28, 2023
1 parent dd65896 commit 68241ca
Showing 1 changed file with 13 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -95,19 +95,21 @@ public static class Reservation {
public final int durationSeconds;
public final long maxBytes;
public final byte[] voucher;
public final Multiaddr[] addrs;

public Reservation(LocalDateTime expiry, int durationSeconds, long maxBytes, byte[] voucher) {
public Reservation(LocalDateTime expiry, int durationSeconds, long maxBytes, byte[] voucher, Multiaddr[] addrs) {
this.expiry = expiry;
this.durationSeconds = durationSeconds;
this.maxBytes = maxBytes;
this.voucher = voucher;
this.addrs = addrs;
}
}

public interface RelayManager {
boolean hasReservation(PeerId source);

Optional<Reservation> createReservation(PeerId requestor);
Optional<Reservation> createReservation(PeerId requestor, Multiaddr addr);

Optional<Reservation> allowConnection(PeerId target, PeerId initiator);

Expand All @@ -121,12 +123,12 @@ public synchronized boolean hasReservation(PeerId source) {
}

@Override
public synchronized Optional<Reservation> createReservation(PeerId requestor) {
public synchronized Optional<Reservation> createReservation(PeerId requestor, Multiaddr addr) {
if (reservations.size() >= concurrent) return Optional.empty();
LocalDateTime now = LocalDateTime.now();
LocalDateTime expiry = now.plusHours(1);
byte[] voucher = createVoucher(priv, relayPeerId, requestor, now);
Reservation resv = new Reservation(expiry, 120, 4096, voucher);
Reservation resv = new Reservation(expiry, 120, 4096, voucher, new Multiaddr[]{addr});
reservations.put(requestor, resv);
return Optional.of(resv);
}
Expand All @@ -149,10 +151,11 @@ default CompletableFuture<Reservation> reserve() {
if (msg.getStatus() == Circuit.Status.OK) {
long expiry = msg.getReservation().getExpire();
return new Reservation(
LocalDateTime.ofEpochSecond(expiry, 0, ZoneOffset.UTC),
msg.getLimit().getDuration(),
msg.getLimit().getData(),
msg.getReservation().getVoucher().toByteArray());
LocalDateTime.ofEpochSecond(expiry, 0, ZoneOffset.UTC),
msg.getLimit().getDuration(),
msg.getLimit().getData(),
msg.getReservation().getVoucher().toByteArray(),
null);
}
throw new IllegalStateException(msg.getStatus().name());
});
Expand Down Expand Up @@ -224,7 +227,7 @@ public void onMessage(@NotNull Stream stream, Circuit.HopMessage msg) {
case RESERVE:
{
PeerId requestor = stream.remotePeerId();
Optional<Reservation> reservation = manager.createReservation(requestor);
Optional<Reservation> reservation = manager.createReservation(requestor, stream.getConnection().remoteAddress());
if (reservation.isEmpty()
|| new Multiaddr(stream.getConnection().remoteAddress().toString())
.has(Protocol.P2PCIRCUIT)) {
Expand Down Expand Up @@ -266,7 +269,7 @@ public void onMessage(@NotNull Stream stream, Circuit.HopMessage msg) {
.dial(
us,
target,
addressBook.getAddrs(target).join().toArray(new Multiaddr[0]))
resv.addrs)
.getController()
.orTimeout(15, TimeUnit.SECONDS)
.join();
Expand Down

0 comments on commit 68241ca

Please sign in to comment.