Skip to content

Commit 65dd899

Browse files
committed
p2p: don't automatically prefix proto with /p2p
License: MIT Signed-off-by: Łukasz Magiera <[email protected]>
1 parent 90beabb commit 65dd899

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

core/commands/p2p.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,15 @@ Examples:
9696
return
9797
}
9898

99-
//TODO: Do we really want/need implicit prefix?
100-
proto := "/p2p/" + req.Arguments()[0]
99+
proto := req.Arguments()[0]
101100
listen := req.Arguments()[1]
102101
target := req.Arguments()[2]
103102

103+
if !strings.HasPrefix(proto, "/p2p/") {
104+
res.SetError(errors.New("protocol name must be within '/p2p/' namespace"), cmdkit.ErrNormal)
105+
return
106+
}
107+
104108
if strings.HasPrefix(listen, "/ipfs") {
105109
if listen != "/ipfs" {
106110
res.SetError(errors.New("only '/ipfs' is allowed as libp2p listen address"), cmdkit.ErrNormal)
@@ -246,9 +250,6 @@ var p2pCloseCmd = &cmds.Command{
246250

247251
match := func(listener p2p.Listener) bool {
248252
out := true
249-
if p || !strings.HasPrefix(proto, "/p2p/") {
250-
proto = "/p2p/" + proto
251-
}
252253

253254
if p {
254255
out = out && (proto == listener.Protocol())

test/sharness/t0180-p2p.sh

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ test_expect_success "enable filestore config setting" '
3838
'
3939

4040
test_expect_success 'start p2p listener' '
41-
ipfsi 0 p2p forward p2p-test /ipfs /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log
41+
ipfsi 0 p2p forward /p2p/p2p-test /ipfs /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log
4242
'
4343

4444
# Server to client communications
@@ -69,7 +69,7 @@ test_server_to_client() {
6969
spawn_sending_server
7070

7171
test_expect_success 'S->C Setup client side' '
72-
ipfsi 1 p2p forward p2p-test /ip4/127.0.0.1/tcp/10102 /ipfs/${PEERID_0} 2>&1 > dialer-stdouterr.log
72+
ipfsi 1 p2p forward /p2p/p2p-test /ip4/127.0.0.1/tcp/10102 /ipfs/${PEERID_0} 2>&1 > dialer-stdouterr.log
7373
'
7474

7575
test_server_to_client
@@ -87,7 +87,7 @@ spawn_sending_server
8787
test_server_to_client
8888

8989
test_expect_success 'S->C Close local listener' '
90-
ipfsi 1 p2p close -p p2p-test
90+
ipfsi 1 p2p close -p /p2p/p2p-test
9191
'
9292

9393
check_test_ports
@@ -102,7 +102,7 @@ test_expect_success 'C->S Spawn receiving server' '
102102
'
103103

104104
test_expect_success 'C->S Setup client side' '
105-
ipfsi 1 p2p forward p2p-test /ip4/127.0.0.1/tcp/10102 /ipfs/${PEERID_0} 2>&1 > dialer-stdouterr.log
105+
ipfsi 1 p2p forward /p2p/p2p-test /ip4/127.0.0.1/tcp/10102 /ipfs/${PEERID_0} 2>&1 > dialer-stdouterr.log
106106
'
107107

108108
test_expect_success 'C->S Connect and receive data' '
@@ -119,7 +119,7 @@ test_expect_success 'C->S Output looks good' '
119119
'
120120

121121
test_expect_success 'C->S Close local listener' '
122-
ipfsi 1 p2p close -p p2p-test
122+
ipfsi 1 p2p close -p /p2p/p2p-test
123123
'
124124

125125
check_test_ports
@@ -136,7 +136,7 @@ test_expect_success "'ipfs p2p ls' output looks good" '
136136
'
137137

138138
test_expect_success "Cannot re-register app handler" '
139-
test_must_fail ipfsi 0 p2p forward p2p-test /ipfs /ip4/127.0.0.1/tcp/10101
139+
test_must_fail ipfsi 0 p2p forward /p2p/p2p-test /ipfs /ip4/127.0.0.1/tcp/10101
140140
'
141141

142142
test_expect_success "'ipfs p2p stream ls' output is empty" '
@@ -147,7 +147,7 @@ test_expect_success "'ipfs p2p stream ls' output is empty" '
147147
test_expect_success "Setup: Idle stream" '
148148
ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 &
149149
150-
ipfsi 1 p2p forward p2p-test /ip4/127.0.0.1/tcp/10102 /ipfs/$PEERID_0 2>&1 > dialer-stdouterr.log &&
150+
ipfsi 1 p2p forward /p2p/p2p-test /ip4/127.0.0.1/tcp/10102 /ipfs/$PEERID_0 2>&1 > dialer-stdouterr.log &&
151151
ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 &
152152
153153
test_wait_for_file 30 100ms listener.pid &&
@@ -172,13 +172,13 @@ test_expect_success "'ipfs p2p stream close' closes stream" '
172172
'
173173

174174
test_expect_success "'ipfs p2p close' closes remote handler" '
175-
ipfsi 0 p2p close -p p2p-test &&
175+
ipfsi 0 p2p close -p /p2p/p2p-test &&
176176
ipfsi 0 p2p ls > actual &&
177177
test_must_be_empty actual
178178
'
179179

180180
test_expect_success "'ipfs p2p close' closes local handler" '
181-
ipfsi 1 p2p close -p p2p-test &&
181+
ipfsi 1 p2p close -p /p2p/p2p-test &&
182182
ipfsi 1 p2p ls > actual &&
183183
test_must_be_empty actual
184184
'
@@ -188,8 +188,8 @@ check_test_ports
188188
test_expect_success "Setup: Idle stream(2)" '
189189
ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 &
190190
191-
ipfsi 0 p2p forward p2p-test2 /ipfs /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log &&
192-
ipfsi 1 p2p forward p2p-test2 /ip4/127.0.0.1/tcp/10102 /ipfs/$PEERID_0 2>&1 > dialer-stdouterr.log &&
191+
ipfsi 0 p2p forward /p2p/p2p-test2 /ipfs /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log &&
192+
ipfsi 1 p2p forward /p2p/p2p-test2 /ip4/127.0.0.1/tcp/10102 /ipfs/$PEERID_0 2>&1 > dialer-stdouterr.log &&
193193
ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 &
194194
195195
test_wait_for_file 30 100ms listener.pid &&
@@ -225,12 +225,18 @@ test_expect_success "'ipfs p2p stream close -a' closes streams" '
225225
check_test_ports
226226

227227
test_expect_success "'ipfs p2p close' closes app numeric handlers" '
228-
ipfsi 0 p2p forward 1234 /ipfs /ip4/127.0.0.1/tcp/10101 &&
229-
ipfsi 0 p2p close -p 1234 &&
228+
ipfsi 0 p2p forward /p2p/1234 /ipfs /ip4/127.0.0.1/tcp/10101 &&
229+
ipfsi 0 p2p close -p /p2p/1234 &&
230230
ipfsi 0 p2p ls > actual &&
231231
test_must_be_empty actual
232232
'
233233

234+
test_expect_success "non /p2p/ scoped protocols are not allowed" '
235+
test_must_fail ipfsi 0 p2p forward /its/not/a/p2p/path /ipfs /ip4/127.0.0.1/tcp/10101 2> actual &&
236+
echo "Error: protocol name must be within '"'"'/p2p/'"'"' namespace" > expected
237+
test_cmp expected actual
238+
'
239+
234240
check_test_ports
235241

236242
test_expect_success 'stop iptb' '

0 commit comments

Comments
 (0)