minor code optimization changes done.

This commit is contained in:
Shreyas Zare
2020-02-29 18:16:05 +05:30
parent 8336021c0b
commit fcd6cd53a0
4 changed files with 58 additions and 60 deletions

View File

@@ -1055,8 +1055,8 @@ namespace DnsServerCore.Dns
if (lastResponse.Header.RCODE == DnsResponseCode.Refused)
{
rcode = DnsResponseCode.NoError;
authority = new DnsResourceRecord[] { };
additional = new DnsResourceRecord[] { };
authority = Array.Empty<DnsResourceRecord>();
additional = Array.Empty<DnsResourceRecord>();
}
else
{
@@ -1072,9 +1072,9 @@ namespace DnsServerCore.Dns
if ((lastResponse.Authority.Length > 0) && (lastResponse.Authority[0].Type == DnsResourceRecordType.SOA))
authority = lastResponse.Authority;
else
authority = new DnsResourceRecord[] { };
authority = Array.Empty<DnsResourceRecord>();
additional = new DnsResourceRecord[] { };
additional = Array.Empty<DnsResourceRecord>();
}
}
@@ -1116,12 +1116,12 @@ namespace DnsServerCore.Dns
{
case DnsResourceRecordType.A:
answer = new DnsResourceRecord[] { new DnsResourceRecord(blockedResponse.Question[0].Name, DnsResourceRecordType.A, blockedResponse.Question[0].Class, 60, new DnsARecord(IPAddress.Any)) };
authority = new DnsResourceRecord[] { };
authority = Array.Empty<DnsResourceRecord>();
break;
case DnsResourceRecordType.AAAA:
answer = new DnsResourceRecord[] { new DnsResourceRecord(blockedResponse.Question[0].Name, DnsResourceRecordType.AAAA, blockedResponse.Question[0].Class, 60, new DnsAAAARecord(IPAddress.IPv6Any)) };
authority = new DnsResourceRecord[] { };
authority = Array.Empty<DnsResourceRecord>();
break;
default:
@@ -1199,12 +1199,12 @@ namespace DnsServerCore.Dns
if ((lastResponse.Authority.Length > 0) && (lastResponse.Authority[0].Type == DnsResourceRecordType.SOA))
authority = lastResponse.Authority;
else
authority = new DnsResourceRecord[] { };
authority = Array.Empty<DnsResourceRecord>();
if ((response.Additional.Length > 0) && (request.Question[0].Type == DnsResourceRecordType.MX))
additional = response.Additional;
else
additional = new DnsResourceRecord[] { };
additional = Array.Empty<DnsResourceRecord>();
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, true, true, false, false, lastResponse.Header.RCODE, 1, (ushort)responseAnswer.Count, (ushort)authority.Length, (ushort)additional.Length), request.Question, responseAnswer.ToArray(), authority, additional) { Tag = response.Tag };
}
@@ -1213,12 +1213,12 @@ namespace DnsServerCore.Dns
if ((response.Authority.Length > 0) && (response.Authority[0].Type == DnsResourceRecordType.SOA))
authority = response.Authority;
else
authority = new DnsResourceRecord[] { };
authority = Array.Empty<DnsResourceRecord>();
if ((response.Additional.Length > 0) && (request.Question[0].Type == DnsResourceRecordType.MX))
additional = response.Additional;
else
additional = new DnsResourceRecord[] { };
additional = Array.Empty<DnsResourceRecord>();
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, true, true, false, false, response.Header.RCODE, 1, (ushort)response.Answer.Length, (ushort)authority.Length, (ushort)additional.Length), request.Question, response.Answer, authority, additional) { Tag = response.Tag };
}

View File

@@ -1,6 +1,6 @@
/*
Technitium DNS Server
Copyright (C) 2019 Shreyas Zare (shreyas@technitium.com)
Copyright (C) 2020 Shreyas Zare (shreyas@technitium.com)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -199,7 +199,7 @@ namespace DnsServerCore.Dns
}
foreach (DateTime key in _keysToRemove)
_hourlyStatsCache.TryRemove(key, out HourlyStats hourlyStats);
_hourlyStatsCache.TryRemove(key, out _);
}
//remove old data from daily stats cache
@@ -216,16 +216,15 @@ namespace DnsServerCore.Dns
}
foreach (DateTime key in _keysToRemove)
_dailyStatsCache.TryRemove(key, out StatCounter dailyStats);
_dailyStatsCache.TryRemove(key, out _);
}
}
private HourlyStats LoadHourlyStats(DateTime dateTime)
{
HourlyStats hourlyStats;
DateTime hourlyDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, 0, 0, 0, DateTimeKind.Utc);
if (!_hourlyStatsCache.TryGetValue(hourlyDateTime, out hourlyStats))
if (!_hourlyStatsCache.TryGetValue(hourlyDateTime, out HourlyStats hourlyStats))
{
string hourlyStatsFile = Path.Combine(_statsFolder, dateTime.ToString("yyyyMMddHH") + ".stat");
@@ -261,10 +260,9 @@ namespace DnsServerCore.Dns
private StatCounter LoadDailyStats(DateTime dateTime)
{
StatCounter dailyStats;
DateTime dailyDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, 0, 0, 0, 0, DateTimeKind.Utc);
if (!_dailyStatsCache.TryGetValue(dailyDateTime, out dailyStats))
if (!_dailyStatsCache.TryGetValue(dailyDateTime, out StatCounter dailyStats))
{
string dailyStatsFile = Path.Combine(_statsFolder, dateTime.ToString("yyyyMMdd") + ".dstat");

View File

@@ -107,7 +107,7 @@ namespace DnsServerCore.Dns
DnsClient.IsDomainNameValid(domainName, true);
if (string.IsNullOrEmpty(domainName))
return new string[] { };
return Array.Empty<string>();
string[] path = domainName.ToLower().Split('.');
Array.Reverse(path);
@@ -747,7 +747,7 @@ namespace DnsServerCore.Dns
DnsResourceRecord[] closestAuthority = closestZone.QueryClosestAuthority(rootZone._serverDomain);
if (closestAuthority == null)
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>());
if (closestAuthority[0].Type == DnsResourceRecordType.SOA)
{
@@ -759,7 +759,7 @@ namespace DnsServerCore.Dns
if (answerRecords == null)
{
//record type not found
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, new DnsResourceRecord[] { }, closestAuthority, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, Array.Empty<DnsResourceRecord>(), closestAuthority, Array.Empty<DnsResourceRecord>());
}
else
{
@@ -784,13 +784,13 @@ namespace DnsServerCore.Dns
{
case DnsResourceRecordType.NS:
case DnsResourceRecordType.MX:
closestAuthoritativeNameServers = new DnsResourceRecord[] { };
closestAuthoritativeNameServers = Array.Empty<DnsResourceRecord>();
additional = QueryGlueRecords(rootZone, answerRecords, false);
break;
case DnsResourceRecordType.ANY:
closestAuthoritativeNameServers = new DnsResourceRecord[] { };
additional = new DnsResourceRecord[] { };
closestAuthoritativeNameServers = Array.Empty<DnsResourceRecord>();
additional = Array.Empty<DnsResourceRecord>();
break;
default:
@@ -798,8 +798,8 @@ namespace DnsServerCore.Dns
if (closestAuthoritativeNameServers == null)
{
closestAuthoritativeNameServers = new DnsResourceRecord[] { };
additional = new DnsResourceRecord[] { };
closestAuthoritativeNameServers = Array.Empty<DnsResourceRecord>();
additional = Array.Empty<DnsResourceRecord>();
}
else
{
@@ -815,7 +815,7 @@ namespace DnsServerCore.Dns
else
{
//zone doesnt exists
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NameError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, new DnsResourceRecord[] { }, closestAuthority, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NameError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, Array.Empty<DnsResourceRecord>(), closestAuthority, Array.Empty<DnsResourceRecord>());
}
}
else
@@ -823,7 +823,7 @@ namespace DnsServerCore.Dns
//zone is delegated
DnsResourceRecord[] additional = QueryGlueRecords(rootZone, closestAuthority, false);
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, closestAuthority, additional);
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, (ushort)additional.Length), request.Question, Array.Empty<DnsResourceRecord>(), closestAuthority, additional);
}
}
@@ -845,11 +845,11 @@ namespace DnsServerCore.Dns
DnsResourceRecord authority = (answerRecords[0].RDATA as DnsCache.DnsEmptyRecord).Authority;
if (authority == null)
responseAuthority = new DnsResourceRecord[] { };
responseAuthority = Array.Empty<DnsResourceRecord>();
else
responseAuthority = new DnsResourceRecord[] { authority };
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, 1, 0), request.Question, new DnsResourceRecord[] { }, responseAuthority, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, 1, 0), request.Question, Array.Empty<DnsResourceRecord>(), responseAuthority, Array.Empty<DnsResourceRecord>());
}
if (answerRecords[0].RDATA is DnsCache.DnsNXRecord)
@@ -858,21 +858,21 @@ namespace DnsServerCore.Dns
DnsResourceRecord authority = (answerRecords[0].RDATA as DnsCache.DnsNXRecord).Authority;
if (authority == null)
responseAuthority = new DnsResourceRecord[] { };
responseAuthority = Array.Empty<DnsResourceRecord>();
else
responseAuthority = new DnsResourceRecord[] { authority };
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NameError, 1, 0, 1, 0), request.Question, new DnsResourceRecord[] { }, responseAuthority, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NameError, 1, 0, 1, 0), request.Question, Array.Empty<DnsResourceRecord>(), responseAuthority, Array.Empty<DnsResourceRecord>());
}
if (answerRecords[0].RDATA is DnsCache.DnsANYRecord)
{
DnsCache.DnsANYRecord anyRR = answerRecords[0].RDATA as DnsCache.DnsANYRecord;
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)anyRR.Records.Length, 0, 0), request.Question, anyRR.Records, new DnsResourceRecord[] { }, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)anyRR.Records.Length, 0, 0), request.Question, anyRR.Records, Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>());
}
if (answerRecords[0].RDATA is DnsCache.DnsFailureRecord)
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, (answerRecords[0].RDATA as DnsCache.DnsFailureRecord).RCODE, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, (answerRecords[0].RDATA as DnsCache.DnsFailureRecord).RCODE, 1, 0, 0, 0), request.Question, Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>());
DnsResourceRecord[] additional;
@@ -884,11 +884,11 @@ namespace DnsServerCore.Dns
break;
default:
additional = new DnsResourceRecord[] { };
additional = Array.Empty<DnsResourceRecord>();
break;
}
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)answerRecords.Length, 0, (ushort)additional.Length), request.Question, answerRecords, new DnsResourceRecord[] { }, additional);
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)answerRecords.Length, 0, (ushort)additional.Length), request.Question, answerRecords, Array.Empty<DnsResourceRecord>(), additional);
}
}
@@ -900,12 +900,12 @@ namespace DnsServerCore.Dns
DnsResourceRecord[] additional = QueryGlueRecords(rootZone, nameServers, serveStale);
if (additional.Length > 0)
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, nameServers, additional);
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, Array.Empty<DnsResourceRecord>(), nameServers, additional);
closestZone = closestZone._parentZone;
}
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>());
}
#endregion
@@ -969,12 +969,12 @@ namespace DnsServerCore.Dns
DnsResourceRecord[] additional = QueryGlueRecords(this, nameServers, serveStale);
if (additional.Length > 0)
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, nameServers, additional);
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, Array.Empty<DnsResourceRecord>(), nameServers, additional);
closestZone = closestZone._parentZone;
}
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { });
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>(), Array.Empty<DnsResourceRecord>());
}
internal void RemoveExpiredCachedRecords()
@@ -1109,7 +1109,7 @@ namespace DnsServerCore.Dns
{
Zone currentZone = GetZone(this, domain, false);
if (currentZone == null)
return new ZoneInfo[] { }; //no zone for given domain
return Array.Empty<ZoneInfo>(); //no zone for given domain
List<Zone> zones = new List<Zone>();
currentZone.ListAuthoritativeZones(zones);

View File

@@ -1,6 +1,6 @@
/*
Technitium DNS Server
Copyright (C) 2019 Shreyas Zare (shreyas@technitium.com)
Copyright (C) 2020 Shreyas Zare (shreyas@technitium.com)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -1823,7 +1823,7 @@ namespace DnsServerCore
if (direction == "up")
{
if (domain == "")
if (domain.Length == 0)
break;
int i = domain.IndexOf('.');
@@ -1832,7 +1832,7 @@ namespace DnsServerCore
else
domain = domain.Substring(i + 1);
}
else if (domain == "")
else if (domain.Length == 0)
{
domain = subZones[0];
}
@@ -1850,7 +1850,7 @@ namespace DnsServerCore
jsonWriter.WritePropertyName("zones");
jsonWriter.WriteStartArray();
if (domain != "")
if (domain.Length != 0)
domain = "." + domain;
foreach (string subZone in subZones)
@@ -1896,7 +1896,7 @@ namespace DnsServerCore
if (direction == "up")
{
if (domain == "")
if (domain.Length == 0)
break;
int i = domain.IndexOf('.');
@@ -1905,7 +1905,7 @@ namespace DnsServerCore
else
domain = domain.Substring(i + 1);
}
else if (domain == "")
else if (domain.Length == 0)
{
domain = subZones[0];
}
@@ -1923,7 +1923,7 @@ namespace DnsServerCore
jsonWriter.WritePropertyName("zones");
jsonWriter.WriteStartArray();
if (domain != "")
if (domain.Length != 0)
domain = "." + domain;
foreach (string subZone in subZones)
@@ -2045,7 +2045,7 @@ namespace DnsServerCore
if (direction == "up")
{
if (domain == "")
if (domain.Length == 0)
break;
int i = domain.IndexOf('.');
@@ -2054,7 +2054,7 @@ namespace DnsServerCore
else
domain = domain.Substring(i + 1);
}
else if (domain == "")
else if (domain.Length == 0)
{
domain = subZones[0];
}
@@ -2072,7 +2072,7 @@ namespace DnsServerCore
jsonWriter.WritePropertyName("zones");
jsonWriter.WriteStartArray();
if (domain != "")
if (domain.Length != 0)
domain = "." + domain;
foreach (string subZone in subZones)
@@ -3438,7 +3438,7 @@ namespace DnsServerCore
string strDomainName = request.QueryString["domainName"];
if (strDomainName != null)
scope.DomainName = strDomainName == "" ? null : strDomainName;
scope.DomainName = strDomainName.Length == 0 ? null : strDomainName;
string strDnsTtl = request.QueryString["dnsTtl"];
if (!string.IsNullOrEmpty(strDnsTtl))
@@ -3446,7 +3446,7 @@ namespace DnsServerCore
string strRouterAddress = request.QueryString["routerAddress"];
if (strRouterAddress != null)
scope.RouterAddress = strRouterAddress == "" ? null : IPAddress.Parse(strRouterAddress);
scope.RouterAddress = strRouterAddress.Length == 0 ? null : IPAddress.Parse(strRouterAddress);
string strUseThisDnsServer = request.QueryString["useThisDnsServer"];
if (!string.IsNullOrEmpty(strUseThisDnsServer))
@@ -3457,7 +3457,7 @@ namespace DnsServerCore
string strDnsServers = request.QueryString["dnsServers"];
if (strDnsServers != null)
{
if (strDnsServers == "")
if (strDnsServers.Length == 0)
{
scope.DnsServers = null;
}
@@ -3477,7 +3477,7 @@ namespace DnsServerCore
string strWinsServers = request.QueryString["winsServers"];
if (strWinsServers != null)
{
if (strWinsServers == "")
if (strWinsServers.Length == 0)
{
scope.WinsServers = null;
}
@@ -3496,7 +3496,7 @@ namespace DnsServerCore
string strNtpServers = request.QueryString["ntpServers"];
if (strNtpServers != null)
{
if (strNtpServers == "")
if (strNtpServers.Length == 0)
{
scope.NtpServers = null;
}
@@ -3515,7 +3515,7 @@ namespace DnsServerCore
string strStaticRoutes = request.QueryString["staticRoutes"];
if (strStaticRoutes != null)
{
if (strStaticRoutes == "")
if (strStaticRoutes.Length == 0)
{
scope.StaticRoutes = null;
}
@@ -3538,7 +3538,7 @@ namespace DnsServerCore
string strExclusions = request.QueryString["exclusions"];
if (strExclusions != null)
{
if (strExclusions == "")
if (strExclusions.Length == 0)
{
scope.Exclusions = null;
}
@@ -3561,7 +3561,7 @@ namespace DnsServerCore
string strReservedLeases = request.QueryString["reservedLeases"];
if (strReservedLeases != null)
{
if (strReservedLeases == "")
if (strReservedLeases.Length == 0)
{
scope.ReservedLeases = null;
}
@@ -4213,7 +4213,7 @@ namespace DnsServerCore
private static string PopWord(ref string line)
{
if (line == "")
if (line.Length == 0)
return line;
line = line.TrimStart(' ', '\t');
@@ -4494,7 +4494,7 @@ namespace DnsServerCore
_tlsCertificatePath = bR.ReadShortString();
_tlsCertificatePassword = bR.ReadShortString();
if (_tlsCertificatePath == "")
if (_tlsCertificatePath.Length == 0)
_tlsCertificatePath = null;
if (_tlsCertificatePath != null)