paych: Fix createPaych
This commit is contained in:
parent
55014becc8
commit
b88d23fd8b
@ -95,6 +95,7 @@ func (a *API) ClientStartDeal(ctx context.Context, data cid.Cid, miner address.A
|
||||
}
|
||||
|
||||
head := a.Chain.GetHeaviestTipSet()
|
||||
|
||||
payment, err := a.PaychNewPayment(ctx, self, miner, total, extra, head.Height()+blocksDuration, head.Height()+blocksDuration)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -43,8 +43,8 @@ func (a *PaychAPI) PaychAllocateLane(ctx context.Context, ch address.Address) (u
|
||||
}
|
||||
|
||||
func (a *PaychAPI) PaychNewPayment(ctx context.Context, from, to address.Address, amount types.BigInt, extra *types.ModVerifyParams, tl uint64, minClose uint64) (*api.PaymentInfo, error) {
|
||||
// TODO: Fix free fund tracking in PaychGet, pass amount
|
||||
ch, err := a.PaychGet(ctx, from, to, types.NewInt(0))
|
||||
// TODO: Fix free fund tracking in PaychGet
|
||||
ch, err := a.PaychGet(ctx, from, to, amount)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -81,25 +81,34 @@ func (pm *Manager) TrackInboundChannel(ctx context.Context, ch address.Address)
|
||||
})
|
||||
}
|
||||
|
||||
func (pm *Manager) TrackOutboundChannel(ctx context.Context, ch address.Address) error {
|
||||
func (pm *Manager) loadOutboundChannelInfo(ctx context.Context, ch address.Address) (*ChannelInfo, error) {
|
||||
_, st, err := pm.loadPaychState(ctx, ch)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
maxLane, err := maxLaneFromState(st)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return pm.store.TrackChannel(&ChannelInfo{
|
||||
return &ChannelInfo{
|
||||
Channel: ch,
|
||||
Control: st.From,
|
||||
Target: st.To,
|
||||
|
||||
Direction: DirOutbound,
|
||||
NextLane: maxLane + 1,
|
||||
})
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (pm *Manager) TrackOutboundChannel(ctx context.Context, ch address.Address) error {
|
||||
ci, err := pm.loadOutboundChannelInfo(ctx, ch)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return pm.store.TrackChannel(ci)
|
||||
}
|
||||
|
||||
func (pm *Manager) ListChannels() ([]address.Address, error) {
|
||||
|
@ -65,7 +65,12 @@ func (pm *Manager) createPaych(ctx context.Context, from, to address.Address, am
|
||||
return address.Undef, cid.Undef, err
|
||||
}
|
||||
|
||||
if err := pm.TrackOutboundChannel(ctx, paychaddr); err != nil {
|
||||
ci, err := pm.loadOutboundChannelInfo(ctx, paychaddr)
|
||||
if err != nil {
|
||||
return address.Undef, cid.Undef, err
|
||||
}
|
||||
|
||||
if err := pm.store.trackChannel(ci); err != nil {
|
||||
return address.Undef, cid.Undef, err
|
||||
}
|
||||
|
||||
|
@ -96,6 +96,10 @@ func (ps *Store) TrackChannel(ch *ChannelInfo) error {
|
||||
ps.lk.Lock()
|
||||
defer ps.lk.Unlock()
|
||||
|
||||
return ps.trackChannel(ch)
|
||||
}
|
||||
|
||||
func (ps *Store) trackChannel(ch *ChannelInfo) error {
|
||||
_, err := ps.getChannelInfo(ch.Channel)
|
||||
switch err {
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user