Ticket #112 (closed defect)
Hang in libssh2_sftp_readdir
|Reported by:||heymac||Owned by:||bagder|
First off, thanks for your hard work on libssh2. It's tremendously useful project! I have an iPhone application that uses libssh2 (Briefcase). The current version of it has been pretty solid, using libssh2 v0.18.
I'm working on a bug fix release, and I'm using the git master branch of libssh2. I had tried using the 1.1 branch, but I hit the timing bug where channel reads would sometimes return 0 bytes. That problem is fixed for me, but now I have a new problem.
Now, I'm getting sporadic hangs when calling libssh2_sftp_readdir. This only happens when I'm accessing remote Linux servers (e.g. my Web Faction and Dreamhost servers). Local directory reads of OS X machines on my WiFi? network seem reliable.
I tried building my application against different versions of libssh2. It could read directories reliably up until the following commit:
Author: Daniel Stenberg <daniel@…>
Date: Wed May 20 2009 08:30:05 GMT-0400 (EDT)
Subject: If recv() returns something less than the full buffer we know we're done for now, so skip looping and doing another read that then simply will cause an EAGAIN as it may trick the user into believing things that aren't true.
Something in this change caused libssh2_sftp_readdir to have problems. If I back up one commit from this, then my directory reads are fine.
Let me know if you need more details!