Skip to content

Commit 14a13be

Browse files
authored
Merge branch 'main' into pnet
2 parents 07ee93a + 5ba03fa commit 14a13be

File tree

12 files changed

+683
-227
lines changed

12 files changed

+683
-227
lines changed

FUNDING.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"drips": {
3+
"filecoin": {
4+
"ownedBy": "0x856c29E91eb30b8D9154a74a543dcC8D970D5D15"
5+
}
6+
}
7+
}

docs/conf.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,12 @@
291291
]
292292

293293
# Prevent autodoc from trying to import module from tests.factories
294-
autodoc_mock_imports = ["tests.factories"]
294+
autodoc_mock_imports = [
295+
"tests.factories",
296+
# Mocked ONLY for Sphinx/autodoc: this module does not exist in the codebase
297+
# but some doc tools may try to import it. No real code references this import.
298+
"libp2p.relay.circuit_v2.lib"
299+
]
295300

296301
# Documents to append as an appendix to all manuals.
297302
# texinfo_appendices = []

libp2p/relay/circuit_v2/discovery.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from libp2p.peer.id import (
2828
ID,
2929
)
30+
from libp2p.peer.peerstore import env_to_send_in_RPC
3031
from libp2p.tools.async_service import (
3132
Service,
3233
)
@@ -45,6 +46,9 @@
4546
from .protocol_buffer import (
4647
StatusCode,
4748
)
49+
from .utils import (
50+
maybe_consume_signed_record,
51+
)
4852

4953
logger = logging.getLogger("libp2p.relay.circuit_v2.discovery")
5054

@@ -391,10 +395,13 @@ async def make_reservation(self, peer_id: ID) -> bool:
391395
return False
392396

393397
try:
398+
# Prepare signed envelope
399+
envelope_bytes, _ = env_to_send_in_RPC(self.host)
394400
# Create and send reservation request
395401
request = HopMessage(
396402
type=HopMessage.RESERVE,
397403
peer=self.host.get_id().to_bytes(),
404+
senderRecord=envelope_bytes,
398405
)
399406

400407
with trio.fail_after(self.stream_timeout):
@@ -410,6 +417,17 @@ async def make_reservation(self, peer_id: ID) -> bool:
410417
response = HopMessage()
411418
response.ParseFromString(response_bytes)
412419

420+
# Consume the source signed_peer_record if sent
421+
if response.HasField("senderRecord"):
422+
if not maybe_consume_signed_record(
423+
response, self.host, peer_id
424+
):
425+
logger.error(
426+
"Received invalid senderRecord, dropping the stream"
427+
)
428+
await stream.close()
429+
return False
430+
413431
# Check if reservation was successful
414432
if response.type == HopMessage.RESERVE and response.HasField(
415433
"status"

libp2p/relay/circuit_v2/pb/circuit.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ message HopMessage {
1515
Reservation reservation = 3;
1616
Limit limit = 4;
1717
Status status = 5;
18+
optional bytes senderRecord = 6; // Envelope(PeerRecord)
1819
}
1920

2021
message StopMessage {
@@ -26,6 +27,7 @@ message StopMessage {
2627
Type type = 1;
2728
bytes peer = 2;
2829
Status status = 3;
30+
optional bytes senderRecord = 4; // Envelope(PeerRecord) encoded
2931
}
3032

3133
message Reservation {

libp2p/relay/circuit_v2/pb/circuit_pb2.py

Lines changed: 22 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)