Skip to content

Commit 3eacda1

Browse files
committed
Fix WriteDmxValues with Delte throws OutOfRangeException
Bump v0.0.24
1 parent 37f4d04 commit 3eacda1

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

ArtNetSharp/ArtNetSharp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<TargetFrameworks>netstandard2.0;net6.0;net7.0;net8.0</TargetFrameworks>
44
<PackageLicenseFile>LICENSE</PackageLicenseFile>
5-
<Version>0.0.23</Version>
5+
<Version>0.0.24</Version>
66
<RepositoryUrl>https://github.com/DMXControl/ArtNetSharp</RepositoryUrl>
77
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl>
88
<PackageTags>RDM; ArtNet; E1.20; E1.33; E1.37-1; E1.37-2; E1.37-7</PackageTags>

ArtNetSharp/Communication/AbstractInstance.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using System.Diagnostics;
1111
using System.Linq;
1212
using System.Net;
13+
using System.Net.Sockets;
1314
using System.Runtime.CompilerServices;
1415
using System.Threading;
1516
using System.Threading.Tasks;
@@ -191,7 +192,7 @@ internal async void Update(byte[] data, ushort? startindex = null, ushort? count
191192
try
192193
{
193194
if ((startindex + count) <= Data.Length)
194-
Array.Copy(data, startindex.Value, Data, startindex.Value, count.Value);
195+
Array.Copy(data, 0, Data, startindex.Value, count.Value);
195196
else
196197
Array.Copy(data, 0, Data, 0, Math.Min(data.Length, Data.Length));
197198

@@ -519,12 +520,20 @@ public async Task SendArtSync()
519520
if (EnableSync)
520521
await sendArtSync();
521522
}
522-
private async Task sendArtSync()
523+
private async Task sendArtSync(params IPv4Address[] addresses)
523524
{
524525
if (this.IsDisposing || this.IsDisposed || this.IsDeactivated)
525526
return;
526527
using ArtSync artSync = new ArtSync();
527-
await TrySendBroadcastPacket(artSync);
528+
if (addresses.Length == 0)
529+
await TrySendBroadcastPacket(artSync);
530+
else
531+
{
532+
var smalArray = addresses.Distinct();
533+
var networkClients = ArtNetInstance.NetworkClients.ToList();
534+
var broadcastAddresses = smalArray.Select(a => networkClients.FirstOrDefault(n => Tools.IsInSubnet(a, n.IPv4Mask, n.LocalIpAddress)).BroadcastIpAddress).Distinct().ToList(); ;
535+
broadcastAddresses.ForEach(async (b) => await TrySendPacket(artSync, b));
536+
}
528537
}
529538
#endregion
530539

0 commit comments

Comments
 (0)