@@ -817,6 +817,10 @@ private void onAckMessageAux(AckMessage ackMessage, NodeAddress sender) {
817
817
818
818
// handle ack message for PaymentSentMessage, which automatically re-sends if not ACKed in a certain time
819
819
if (ackMessage .getSourceMsgClassName ().equals (PaymentSentMessage .class .getSimpleName ())) {
820
+ if (trade .getState ().ordinal () < Trade .State .BUYER_CONFIRMED_PAYMENT_SENT .ordinal ()) {
821
+ log .warn ("Received AckMessage for PaymentSentMessage but trade is in unexpected state, ignoring. Sender={}, trade={} {}, state={}, success={}, error={}, messageUid={}" , sender , trade .getClass ().getSimpleName (), trade .getId (), trade .getState (), ackMessage .isSuccess (), ackMessage .getErrorMessage (), ackMessage .getSourceUid ());
822
+ return ;
823
+ }
820
824
if (peer == trade .getSeller ()) {
821
825
trade .getSeller ().setPaymentSentAckMessage (ackMessage );
822
826
if (ackMessage .isSuccess ()) trade .setStateIfValidTransitionTo (Trade .State .SELLER_RECEIVED_PAYMENT_SENT_MSG );
@@ -826,7 +830,7 @@ private void onAckMessageAux(AckMessage ackMessage, NodeAddress sender) {
826
830
trade .getArbitrator ().setPaymentSentAckMessage (ackMessage );
827
831
processModel .getTradeManager ().requestPersistence ();
828
832
} else {
829
- log .warn ("Received AckMessage from unexpected peer for {}, sender={}, trade={} {}, messageUid={}, success={}, errorMsg ={}" , ackMessage .getSourceMsgClassName (), sender , trade .getClass ().getSimpleName (), trade .getId (), ackMessage .getSourceUid (), ackMessage .isSuccess (), ackMessage .getErrorMessage ());
833
+ log .warn ("Received AckMessage from unexpected peer for {}, sender={}, trade={} {}, messageUid={}, success={}, error ={}" , ackMessage .getSourceMsgClassName (), sender , trade .getClass ().getSimpleName (), trade .getId (), ackMessage .getSourceUid (), ackMessage .isSuccess (), ackMessage .getErrorMessage ());
830
834
return ;
831
835
}
832
836
}
@@ -835,6 +839,12 @@ private void onAckMessageAux(AckMessage ackMessage, NodeAddress sender) {
835
839
// TODO: trade state can be reset twice if both peers nack before published payout is detected
836
840
// TODO: do not reset state if payment received message is acknowledged because payout is likely broadcast?
837
841
if (ackMessage .getSourceMsgClassName ().equals (PaymentReceivedMessage .class .getSimpleName ())) {
842
+
843
+ // check if invalid state
844
+ if (trade .getState ().ordinal () < Trade .State .SELLER_CONFIRMED_PAYMENT_RECEIPT .ordinal ()) {
845
+ log .warn ("Received AckMessage for PaymentReceivedMessage but trade is in unexpected state, ignoring. Sender={}, trade={} {}, state={}, success={}, error={}, messageUid={}" , sender , trade .getClass ().getSimpleName (), trade .getId (), trade .getState (), ackMessage .isSuccess (), ackMessage .getErrorMessage (), ackMessage .getSourceUid ());
846
+ return ;
847
+ }
838
848
839
849
// ack message from buyer
840
850
if (peer == trade .getBuyer ()) {
0 commit comments