diff --git a/EonaCat.Logger/EonaCat.Logger.csproj b/EonaCat.Logger/EonaCat.Logger.csproj
index fbb483c..011b2e0 100644
--- a/EonaCat.Logger/EonaCat.Logger.csproj
+++ b/EonaCat.Logger/EonaCat.Logger.csproj
@@ -3,7 +3,7 @@
.netstandard2.1; net6.0; net7.0; net8.0; net4.8;
icon.ico
latest
- 1.3.6
+ 1.3.7
EonaCat (Jeroen Saey)
true
EonaCat (Jeroen Saey)
@@ -24,7 +24,7 @@
- 1.3.6+{chash:10}.{c:ymd}
+ 1.3.7+{chash:10}.{c:ymd}
true
true
v[0-9]*
diff --git a/EonaCat.Logger/Servers/Syslog/Syslog.cs b/EonaCat.Logger/Servers/Syslog/Syslog.cs
index c54a9ca..f9f3a7d 100644
--- a/EonaCat.Logger/Servers/Syslog/Syslog.cs
+++ b/EonaCat.Logger/Servers/Syslog/Syslog.cs
@@ -12,6 +12,7 @@ public class Syslog : IDisposable
{
private string _Hostname = "127.0.0.1";
private int _Port = 514;
+ private bool IsConnected { get; set; }
internal UdpClient Udp;
@@ -56,14 +57,23 @@ public class Syslog : IDisposable
private void SetUdp()
{
- DisposeUdp();
- Udp = new UdpClient(_Hostname, _Port);
+ try
+ {
+ DisposeUdp();
+ Udp = new UdpClient(_Hostname, _Port);
+ IsConnected = true;
+ }
+ catch
+ {
+ IsConnected = false;
+ }
}
private void DisposeUdp()
{
if (Udp != null)
{
+ IsConnected = false;
Udp.Dispose();
Udp = null;
}
diff --git a/EonaCat.Logger/Servers/Tcp/Tcp.cs b/EonaCat.Logger/Servers/Tcp/Tcp.cs
index 07f30e4..7c4845c 100644
--- a/EonaCat.Logger/Servers/Tcp/Tcp.cs
+++ b/EonaCat.Logger/Servers/Tcp/Tcp.cs
@@ -12,6 +12,7 @@ namespace EonaCat.Logger.Servers.Tcp
private int _Port = 514;
internal TcpClient _tcp;
+ private bool IsConnected { get; set; }
public string Nickname { get; set; }
public string IpPort => _Hostname + ":" + _Port;
@@ -52,14 +53,23 @@ namespace EonaCat.Logger.Servers.Tcp
internal void SetTcp()
{
- DisposeTcp();
- _tcp = new TcpClient(_Hostname, _Port);
+ try
+ {
+ DisposeTcp();
+ _tcp = new TcpClient(_Hostname, _Port);
+ IsConnected = true;
+ }
+ catch
+ {
+ IsConnected = false;
+ }
}
internal void DisposeTcp()
{
if (_tcp != null)
{
+ IsConnected = false;
_tcp.Close();
_tcp.Dispose();
_tcp = null;
@@ -84,9 +94,17 @@ namespace EonaCat.Logger.Servers.Tcp
return;
}
- using var stream = _tcp.GetStream();
- await stream.WriteAsync(data, 0, data.Length);
- await stream.FlushAsync();
+ if (!IsConnected)
+ {
+ SetTcp();
+ }
+
+ if (IsConnected)
+ {
+ using var stream = _tcp.GetStream();
+ await stream.WriteAsync(data, 0, data.Length);
+ await stream.FlushAsync();
+ }
}
internal async Task WriteAsync(string data)
@@ -101,10 +119,18 @@ namespace EonaCat.Logger.Servers.Tcp
return;
}
- var sendData = Encoding.UTF8.GetBytes(data);
- using var stream = _tcp.GetStream();
- await stream.WriteAsync(sendData, 0, sendData.Length);
- await stream.FlushAsync();
+ if (!IsConnected)
+ {
+ SetTcp();
+ }
+
+ if (IsConnected)
+ {
+ var sendData = Encoding.UTF8.GetBytes(data);
+ using var stream = _tcp.GetStream();
+ await stream.WriteAsync(sendData, 0, sendData.Length);
+ await stream.FlushAsync();
+ }
}
~Tcp()
diff --git a/EonaCat.Logger/Servers/Udp/Udp.cs b/EonaCat.Logger/Servers/Udp/Udp.cs
index c99dc12..6234e98 100644
--- a/EonaCat.Logger/Servers/Udp/Udp.cs
+++ b/EonaCat.Logger/Servers/Udp/Udp.cs
@@ -13,6 +13,7 @@ namespace EonaCat.Logger.Servers.Udp
private int _Port = 514;
internal UdpClient _udp;
+ private bool IsConnected { get; set; }
public string Nickname { get; set; }
public string IpPort => _Hostname + ":" + _Port;
@@ -53,14 +54,23 @@ namespace EonaCat.Logger.Servers.Udp
internal void SetUdp()
{
- DisposeUdp();
- _udp = new UdpClient(_Hostname, _Port);
+ try
+ {
+ DisposeUdp();
+ _udp = new UdpClient(_Hostname, _Port);
+ IsConnected = true;
+ }
+ catch
+ {
+ IsConnected = false;
+ }
}
internal void DisposeUdp()
{
if (_udp != null)
{
+ IsConnected = false;
_udp.Dispose();
_udp = null;
}
@@ -79,19 +89,27 @@ namespace EonaCat.Logger.Servers.Udp
return;
}
- _udp.DontFragment = dontFragment;
-
- int maxChunkSize = MaxUdpPacketSize;
- int offset = 0;
-
- while (offset < data.Length)
+ if (!IsConnected)
{
- int chunkSize = Math.Min(maxChunkSize, data.Length - offset);
- byte[] chunk = new byte[chunkSize];
- Array.Copy(data, offset, chunk, 0, chunkSize);
+ SetUdp();
+ }
- await _udp.SendAsync(chunk, chunk.Length);
- offset += chunkSize;
+ if (IsConnected)
+ {
+ _udp.DontFragment = dontFragment;
+
+ int maxChunkSize = MaxUdpPacketSize;
+ int offset = 0;
+
+ while (offset < data.Length)
+ {
+ int chunkSize = Math.Min(maxChunkSize, data.Length - offset);
+ byte[] chunk = new byte[chunkSize];
+ Array.Copy(data, offset, chunk, 0, chunkSize);
+
+ await _udp.SendAsync(chunk, chunk.Length);
+ offset += chunkSize;
+ }
}
}
@@ -102,20 +120,28 @@ namespace EonaCat.Logger.Servers.Udp
return;
}
- var sendData = Encoding.UTF8.GetBytes(data);
- _udp.DontFragment = dontFragment;
-
- int maxChunkSize = MaxUdpPacketSize;
- int offset = 0;
-
- while (offset < sendData.Length)
+ if (!IsConnected)
{
- int chunkSize = Math.Min(maxChunkSize, sendData.Length - offset);
- byte[] chunk = new byte[chunkSize];
- Array.Copy(sendData, offset, chunk, 0, chunkSize);
+ SetUdp();
+ }
- await _udp.SendAsync(chunk, chunk.Length);
- offset += chunkSize;
+ if (IsConnected)
+ {
+ var sendData = Encoding.UTF8.GetBytes(data);
+ _udp.DontFragment = dontFragment;
+
+ int maxChunkSize = MaxUdpPacketSize;
+ int offset = 0;
+
+ while (offset < sendData.Length)
+ {
+ int chunkSize = Math.Min(maxChunkSize, sendData.Length - offset);
+ byte[] chunk = new byte[chunkSize];
+ Array.Copy(sendData, offset, chunk, 0, chunkSize);
+
+ await _udp.SendAsync(chunk, chunk.Length);
+ offset += chunkSize;
+ }
}
}