Archived Forum Post

Index of archived forum posts

Question:

issue with FTPS and TLS1.1 connection

Dec 03 '16 at 16:52

Hi.
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: 9.5.0.64
    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)

          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.

--PutFile --ChilkatLog

I'm using WS_FTP pro to connect to the site and that appears to connect properly.
I've tried it with autofix = false, autofeat = false, I'm not sure what to try next.

Any assistance would be greatly appreciated
Thanks
Jon


Answer

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.