I've gotten a bit further.

As you recall, calling libssh2_trace(session, ~0);
(all debugging enabled) caused so much output to be generated that the
timing changed, and the hang during the SFTP upload went away.

So, I disabled various combinations of trace flags until I got the hang to
reappear.
Now I'm enabling just LIBSSH2_TRACE_ERROR.

I changed the last line of sftp_write in sftp.c to:
    return _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
      "Would block at end of sftp_write");

During the last write, the program now gets this:

...
libssh2_sftp_write 2 sent 8000 bytes        [This is a successful write]
[libssh2] 1.245994 Failure Event: -37 - Unable to send channel data
[libssh2] 1.245994 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.245994 Failure Event: -37 - Unable to send channel data
[libssh2] 1.245994 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.245994 Failure Event: -37 - Unable to send channel data
[libssh2] 1.245994 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.245994 Failure Event: -37 - Unable to send channel data
[libssh2] 1.245994 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.245994 Failure Event: -37 - Unable to send channel data
[libssh2] 1.245994 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.245994 Failure Event: -37 - Unable to send channel data
[libssh2] 1.245994 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.261619 Failure Event: -37 - Unable to send channel data
[libssh2] 1.261619 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.277244 Failure Event: -37 - Unable to send channel data
[libssh2] 1.277244 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.292869 Failure Event: -37 - Unable to send channel data
[libssh2] 1.292869 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.308494 Failure Event: -37 - Unable to send channel data
[libssh2] 1.308494 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.308494 Failure Event: -37 - Unable to send channel data
[libssh2] 1.308494 Failure Event: -37 - Would block at end of sftp_write
[libssh2] 1.308494 Failure Event: -37 - Would block at end of sftp_write

Every time I run it, it logs "Would block at end of sftp_write"
twice immediately before hanging.

A clue?

Mark












_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to