With Chilkat-Library starting version 9.5.0.76 the function PutTree of CkFtp2 did not work with UNC-paths any more. It tries to change the remotedir like the local UNC-path.
Code sample:
CkFtp2 ftp;
ftp.put_Hostname("ftp.example.com");
ftp.put_Username("test");
ftp.put_Password("test");
bool success = ftp.Connect();
success = ftp.ChangeRemoteDir("/");
success = ftp.PutTree("\\\\server\\daten\\Ent\\Seb\\Versionssystem");
success = ftp.Disconnect();
Chilkat-Log:
PutTree:
DllDate: Feb 24 2020
ChilkatVersion: 9.5.0.82
UnlockPrefix: xxxxx
Architecture: Little Endian; 32-bit
Language: Visual C++ 2017 (32-bit)
VerboseLogging: 1
putTree2:
localRootDir: \\server\daten\Ent\Seb\Versionssystem
ProgressMonitoring:
enabled: no
heartbeatMs: 0
sendBufferSize: 65536
(leaveContext 32ms)
mode 0: Upload all files.
PlanOnly: 0
Mode: 0
PreviewOnly: 0
RecursiveDescend: 1
autoGetSizeForProgress: False
rootDir: //server/daten/Ent/Seb/Versionssystem/
pwd:
simpleCommand:
sendCommand:
prepControlChannel:
(leaveContext 15ms)
sendingCommand: PWD
(leaveContext 15ms)
readCommandResponse:
replyLineQP: 257 "/" is your current location
(leaveContext 16ms)
(leaveContext 31ms)
(leaveContext 62ms)
remoteBaseDir: /
initialCurrentRemoteDir: /
changeRemoteDir:
simplePathCommand:
simpleCommand:
sendCommand:
prepControlChannel:
(leaveContext)
sendingCommand: CWD /server/daten/Ent/Seb/Versionssystem
(leaveContext 16ms)
readCommandResponse:
replyLineQP: 550 Can't change directory to /server/daten/Ent/Seb/Versionssystem: No such file or directory
(leaveContext 16ms)
(leaveContext 47ms)
Simple path command failed.
statusCode: 550
reply: 550 Can't change directory to /server/daten/Ent/Seb/Versionssystem: No such file or directory
Do not use the leading forward slash.
Retrying without forward slash.
simpleCommand:
sendCommand:
prepControlChannel:
(leaveContext)
sendingCommand: CWD server/daten/Ent/Seb/Versionssystem
(leaveContext 31ms)
readCommandResponse:
replyLineQP: 550 Can't change directory to server/daten/Ent/Seb/Versionssystem: No such file or directory
(leaveContext 125ms)
(leaveContext 156ms)
Simple path command failed.
statusCode: 550
reply: 550 Can't change directory to server/daten/Ent/Seb/Versionssystem: No such file or directory
(leaveContext 250ms)
(leaveContext 282ms)
ChangeRemoteDir failed (2)
dir: /server/daten/Ent/Seb/Versionssystem
pwd:
simpleCommand:
sendCommand:
prepControlChannel:
(leaveContext)
sendingCommand: PWD
(leaveContext 16ms)
readCommandResponse:
replyLineQP: 257 "/" is your current location
(leaveContext 15ms)
(leaveContext 63ms)
(leaveContext 63ms)
currentRemoteDir: /
originalDir: /
changeRemoteDir:
simplePathCommand:
simpleCommand:
sendCommand:
prepControlChannel:
(leaveContext)
sendingCommand: CWD /
(leaveContext 16ms)
readCommandResponse:
replyLineQP: 250 OK. Current directory is /
(leaveContext 15ms)
(leaveContext 47ms)
(leaveContext 63ms)
(leaveContext 63ms)
(leaveContext 563ms)
Failed.
(leaveContext 610ms)
Until version 9.5.0.75 this code works fine. Is this a bug or did I am missing a new flag/option to set the behaviour to the old one?
I ran into this same error on 9.5.0.82. It turned out that the change to root ftp.ChangeRemoteDir("/") was the culprit. The account we had did not have permissions to root.
The ChangeRemoteDir command didn't error but every request after produced the "Can't change directory to... No such file or directory" error.
The ftp.PutTree command worked after skipping the change to root.