nayutaco/ptarmigan

send commitment_signed before funding_locked received

Closed this issue · 3 comments

commit bb1815e (pull request testing)

sequence

peer: lnd

  1. (establishing channel and wait confirmation)
  2. disconnect
  3. confirm !
  4. reconnect
  5. init, channel_reestablish exchanged
  6. ptarmd send funding_locked, lnd not.
  7. ptarmd create invoice
  8. lncli payinvoice
  9. [lnd --> ptarmd]update_add_htlc
  10. [lnd --> ptarmd]commitment_signed
  11. [ptarmd --> lnd]revoke_and_ack
  12. [ptarmd --> lnd]commitment_signed

result

lnd send error

rejected commitment

funding_lockedchannel_reestablishが同じフラグ(ln_channel_t::init_flag)で管理されているのが問題。
別々に扱う必要がある。

おそらくln_channel_t::statusLN_STATUS_NORMAL_OPEでなければln_idle_procをスキップすればいいだろう。

ただフラグが複数の意味を持つのは依然として問題がある。
#1451