Do not indicate error on new round creation.
MODIFY
WalletWasabi/WabiSabi/Client/CoinJoinClient.cs
WalletWasabi/WabiSabi/Client/CoinJoinClient.cs
@@ -133,15 +133,24 @@ public class CoinJoinClient
/// <summary>Attempt to participate in a specified round.</summary>
/// <param name="roundState">Defines the round parameter and state information to use.</param>
- /// <returns>Whether or not the round resulted in a successful transaction.</returns>
+ /// <returns><c>True</c>: client should end the current CoinJoin progress. <c>False</c>: continue with the blame rounds.</returns>
public async Task<bool> StartRoundAsync(IEnumerable<SmartCoin> smartCoins, RoundState roundState, CancellationToken cancellationToken)
{
var constructionState = roundState.Assert<ConstructionState>();
// Register coins.
using PersonCircuit personCircuit = HttpClientFactory.NewHttpClientWithPersonCircuit(out Tor.Http.IHttpClient httpClient);
+ ImmutableArray<AliceClient> registeredAliceClients = ImmutableArray<AliceClient>.Empty;
+ try
+ {
+ registeredAliceClients = await CreateRegisterAndConfirmCoinsAsync(httpClient, smartCoins, roundState, cancellationToken).ConfigureAwait(false);
+ }
+ catch (InvalidOperationException ex)
+ {
+ Logger.LogInfo($"Round ({roundState.Id}): Registration phase ended by the coordinator: '{ex.Message}'.");
+ return true;
+ }
- var registeredAliceClients = await CreateRegisterAndConfirmCoinsAsync(httpClient, smartCoins, roundState, cancellationToken).ConfigureAwait(false);
if (!registeredAliceClients.Any())
{
Logger.LogInfo($"Round ({roundState.Id}): There is no available alices to participate with.");

Do not indicate error on new round creation.