diff --git a/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs b/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs index be542bdf7..a7866d414 100644 --- a/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs +++ b/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs @@ -132,7 +132,7 @@ namespace BTCPayServer.Payments.Lightning // LNDhub-compatible implementations might not offer all of GetInfo data. // Skip checks in those cases, see https://github.com/lnbits/lnbits/issues/1182 var isLndHub = client is LndHubLightningClient; - + LightningNodeInformation info; try { @@ -163,11 +163,14 @@ namespace BTCPayServer.Payments.Lightning ? info.NodeInfoList.Where(i => i.IsTor == preferOnion.Value).ToArray() : info.NodeInfoList.Select(i => i).ToArray(); - var blocksGap = summary.Status.ChainHeight - info.BlockHeight; - if (blocksGap > 10 && !(isLndHub && info.BlockHeight == 0)) + if (summary.Status is not null) { - throw new PaymentMethodUnavailableException( - $"The lightning node is not synched ({blocksGap} blocks left)"); + var blocksGap = summary.Status.ChainHeight - info.BlockHeight; + if (blocksGap > 10 && !(isLndHub && info.BlockHeight == 0)) + { + throw new PaymentMethodUnavailableException( + $"The lightning node is not synched ({blocksGap} blocks left)"); + } } return nodeInfo; } diff --git a/BTCPayServer/Payments/Lightning/LightningListener.cs b/BTCPayServer/Payments/Lightning/LightningListener.cs index 7cca99b0e..d74e20752 100644 --- a/BTCPayServer/Payments/Lightning/LightningListener.cs +++ b/BTCPayServer/Payments/Lightning/LightningListener.cs @@ -508,8 +508,15 @@ namespace BTCPayServer.Payments.Lightning try { var lightningClient = _lightningClientFactory.Create(ConnectionString, _network); + if(lightningClient is null) + return; uri = lightningClient.GetServerUri(); - logUrl = string.IsNullOrEmpty(uri.UserInfo) ? uri.ToString() : uri.ToString().Replace(uri.UserInfo, "***"); + logUrl = uri switch + { + null when LightningConnectionStringHelper.ExtractValues(ConnectionString, out var type) is not null => type, + null => string.Empty, + _ => string.IsNullOrEmpty(uri.UserInfo) ? uri.ToString() : uri.ToString().Replace(uri.UserInfo, "***") + }; Logs.PayServer.LogInformation("{CryptoCode} (Lightning): Start listening {Uri}", _network.CryptoCode, logUrl); using var session = await lightningClient.Listen(cancellation); // Just in case the payment arrived after our last poll but before we listened.