Make sure the timeout is indeed 1h for coinjoins
MODIFY
WalletWasabi/CoinJoin/Coordinator/Coordinator.cs
WalletWasabi/CoinJoin/Coordinator/Coordinator.cs
@@ -221,15 +221,16 @@ namespace WalletWasabi.CoinJoin.Coordinator
int confirmationTarget = await AdjustConfirmationTargetAsync(lockCoinJoins: true).ConfigureAwait(false);
+ var inputRegistrationTimeout = TimeSpan.FromSeconds(RoundConfig.InputRegistrationTimeout);
if (runningRoundCount == 0)
{
- var round = new CoordinatorRound(RpcClient, UtxoReferee, RoundConfig, confirmationTarget, RoundConfig.ConfirmationTarget, RoundConfig.ConfirmationTargetReductionRate);
+ var round = new CoordinatorRound(RpcClient, UtxoReferee, RoundConfig, confirmationTarget, RoundConfig.ConfirmationTarget, RoundConfig.ConfirmationTargetReductionRate, inputRegistrationTimeout);
round.CoinJoinBroadcasted += Round_CoinJoinBroadcasted;
round.StatusChanged += Round_StatusChangedAsync;
await round.ExecuteNextPhaseAsync(RoundPhase.InputRegistration, feePerInputs, feePerOutputs).ConfigureAwait(false);
Rounds.Add(round);
- var round2 = new CoordinatorRound(RpcClient, UtxoReferee, RoundConfig, confirmationTarget, RoundConfig.ConfirmationTarget, RoundConfig.ConfirmationTargetReductionRate);
+ var round2 = new CoordinatorRound(RpcClient, UtxoReferee, RoundConfig, confirmationTarget, RoundConfig.ConfirmationTarget, RoundConfig.ConfirmationTargetReductionRate, 2 * inputRegistrationTimeout);
round2.StatusChanged += Round_StatusChangedAsync;
round2.CoinJoinBroadcasted += Round_CoinJoinBroadcasted;
await round2.ExecuteNextPhaseAsync(RoundPhase.InputRegistration, feePerInputs, feePerOutputs).ConfigureAwait(false);
@@ -237,7 +238,7 @@ namespace WalletWasabi.CoinJoin.Coordinator
}
else if (runningRoundCount == 1)
{
- var round = new CoordinatorRound(RpcClient, UtxoReferee, RoundConfig, confirmationTarget, RoundConfig.ConfirmationTarget, RoundConfig.ConfirmationTargetReductionRate);
+ var round = new CoordinatorRound(RpcClient, UtxoReferee, RoundConfig, confirmationTarget, RoundConfig.ConfirmationTarget, RoundConfig.ConfirmationTargetReductionRate, Rounds.FirstOrDefault(x => x.Status == CoordinatorRoundStatus.Running)?.InputRegistrationTimeout ?? TimeSpan.Zero + inputRegistrationTimeout);
round.StatusChanged += Round_StatusChangedAsync;
round.CoinJoinBroadcasted += Round_CoinJoinBroadcasted;
await round.ExecuteNextPhaseAsync(RoundPhase.InputRegistration, feePerInputs, feePerOutputs).ConfigureAwait(false);

MODIFY
WalletWasabi/CoinJoin/Coordinator/Rounds/CoordinatorRound.cs
WalletWasabi/CoinJoin/Coordinator/Rounds/CoordinatorRound.cs
@@ -26,7 +26,7 @@ namespace WalletWasabi.CoinJoin.Coordinator.Rounds
private RoundPhase _phase;
private CoordinatorRoundStatus _status;
- public CoordinatorRound(IRPCClient rpc, UtxoReferee utxoReferee, CoordinatorRoundConfig config, int adjustedConfirmationTarget, int configuredConfirmationTarget, double configuredConfirmationTargetReductionRate)
+ public CoordinatorRound(IRPCClient rpc, UtxoReferee utxoReferee, CoordinatorRoundConfig config, int adjustedConfirmationTarget, int configuredConfirmationTarget, double configuredConfirmationTargetReductionRate, TimeSpan inputRegistrationTimeOut)
{
try
{
@@ -41,7 +41,7 @@ namespace WalletWasabi.CoinJoin.Coordinator.Rounds
ConfiguredConfirmationTargetReductionRate = configuredConfirmationTargetReductionRate;
CoordinatorFeePercent = config.CoordinatorFeePercent;
AnonymitySet = config.AnonymitySet;
- InputRegistrationTimeout = TimeSpan.FromSeconds(config.InputRegistrationTimeout);
+ InputRegistrationTimeout = inputRegistrationTimeOut;
SetInputRegistrationTimesout();
ConnectionConfirmationTimeout = TimeSpan.FromSeconds(config.ConnectionConfirmationTimeout);
OutputRegistrationTimeout = TimeSpan.FromSeconds(config.OutputRegistrationTimeout);

Make sure the timeout is indeed 1h for coinjoins