I have a program that I wrote a while ago using the Chilkat 9.4 FTP2 FTPS component using implicit SSL on 990. The vendor is changing from using SSL3.0 to TLS1.1 (and changing destination port to 20990). I figured all I had to do was use the latest library and everything should work the same. The file upload seems to happen, but after the file is uploaded the putfile errors out and I get the following lasterrortext with verboselogging enabled.
ChilkatLog: PutFile(30328ms): DllDate: Nov 12 2016 ChilkatVersion: 22.214.171.124 UnlockPrefix: NIAGARFTP Architecture: Little Endian; 32-bit Language: .NET 4.5 VerboseLogging: 1 RemoteFilename: '/inbound/loopfile_SDF_Test.txt' LocalFilename: C:Outboundloopfile_SDF_Test.txt remotePathQP: 'inbound/loopfile_SDF_Test.txt' localPathQP: C:OutboundRBCoutgoingloopfile_SDF_Test.txt ProgressMonitoring(16ms): enabled: yes heartbeatMs: 0 sendBufferSize: 65536 --ProgressMonitoring IdleTimeoutMs: 60000 ReceiveTimeoutMs: 60000 ConnectTimeoutSeconds: 30 uploadFromLocalFile(30312ms): localFileSize: 212 uploadFromDataSource(30312ms): initialGreeting: 220 XXXNG FTPS (Version Wed Nov 30 15:44:04 2016) server ready. restartNext: 0 modeZ: 0 binaryMode: 1 pbsz_protp(78ms): simpleCommand(15ms): sendCommand: sendingCommand: PBSZ 0 --sendCommand readCommandResponse(15ms): replyLineQP: 502 PBSZ Command not implemented. commandResponse: 502 PBSZ Command not implemented. statusCode: 502 --readCommandResponse --simpleCommand simpleCommand(47ms): sendCommand: sendingCommand: PROT P --sendCommand readCommandResponse(15ms): replyLineQP: 502 PROT Command not implemented. commandResponse: 502 PROT Command not implemented. statusCode: 502 --readCommandResponse --simpleCommand simpleCommand(16ms): sendCommand: sendingCommand: PROT C --sendCommand readCommandResponse(16ms): replyLineQP: 502 PROT Command not implemented. commandResponse: 502 PROT Command not implemented. statusCode: 502 --readCommandResponse --simpleCommand --pbsz_protp setupDataConnection(62ms): passive transfer mode setupPassiveDataSocket(62ms): sendCommand: sendingCommand: PASV --sendCommand readCommandResponse(31ms): replyLineQP: 227 Entering Passive Mode (X,X,X,X,102,129) commandResponse: 227 Entering Passive Mode (X,X,X,X,102,129)I'm using WS_FTP pro to connect to the site and that appears to connect properly.
statusCode: 227 --readCommandResponse passiveHostAddr: X.X.X.X dataConnect(31ms): hostname: X.X.X.X port: 26241 socket2Connect(31ms): connect2(31ms): hostname: X.X.X.X port: 26241 ssl: 0 connectSocket(31ms): domainOrIpAddress: X.X.X.X port: 26241 connectTimeoutMs: 30000 connect_ipv6_or_ipv4(31ms): This is an IPV4 numeric address. Domain to IP address resolution not needed. connecting to IPV4 address... ipAddress: X.X.X.X createSocket: Setting SO_SNDBUF size sendBufSize: 262144 Setting SO_RCVBUF size recvBufSize: 4194304 --createSocket connect(15ms): Waiting for the connect to complete... myIP: X.X.X.X myPort: 57719 socket connect successful. --connect --connect_ipv6_or_ipv4 --connectSocket --connect2 --socket2Connect socketOptions: SO_SNDBUF: 262144 SO_RCVBUF: 4194304 TCP_NODELAY: 0 SO_KEEPALIVE: 0 --socketOptions dataConnectSuccess: 1 --dataConnect --setupPassiveDataSocket --setupDataConnection sendUploadCommand: sendCommand: sendingCommand: STOR '/inbound/loopfile_SDF_Test.txt' --sendCommand --sendUploadCommand Reading intermediate response for upload... readCommandResponse(141ms): replyLineQP: 150 Opening data connection for '/inbound/loopfile_SDF_Test.txt'. commandResponse: 150 Opening data connection for '/inbound/loopfile_SDF_Test.txt'. statusCode: 150 --readCommandResponse intermediateResponseStatusCode: 150 intermediateReply: 150 Opening data connection for '/inbound/loopfile_SDF_Test.txt'. sendUploadFileData: sendBufferSize: 65536 Sending uncompressed... lastBytesSent: 73206973206120746573742066696C65 UploadData: Elapsed time: 0 millisec --sendUploadFileData closingDataConnection(31ms): terminateConnection(31ms): TCP connection cleanly closed by peer. Cleanly terminated TCP connection. --terminateConnection --closingDataConnection Reading final response... readCommandResponse(29984ms): processAlert: TlsAlert: level: warning descrip: close notify --TlsAlert --processAlert Received close-notify. Did not receive additional application data. Already received close-notify. terminateConnection(15ms): TCP connection cleanly closed by peer. Cleanly terminated TCP connection. --terminateConnection nReceived: 0 Failed to read FTP control channel reply. readFtpReply: Socket connection closed. --readCommandResponse FinalReply: Elapsed time: 29984 millisec uploadRate: 7 cumulativeNumBytesSent: 212 --uploadFromDataSource Failed. --uploadFromLocalFile TotalTime: Elapsed time: 30312 millisec Failed.
Any assistance would be greatly appreciated
Try this: Instead of specifying a path + filename for the remote file, first ChangeRemoteDir to the "inbound" and then specify only the filename ("loopfile_SDF_Test.txt") for the upload.