diff --git a/src/Renci.SshNet/Channels/Channel.cs b/src/Renci.SshNet/Channels/Channel.cs index 4c3569ce..d009c337 100644 --- a/src/Renci.SshNet/Channels/Channel.cs +++ b/src/Renci.SshNet/Channels/Channel.cs @@ -17,6 +17,7 @@ namespace Renci.SshNet.Channels { private readonly Lock _serverWindowSizeLock = new Lock(); private readonly Lock _messagingLock = new Lock(); + private readonly Lock _sendDataLock = new Lock(); private readonly uint _initialWindowSize; private readonly ISession _session; private readonly ILogger _logger; @@ -340,19 +341,22 @@ namespace Renci.SshNet.Channels return; } - var totalBytesToSend = size; - while (totalBytesToSend > 0) + lock (_sendDataLock) { - var sizeOfCurrentMessage = GetDataLengthThatCanBeSentInMessage(totalBytesToSend); + var totalBytesToSend = size; + while (totalBytesToSend > 0) + { + var sizeOfCurrentMessage = GetDataLengthThatCanBeSentInMessage(totalBytesToSend); - var channelDataMessage = new ChannelDataMessage(RemoteChannelNumber, - data, - offset, - sizeOfCurrentMessage); - _session.SendMessage(channelDataMessage); + var channelDataMessage = new ChannelDataMessage(RemoteChannelNumber, + data, + offset, + sizeOfCurrentMessage); + _session.SendMessage(channelDataMessage); - totalBytesToSend -= sizeOfCurrentMessage; - offset += sizeOfCurrentMessage; + totalBytesToSend -= sizeOfCurrentMessage; + offset += sizeOfCurrentMessage; + } } } diff --git a/test/Renci.SshNet.IntegrationTests/OldIntegrationTests/SftpClientTest.Upload.cs b/test/Renci.SshNet.IntegrationTests/OldIntegrationTests/SftpClientTest.Upload.cs index c48c5321..e5cd9140 100644 --- a/test/Renci.SshNet.IntegrationTests/OldIntegrationTests/SftpClientTest.Upload.cs +++ b/test/Renci.SshNet.IntegrationTests/OldIntegrationTests/SftpClientTest.Upload.cs @@ -77,11 +77,6 @@ namespace Renci.SshNet.IntegrationTests.OldIntegrationTests [TestCategory("Sftp")] public void Test_Sftp_Multiple_Async_Upload_And_Download_10Files_5MB_Each() { - if (Environment.GetEnvironmentVariable("CI") == "true") - { - Assert.Inconclusive("Skipping because of failures in CI, see #1253"); - } - var maxFiles = 10; var maxSize = 5;