|
|
@@ -148,10 +148,10 @@ namespace Renci.SshNet.Abstractions
|
|
|
var receiveCompleted = new ManualResetEvent(false);
|
|
|
var sendReceiveToken = new PartialSendReceiveToken(socket, receiveCompleted);
|
|
|
var args = new SocketAsyncEventArgs
|
|
|
- {
|
|
|
- RemoteEndPoint = socket.RemoteEndPoint,
|
|
|
- UserToken = sendReceiveToken
|
|
|
- };
|
|
|
+ {
|
|
|
+ RemoteEndPoint = socket.RemoteEndPoint,
|
|
|
+ UserToken = sendReceiveToken
|
|
|
+ };
|
|
|
args.Completed += ReceiveCompleted;
|
|
|
args.SetBuffer(buffer, offset, size);
|
|
|
|
|
|
@@ -166,6 +166,10 @@ namespace Renci.SshNet.Abstractions
|
|
|
"Socket read operation has timed out after {0:F0} milliseconds.",
|
|
|
timeout.TotalMilliseconds));
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sendReceiveToken.Process(args);
|
|
|
+ }
|
|
|
|
|
|
if (args.SocketError != SocketError.Success)
|
|
|
throw new SocketException((int) args.SocketError);
|
|
|
@@ -359,10 +363,10 @@ namespace Renci.SshNet.Abstractions
|
|
|
var sendReceiveToken = new BlockingSendReceiveToken(socket, buffer, offset, size, receiveCompleted);
|
|
|
|
|
|
var args = new SocketAsyncEventArgs
|
|
|
- {
|
|
|
- UserToken = sendReceiveToken,
|
|
|
- RemoteEndPoint = socket.RemoteEndPoint
|
|
|
- };
|
|
|
+ {
|
|
|
+ UserToken = sendReceiveToken,
|
|
|
+ RemoteEndPoint = socket.RemoteEndPoint
|
|
|
+ };
|
|
|
args.Completed += ReceiveCompleted;
|
|
|
args.SetBuffer(buffer, offset, size);
|
|
|
|
|
|
@@ -374,6 +378,10 @@ namespace Renci.SshNet.Abstractions
|
|
|
throw new SshOperationTimeoutException(string.Format(CultureInfo.InvariantCulture,
|
|
|
"Socket read operation has timed out after {0:F0} milliseconds.", timeout.TotalMilliseconds));
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sendReceiveToken.Process(args);
|
|
|
+ }
|
|
|
|
|
|
if (args.SocketError != SocketError.Success)
|
|
|
throw new SocketException((int) args.SocketError);
|
|
|
@@ -443,6 +451,10 @@ namespace Renci.SshNet.Abstractions
|
|
|
if (!sendCompleted.WaitOne())
|
|
|
throw new SocketException((int) SocketError.TimedOut);
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sendReceiveToken.Process(socketAsyncSendArgs);
|
|
|
+ }
|
|
|
|
|
|
if (socketAsyncSendArgs.SocketError != SocketError.Success)
|
|
|
throw new SocketException((int) socketAsyncSendArgs.SocketError);
|