Ticket #112 (closed defect)

Opened 8 years ago

Last modified 8 years ago

Hang in libssh2_sftp_readdir

Reported by: heymac Owned by: bagder
Priority: normal Milestone:
Component: SFTP Version:
Keywords: Cc: heymac, bagder
Blocked By: Blocks:


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:

SHA: b95fe985af3c80a2babcaaaf7da69a15b1237c49
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!

Change History

comment:1 Changed 8 years ago by bagder

That commit has been reverted. Does your code run fine against the current git code then?

comment:2 Changed 8 years ago by sf-robot

This Tracker item was closed automatically by the system. It was
previously set to a Pending status, and the original submitter
did not respond within 14 days (the time period specified by
the administrator of this Tracker).

Note: See TracTickets for help on using tickets.