@@ -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 .isPaymentMarkedSent ()) {
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. Sender ={}, trade={} {}, state ={}, success={}, error ={}, messageUid={}" , sender , trade .getClass ().getSimpleName (), trade .getId (), trade . getState (), ackMessage .isSuccess (), ackMessage .getErrorMessage (), ackMessage . getSourceUid ());
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
+ // validate state
844
+ if (!trade .isPaymentMarkedReceived ()) {
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 ()) {
@@ -891,7 +901,7 @@ else if (peer == trade.getArbitrator()) {
891
901
}
892
902
}
893
903
} else {
894
- 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 ());
904
+ log .warn ("Received AckMessage from unexpected peer. Sender ={}, trade={} {}, state ={}, success={}, error ={}, messageUid={}" , sender , trade .getClass ().getSimpleName (), trade .getId (), trade . getState (), ackMessage .isSuccess (), ackMessage .getErrorMessage (), ackMessage . getSourceUid ());
895
905
return ;
896
906
}
897
907
0 commit comments