Skip to content

Commit 1ccdc37

Browse files
authored
Merge pull request #418 from nervosnetwork/change-to-trusted-release
change to trusted release and add peerid filter before dial
2 parents 1f747cf + b2dd22b commit 1ccdc37

File tree

4 files changed

+67
-20
lines changed

4 files changed

+67
-20
lines changed

.github/workflows/release.yaml

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,33 @@ on:
44
release:
55
types: [created]
66

7-
permissions:
8-
contents: write
9-
107
jobs:
118
release:
129
runs-on: ubuntu-latest
10+
permissions:
11+
id-token: write # Required for OIDC token exchange
1312
steps:
1413
- uses: actions/checkout@v4
14+
- uses: rust-lang/crates-io-auth-action@v1
15+
id: auth
1516
- run: sudo apt-get update && sudo apt-get install libssl-dev pkg-config libclang-dev -y
16-
- name: Publish
17-
run: |
18-
cargo login ${{ secrets.CARGO_REGISTRY_TOKEN }}
19-
cd multiaddr && cargo publish || true
20-
cd ../secio && cargo publish || true
21-
cd ../yamux && cargo publish || true
22-
cd ../tentacle && cargo publish || true
17+
- name: Publish multiaddr
18+
run: cargo publish || true
19+
working-directory: multiaddr
20+
env:
21+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
22+
- name: Publish secio
23+
run: cargo publish || true
24+
working-directory: secio
25+
env:
26+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
27+
- name: Publish yamux
28+
run: cargo publish || true
29+
working-directory: yamux
30+
env:
31+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
32+
- name: Publish tentacle
33+
run: cargo publish || true
34+
working-directory: tentacle
35+
env:
36+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## tentacle 0.7.2
2+
3+
### Features
4+
- Add peerid filter before dial
5+
16
## yamux 0.3.15
27

38
### Bug Fix

tentacle/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "tentacle"
3-
version = "0.7.1"
3+
version = "0.7.2"
44
license = "MIT"
55
description = "Minimal implementation for a multiplexed p2p network framework."
66
authors = ["piaoliu <driftluo@foxmail.com>", "Nervos Core Dev <dev@nervos.org>"]

tentacle/src/service.rs

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -252,16 +252,32 @@ where
252252
/// Dial the given address, doesn't actually make a request, just generate a future
253253
pub async fn dial(&mut self, address: Multiaddr, target: TargetProtocol) -> Result<&mut Self> {
254254
let inner = self.inner_service.as_mut().unwrap();
255-
let dial_future = inner.multi_transport.clone().dial(address.clone())?;
255+
if !(inner.dial_protocols.contains_key(&address)
256+
|| extract_peer_id(&address)
257+
.map(|peer_id| {
258+
inner.dial_protocols.keys().any(|addr| {
259+
if let Some(addr_peer_id) = extract_peer_id(&addr) {
260+
addr_peer_id == peer_id
261+
} else {
262+
false
263+
}
264+
})
265+
})
266+
.unwrap_or_default())
267+
{
268+
let dial_future = inner.multi_transport.clone().dial(address.clone())?;
256269

257-
match dial_future.await {
258-
Ok((addr, incoming)) => {
259-
inner.handshake(incoming, SessionType::Outbound, addr, None);
260-
inner.dial_protocols.insert(address, target);
261-
inner.state.increase();
262-
Ok(self)
270+
match dial_future.await {
271+
Ok((addr, incoming)) => {
272+
inner.handshake(incoming, SessionType::Outbound, addr, None);
273+
inner.dial_protocols.insert(address, target);
274+
inner.state.increase();
275+
Ok(self)
276+
}
277+
Err(err) => Err(err),
263278
}
264-
Err(err) => Err(err),
279+
} else {
280+
Ok(self)
265281
}
266282
}
267283

@@ -1141,7 +1157,19 @@ where
11411157
self.handle_message(target, proto_id, priority, data).await;
11421158
}
11431159
ServiceTask::Dial { address, target } => {
1144-
if !self.dial_protocols.contains_key(&address) {
1160+
if !(self.dial_protocols.contains_key(&address)
1161+
|| extract_peer_id(&address)
1162+
.map(|peer_id| {
1163+
self.dial_protocols.keys().any(|addr| {
1164+
if let Some(addr_peer_id) = extract_peer_id(&addr) {
1165+
addr_peer_id == peer_id
1166+
} else {
1167+
false
1168+
}
1169+
})
1170+
})
1171+
.unwrap_or_default())
1172+
{
11451173
if let Err(e) = self.dial_inner(address.clone(), target) {
11461174
let _ignore = self
11471175
.handle_sender

0 commit comments

Comments
 (0)