Description
The fix1578 amendment changed OfferCreate transactions so that if they used tfFillorKill
and the transaction was killed, it used the code tecKILLED
rather than tesSUCCESS
. We should do the same for the tfImmediateOrCancel
flag, which still results in tesSUCCESS
when the Offer can't be immediately and fully filled.
Summary
It's confusing and unintuitive to see an "immediate or cancel" transaction treated as "successful" when it did nothing because the "or cancel" part applied. A different result code makes it apparent at a glance what happened.
This is a transaction processing change so it should go on an amendment.
Aside
An unintuitive edge case is the interaction between tecKILLED
and specifying a previous Offer to cancel in the OfferSequence
field. My understanding is that post-fix1578, a "Fill or Kill" offer that gets tecKILLED does not cancel the previous Offer. We should make "Immediate or Cancel" work the same way. This may be a functional change beyond the result code but the consistency is worth it.