On 04/24/2012 12:15 AM, Timothy Pearson wrote:
Yes, but 3.5.10 was working during the OpenSSH <=5.5p1 days. Perhaps
something changed >5.5p1 that causes that snippet to now fail?
Darrell
The thing is, that snippet should never work in the first place. Miracle engineering, even if it worked in 3.5.10, usually fails once assumed conditions change.
Tim
Tim,
I did a test between the 'ssh -v' output of 'OpenSSH_5.0p1, OpenSSL 0.9.8g 19 Oct 2007' and 'OpenSSH_5.9p1, OpenSSL 1.0.1 14 Mar 2012'. Here are the key differences:
===== OpenSSH_5.0p1 =====
08:10 nemesis:~> ssh -v -p 6662 archangel.3111skyline.com OpenSSH_5.0p1, OpenSSL 0.9.8g 19 Oct 2007 debug1: Reading configuration data /home/david/.ssh/config debug1: Applying options for archangel.3111skyline.com debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to archangel.3111skyline.com [192.168.6.14] port 6662. debug1: Connection established.
===== OpenSSH_5.9p1 =====
21:02 archangel:/dat_e> ssh -v nirvana OpenSSH_5.9p1, OpenSSL 1.0.1 14 Mar 2012 debug1: Reading configuration data /home/david/.ssh/config debug1: /home/david/.ssh/config line 26: Applying options for nirvana debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to nirvana [192.168.6.17] port 6660. debug1: Connection established.
Looking, it seems the differences are lines '3' (5.9 provides path info to local ssh config - 5.0 simply says 'Applying options...'). I don't think this is it. Line '5' is totally MISSING in 5.9! If the current kio_sftp is relying on line '6' for the IP and port information -- it will totally fail because that information is now LINE '5'.
This would explain why sftp got 'stuck' waiting on select() as Tim found! Somewhere in the sftp code, it must be checking on the ssh output beginning with line '6' looking for IP and port information:
debug1: Connecting to nirvana [192.168.6.17] port 6660.
however, with 5.9 it is getting:
debug1: Connection established.
Causing the code to endlessly wait on select() to get the IP and port!! Now - how to find where this takes place in the code to confirm?? It is probably a hardcoded as some array index like 'sshOutputLine[5]' which will now need to be changed to 'sshOutputLine[4]' to account for the deleted line in the output, or just rewritten with a regex to look for "[www.xxx.yyy.zzz] port 01234" in the output.
How do we look for code like this to rule in or rule out this problem?