Skip to content

Commit 54e3630

Browse files
authored
feat: pass ChannelID to ValidatePush & ValidatePull (#220)
1 parent f80db17 commit 54e3630

File tree

4 files changed

+19
-18
lines changed

4 files changed

+19
-18
lines changed

impl/events.go

+14-17
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func (m *manager) OnRequestReceived(chid datatransfer.ChannelID, request datatra
131131
}
132132

133133
if request.IsNew() {
134-
return m.receiveNewRequest(chid.Initiator, request)
134+
return m.receiveNewRequest(chid, request)
135135
}
136136
if request.IsCancel() {
137137
log.Infof("channel %s: received cancel request, cleaning up channel", chid)
@@ -292,12 +292,10 @@ func (m *manager) receiveRestartRequest(chid datatransfer.ChannelID, incoming da
292292
return msg, err
293293
}
294294

295-
func (m *manager) receiveNewRequest(
296-
initiator peer.ID,
297-
incoming datatransfer.Request) (datatransfer.Response, error) {
298-
log.Infof("received new channel request from %s", initiator)
295+
func (m *manager) receiveNewRequest(chid datatransfer.ChannelID, incoming datatransfer.Request) (datatransfer.Response, error) {
296+
log.Infof("channel %s: received new channel request from %s", chid, chid.Initiator)
299297

300-
result, err := m.acceptRequest(initiator, incoming)
298+
result, err := m.acceptRequest(chid, incoming)
301299
msg, msgErr := m.response(false, true, err, incoming.TransferID(), result)
302300
if msgErr != nil {
303301
return nil, msgErr
@@ -322,7 +320,7 @@ func (m *manager) restartRequest(chid datatransfer.ChannelID,
322320
return nil, err
323321
}
324322

325-
voucher, result, err := m.validateVoucher(true, initiator, incoming, incoming.IsPull(), incoming.BaseCid(), stor)
323+
voucher, result, err := m.validateVoucher(true, chid, initiator, incoming, incoming.IsPull(), incoming.BaseCid(), stor)
326324
if err != nil && err != datatransfer.ErrPause {
327325
return result, xerrors.Errorf("failed to validate voucher: %w", err)
328326
}
@@ -352,16 +350,14 @@ func (m *manager) restartRequest(chid datatransfer.ChannelID,
352350
return result, voucherErr
353351
}
354352

355-
func (m *manager) acceptRequest(
356-
initiator peer.ID,
357-
incoming datatransfer.Request) (datatransfer.VoucherResult, error) {
353+
func (m *manager) acceptRequest(chid datatransfer.ChannelID, incoming datatransfer.Request) (datatransfer.VoucherResult, error) {
358354

359355
stor, err := incoming.Selector()
360356
if err != nil {
361357
return nil, err
362358
}
363359

364-
voucher, result, err := m.validateVoucher(false, initiator, incoming, incoming.IsPull(), incoming.BaseCid(), stor)
360+
voucher, result, err := m.validateVoucher(false, chid, chid.Initiator, incoming, incoming.IsPull(), incoming.BaseCid(), stor)
365361
if err != nil && err != datatransfer.ErrPause {
366362
return result, err
367363
}
@@ -370,13 +366,13 @@ func (m *manager) acceptRequest(
370366
var dataSender, dataReceiver peer.ID
371367
if incoming.IsPull() {
372368
dataSender = m.peerID
373-
dataReceiver = initiator
369+
dataReceiver = chid.Initiator
374370
} else {
375-
dataSender = initiator
371+
dataSender = chid.Initiator
376372
dataReceiver = m.peerID
377373
}
378374

379-
chid, err := m.channels.CreateNew(m.peerID, incoming.TransferID(), incoming.BaseCid(), stor, voucher, initiator, dataSender, dataReceiver)
375+
_, err = m.channels.CreateNew(m.peerID, incoming.TransferID(), incoming.BaseCid(), stor, voucher, chid.Initiator, dataSender, dataReceiver)
380376
if err != nil {
381377
return result, err
382378
}
@@ -394,7 +390,7 @@ func (m *manager) acceptRequest(
394390
transportConfigurer := processor.(datatransfer.TransportConfigurer)
395391
transportConfigurer(chid, voucher, m.transport)
396392
}
397-
m.dataTransferNetwork.Protect(initiator, chid.String())
393+
m.dataTransferNetwork.Protect(chid.Initiator, chid.String())
398394
if voucherErr == datatransfer.ErrPause {
399395
err := m.channels.PauseResponder(chid)
400396
if err != nil {
@@ -412,6 +408,7 @@ func (m *manager) acceptRequest(
412408
// * validation fails
413409
func (m *manager) validateVoucher(
414410
isRestart bool,
411+
chid datatransfer.ChannelID,
415412
sender peer.ID,
416413
incoming datatransfer.Request,
417414
isPull bool,
@@ -422,7 +419,7 @@ func (m *manager) validateVoucher(
422419
if err != nil {
423420
return nil, nil, err
424421
}
425-
var validatorFunc func(bool, peer.ID, datatransfer.Voucher, cid.Cid, ipld.Node) (datatransfer.VoucherResult, error)
422+
var validatorFunc func(bool, datatransfer.ChannelID, peer.ID, datatransfer.Voucher, cid.Cid, ipld.Node) (datatransfer.VoucherResult, error)
426423
processor, _ := m.validatedTypes.Processor(vouch.Type())
427424
validator := processor.(datatransfer.RequestValidator)
428425
if isPull {
@@ -431,7 +428,7 @@ func (m *manager) validateVoucher(
431428
validatorFunc = validator.ValidatePush
432429
}
433430

434-
result, err := validatorFunc(isRestart, sender, vouch, baseCid, stor)
431+
result, err := validatorFunc(isRestart, chid, sender, vouch, baseCid, stor)
435432
return vouch, result, err
436433
}
437434

impl/restart.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func (m *manager) validateRestartVoucher(channel datatransfer.ChannelState, isPu
7373
}
7474

7575
// revalidate the voucher by reconstructing the request that would have led to the creation of this channel
76-
if _, _, err := m.validateVoucher(true, channel.OtherPeer(), req, isPull, channel.BaseCID(), channel.Selector()); err != nil {
76+
if _, _, err := m.validateVoucher(true, chid, channel.OtherPeer(), req, isPull, channel.BaseCID(), channel.Selector()); err != nil {
7777
return err
7878
}
7979

manager.go

+2
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ type RequestValidator interface {
1414
// ValidatePush validates a push request received from the peer that will send data
1515
ValidatePush(
1616
isRestart bool,
17+
chid ChannelID,
1718
sender peer.ID,
1819
voucher Voucher,
1920
baseCid cid.Cid,
2021
selector ipld.Node) (VoucherResult, error)
2122
// ValidatePull validates a pull request received from the peer that will receive data
2223
ValidatePull(
2324
isRestart bool,
25+
chid ChannelID,
2426
receiver peer.ID,
2527
voucher Voucher,
2628
baseCid cid.Cid,

testutil/stubbedvalidator.go

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ func NewStubbedValidator() *StubbedValidator {
2020
// ValidatePush returns a stubbed result for a push validation
2121
func (sv *StubbedValidator) ValidatePush(
2222
isRestart bool,
23+
chid datatransfer.ChannelID,
2324
sender peer.ID,
2425
voucher datatransfer.Voucher,
2526
baseCid cid.Cid,
@@ -32,6 +33,7 @@ func (sv *StubbedValidator) ValidatePush(
3233
// ValidatePull returns a stubbed result for a pull validation
3334
func (sv *StubbedValidator) ValidatePull(
3435
isRestart bool,
36+
chid datatransfer.ChannelID,
3537
receiver peer.ID,
3638
voucher datatransfer.Voucher,
3739
baseCid cid.Cid,

0 commit comments

Comments
 (0)