Hi, I am looking for some guidance, I am having an issue related to libssh2_sftp_write write ahead. I am attempting to sftp write multiple files. Small files appear to be being transferred fine, large file writes are incomplete. Regarding the write ahead documentation below, how does one determine when the complete file has been written before invoking libssh2_sftp_write() again? Does libssh2 provide any mechanism or reference for how to determine this?
------------------------------------------------------------------- https://www.libssh2.org/libssh2_sftp_write.html WRITE AHEAD Starting in libssh2 version 1.2.8, the default behavior of libssh2 is to create several smaller outgoing packets for all data you pass to this function and it will return a positive number as soon as the first packet is acknowledged from the server. This has the effect that sometimes more data has been sent off but isn't acked yet when this function returns, and when this function is subsequently called again to write more data, libssh2 will immediately figure out that the data is already received remotely. In most normal situation this should not cause any problems, but it should be noted that if you've once called libssh2_sftp_write() with data and it returns short, you MUST still assume that the rest of the data might've been cached so you need to make sure you don't alter that data and think that the version you have in your next function invoke will be detected or used. The reason for this funny behavior is that SFTP can only send 32K data in each packet and it gets all packets acked individually. This means we cannot use a simple serial approach if we want to reach high performance even on high latency connections. And we want that. ------------------------------------------------------------------- -- Reid Thompson Senior Software Engineer Crunchy Data, Inc. reid.thomp...@crunchydata.com www.crunchydata.com -- libssh2-devel mailing list libssh2-devel@lists.haxx.se https://lists.haxx.se/listinfo/libssh2-devel