Skip to content

Commit e86706f

Browse files
authored
Merge pull request #935 from Amberg/TrySendFrameLenghtFix
Fix TrySendFrame if buffer is bigger than length
2 parents 671cabc + e11ab8b commit e86706f

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/NetMQ.Tests/OutgoingSocketExtensionsTests.cs

+19
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using System.Linq;
3+
using System.Text;
24
using Xunit;
35

46
namespace NetMQ.Tests
@@ -322,5 +324,22 @@ public void TrySignalFailedTest()
322324

323325
Assert.False(socket.TrySignalOK());
324326
}
327+
328+
[Fact]
329+
public void TrySendFrameBiggerBufferThanLength()
330+
{
331+
var buffer = new byte[64];
332+
var data = Encoding.ASCII.GetBytes("Hello there");
333+
data.CopyTo(buffer, 0);
334+
var socket = new MockOutgoingSocket((ref Msg msg, TimeSpan timeout, bool more) =>
335+
{
336+
Assert.Equal(TimeSpan.Zero, timeout);
337+
Assert.True(data.SequenceEqual(msg.ToArray()));
338+
Assert.False(more);
339+
return true;
340+
});
341+
342+
Assert.True(socket.TrySendFrame(TimeSpan.Zero, buffer, data.Length));
343+
}
325344
}
326345
}

src/NetMQ/OutgoingSocketExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public static bool TrySendFrame(this IOutgoingSocket socket, TimeSpan timeout, b
104104
{
105105
var msg = new Msg();
106106
msg.InitPool(length);
107-
data.CopyTo(msg);
107+
data.Slice(0, length).CopyTo(msg);
108108
if (!socket.TrySend(ref msg, timeout, more))
109109
{
110110
msg.Close();

0 commit comments

Comments
 (0)