public void Init()
{
WaitReady();
CheckStatus();
SFTPPacket packet =
new SFTPPacket(SFTPPacketType.SSH_FXP_INIT)
.WriteInt32(SFTP_VERSION);
bool result = false;
_eventHandler.ClearResponseBuffer();
Transmit(packet);
_eventHandler.WaitResponse(
(packetType, dataReader) => {
if (packetType == SFTPPacketType.SSH_FXP_VERSION) {
int version = dataReader.ReadInt32();
Debug.WriteLine("SFTP: SSH_FXP_VERSION => " + version);
result = true; // OK, received SSH_FXP_VERSION
while (dataReader.RemainingDataLength > 4) {
string extensionText = dataReader.ReadUTF8String();
Debug.WriteLine("SFTP: SSH_FXP_VERSION => " + extensionText);
}
return true; // processed
}
return false; // ignored
},
_protocolTimeout
);
// sanity check
if (!Volatile.Read(ref result)) {
throw new SFTPClientException("Missing SSH_FXP_VERSION");
}
}