ssh2: Error: Malformed packet calling fastGet of a big file
I can fastGet
a 100kb file but when I’m trying to do so with 90mb file I get the Malformed packet
error.
I can’t seem to find the cause of it.
I’m using this test sftp server (maybe that’s the cause of the problem?).
This is the debug log from the connection:
DEBUG: Local ident: 'SSH-2.0-ssh2js0.1.11'
DEBUG: Client: Trying localhost on port 22 ...
DEBUG: Client: Connected
DEBUG: Parser: IN_INIT
DEBUG: Parser: IN_GREETING
DEBUG: Parser: IN_HEADER
DEBUG: Remote ident: 'SSH-2.0-RebexSSH_1.0.2.25515'
DEBUG: Outgoing: Writing KEXINIT
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: pktLen:804,padLen:11,remainLen:800
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER, packet: KEXINIT
DEBUG: Comparing KEXINITs ...
DEBUG: (local) KEX algorithms: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
DEBUG: (remote) KEX algorithms: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
DEBUG: KEX algorithm: diffie-hellman-group-exchange-sha256
DEBUG: (local) Host key formats: ssh-rsa
DEBUG: (remote) Host key formats: ssh-rsa,ssh-rsa-sha256@ssh.com,ssh-dss
DEBUG: Host key format: ssh-rsa
DEBUG: (local) Client->Server ciphers: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm,aes128-gcm@openssh.com,aes256-gcm,aes256-gcm@openssh.com
DEBUG: (remote) Client->Server ciphers: aes256-ctr,aes192-ctr,aes128-ctr,3des-ctr,twofish256-ctr,twofish192-ctr,twofish128-ctr,blowfish-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc,twofish256-cbc,twofish192-cbc,twofish128-cbc,twofish-cbc,blowfish-cbc,arcfour256,arcfour128
DEBUG: Client->Server Cipher: aes128-ctr
DEBUG: (local) Server->Client ciphers: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm,aes128-gcm@openssh.com,aes256-gcm,aes256-gcm@openssh.com
DEBUG: (remote) Server->Client ciphers: aes256-ctr,aes192-ctr,aes128-ctr,3des-ctr,twofish256-ctr,twofish192-ctr,twofish128-ctr,blowfish-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc,twofish256-cbc,twofish192-cbc,twofish128-cbc,twofish-cbc,blowfish-cbc,arcfour256,arcfour128
DEBUG: Server->Client Cipher: aes128-ctr
DEBUG: (local) Client->Server HMAC algorithms: hmac-sha2-256,hmac-sha2-512,hmac-sha1
DEBUG: (remote) Client->Server HMAC algorithms: hmac-sha1,hmac-md5,hmac-sha2-256,hmac-sha2-512
DEBUG: Client->Server HMAC algorithm: hmac-sha2-256
DEBUG: (local) Server->Client HMAC algorithms: hmac-sha2-256,hmac-sha2-512,hmac-sha1
DEBUG: (remote) Server->Client HMAC algorithms: hmac-sha1,hmac-md5,hmac-sha2-256,hmac-sha2-512
DEBUG: Server->Client HMAC algorithm: hmac-sha2-256
DEBUG: (local) Client->Server compression algorithms: none,zlib@openssh.com,zlib
DEBUG: (remote) Client->Server compression algorithms: none
DEBUG: Client->Server compression algorithm: none
DEBUG: (local) Server->Client compression algorithms: none,zlib@openssh.com,zlib
DEBUG: (remote) Server->Client compression algorithms: none
DEBUG: Server->Client compression algorithm: none
DEBUG: Outgoing: Writing KEXDH_GEX_REQUEST
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: pktLen:660,padLen:9,remainLen:656
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER, packet: KEXDH_GEX_GROUP
DEBUG: Outgoing: Writing KEXDH_GEX_INIT
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: pktLen:892,padLen:7,remainLen:888
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER, packet: KEXDH_GEX_REPLY
DEBUG: Checking host key format
DEBUG: Checking signature format
DEBUG: Verifying host fingerprint
DEBUG: Host accepted by default (no verification)
DEBUG: Verifying signature
DEBUG: Outgoing: Writing NEWKEYS
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: pktLen:12,padLen:10,remainLen:8
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER, packet: NEWKEYS
DEBUG: Outgoing: Writing SERVICE_REQUEST (ssh-userauth)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:28,padLen:10,remainLen:16
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: SERVICE_ACCEPT
DEBUG: Outgoing: Writing USERAUTH_REQUEST (password)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:12,padLen:10,remainLen:0
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: USERAUTH_SUCCESS
Client :: ready
DEBUG: Outgoing: Writing CHANNEL_OPEN (0, session)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:28,padLen:10,remainLen:16
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: CHANNEL_OPEN_CONFIRMATION
DEBUG: Outgoing: Writing CHANNEL_REQUEST (0, subsystem: sftp)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:28,padLen:18,remainLen:16
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: CHANNEL_WINDOW_ADJUST (0, 131072)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:12,padLen:6,remainLen:0
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: CHANNEL_SUCCESS (0)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:12,padLen:6,remainLen:0
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: IGNORE
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:76,padLen:4,remainLen:64
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: CHANNEL_DATA (0)
Downloading: video.mp4
DEBUG[SFTP]: Outgoing: Writing OPEN
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:12,padLen:6,remainLen:0
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: IGNORE
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:44,padLen:17,remainLen:32
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: CHANNEL_DATA (0)
DEBUG[SFTP]: Parser: Response: HANDLE
DEBUG[SFTP]: Outgoing: Writing FSTAT
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:12,padLen:6,remainLen:0
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: IGNORE
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:60,padLen:17,remainLen:48
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: CHANNEL_DATA (0)
DEBUG[SFTP]: Parser: Response: ATTRS
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG[SFTP]: Outgoing: Writing READ
DEBUG: Outgoing: Writing CHANNEL_DATA (0)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:12,padLen:6,remainLen:0
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER, packet: IGNORE
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:32796,padLen:5,remainLen:32784
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: Malformed packet
Error: Malformed packet
at SSH2Stream._cleanup (D:\Git\test\node_modules\ssh2-streams\lib\ssh.js:248:24)
at readString (D:\Git\test\node_modules\ssh2-streams\lib\utils.js:800:22)
at parsePacket (D:\Git\test\node_modules\ssh2-streams\lib\ssh.js:3359:12)
at SSH2Stream._transform (D:\Git\test\node_modules\ssh2-streams\lib\ssh.js:652:13)
at SSH2Stream.Transform._read [as __read] (_stream_transform.js:167:10)
at SSH2Stream._read (D:\Git\test\node_modules\ssh2-streams\lib\ssh.js:236:15)
at SSH2Stream.Transform._write (_stream_transform.js:155:12)
at doWrite (_stream_writable.js:295:12)
at writeOrBuffer (_stream_writable.js:282:5)
at SSH2Stream.Writable.write (_stream_writable.js:210:11)
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Comments: 19 (11 by maintainers)
For CrushFTP servers you could limit the concurrency to 1 (see the config options that can be passed to
fastPut()
) until the problem is resolved.It’s hard to say about FlashFXP. Are you sure it’s using SFTP and not FTP/FTPS? I could not find any information on how it transfers files via SFTP, maybe it performs at most one write at any given time for a file? It’s hard to say with closed source products 😃
Like I said, calling
fastPut()
with a concurrency of 1 should always work (this is equivalent to usingsftp.createWriteStream()
though). I am not sure what you mean by using ‘put’ instead of ‘fastPut’.@adamtal3 Right, I was working on a separate reply to your other scenario: 😃
Regarding connection reset, it looks sudden, so there is no apparent reason for the connection to be interrupted. Perhaps server-side logging will help in that case?
I’ve also tried to duplicate the problems with the CrushFTP server you’ve tried, but downloading worked for me every time (with the same 90MB file used for testing with the first (Rebex) server). I tried uploading a file and while the uploaded file size was correct, it seems CrushFTP isn’t writing the file correctly when there is more than one outstanding write at any given time. It writes some chunks to the file as all zeros. My guess is that they also have a bug, since I have verified
ssh2
is sending the correct file offsets and data in each chunk.I have also sent CrushFTP support an email about it.
Ok, it seems the problem is with the server implementation. They are sending 13 more bytes (32781 total) than the max packet size (32768) we requested for the sftp channel.
EDIT: I’ve sent Rebex an email about it.