Skip to content

Commit

Permalink
Merge pull request #2203 from hackaugusto/fix_2071
Browse files Browse the repository at this point in the history
Send secret reveal once
  • Loading branch information
ulope authored Aug 17, 2018
2 parents 4782db7 + 9eb9fe8 commit 6d143e8
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
3 changes: 2 additions & 1 deletion raiden/transfer/mediated_transfer/mediator.py
Original file line number Diff line number Diff line change
Expand Up @@ -624,8 +624,9 @@ def events_for_revealsecret(transfers_pair, secret, pseudo_random_generator):
for pair in reversed(transfers_pair):
payee_secret = pair.payee_state in STATE_SECRET_KNOWN
payer_secret = pair.payer_state in STATE_SECRET_KNOWN
should_send_secret = pair.payer_state == 'payer_pending'

if payee_secret and not payer_secret:
if payee_secret and not payer_secret and should_send_secret:
message_identifier = message_identifier_from_prng(pseudo_random_generator)
pair.payer_state = 'payer_secret_revealed'
payer_transfer = pair.payer_transfer
Expand Down
6 changes: 5 additions & 1 deletion raiden/transfer/mediated_transfer/target.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,9 @@ def handle_secretreveal(
):
""" Validates and handles a ReceiveSecretReveal state change. """
valid_secret = state_change.secrethash == target_state.transfer.lock.secrethash
waiting_for_secret = target_state.state == 'secret_request'

if valid_secret:
if valid_secret and waiting_for_secret:
if isinstance(state_change, ReceiveSecretReveal):
channel.register_secret(
channel_state,
Expand All @@ -167,6 +168,9 @@ def handle_secretreveal(
target_state.state = 'reveal_secret'
target_state.secret = state_change.secret
recipient = route.node_address

# Send the secret reveal message only once, delivery is guaranteed by
# the transport and not by the state machine
reveal = SendRevealSecret(
recipient=recipient,
channel_identifier=CHANNEL_IDENTIFIER_GLOBAL_QUEUE,
Expand Down

0 comments on commit 6d143e8

Please sign in to comment.