Merge pull request #93 from LD-Reborn/79-bug-ioexception-unable-to-read-data-from-the-transport-connection-connection-reset-by-peer

79 bug ioexception unable to read data from the transport connection connection reset by peer
This commit is contained in:
LD50
2025-10-08 22:57:02 +02:00
committed by GitHub
2 changed files with 27 additions and 8 deletions

View File

@@ -13,4 +13,5 @@ public class LdapConfig
public string UsersOu { get; set; } = "ou=users"; public string UsersOu { get; set; } = "ou=users";
public string GroupsOu { get; set; } = "ou=groups"; public string GroupsOu { get; set; } = "ou=groups";
public string MigrationsOu { get; set; } = "ou=migrations"; public string MigrationsOu { get; set; } = "ou=migrations";
public int ConnectionRetryCount { get; set; } = 10;
} }

View File

@@ -22,22 +22,40 @@ public partial class LdapService : IDisposable
} }
private async Task ConnectAndBind() private async Task ConnectAndBind()
{
int retries = 0;
while (retries++ < _opts.ConnectionRetryCount)
{
try
{ {
if (!_conn.Connected) if (!_conn.Connected)
{ {
Console.WriteLine(_opts.Host);
Console.WriteLine(_opts.Port);
try try
{ {
await _conn.ConnectAsync(_opts.Host, _opts.Port); await _conn.ConnectAsync(_opts.Host, _opts.Port);
} }
catch (SystemException ex) catch (SystemException ex)
{ {
_logger.LogCritical("Unable to connect to LDAP: {ex.Message}\n{ex.StackTrace}", [ex.Message, ex.StackTrace]); _logger.LogWarning("Unable to connect to LDAP: {ex.Message}\n{ex.StackTrace}", [ex.Message, ex.StackTrace]);
throw; throw;
} }
} }
await _conn.BindAsync(_opts.BindDn, _opts.BindPassword); await _conn.BindAsync(_opts.BindDn, _opts.BindPassword);
return;
}
catch (Exception ex)
{
if (retries == _opts.ConnectionRetryCount)
{
_logger.LogError("Unable to connect to LDAP: {ex.Message}\n{ex.StackTrace}", [ex.Message, ex.StackTrace]);
throw;
}
else
{
_logger.LogWarning("Unable to connect to LDAP: {ex.Message}\n{ex.StackTrace}", [ex.Message, ex.StackTrace]);
}
}
}
} }
public string AssetsBaseDn => string.IsNullOrEmpty(_opts.AssetsOu) ? _opts.BaseDn : $"{_opts.AssetsOu},{_opts.BaseDn}"; public string AssetsBaseDn => string.IsNullOrEmpty(_opts.AssetsOu) ? _opts.BaseDn : $"{_opts.AssetsOu},{_opts.BaseDn}";