mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-10 09:15:47 +00:00
lock SendData to fix random connection failures (#1623)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user