http://qs321.pair.com?node_id=1008498

sdetweil has asked for the wisdom of the Perl Monks concerning the following question:

I have an application that runs on multiple platforms (windows, linux, solaris, aix, hpux). and uses SFTP to send files to our host server.
I needed a 64bit windows version, but the underlying libs for SFTP are not ported to 64bit windows (math::Pari, etc)..
so I rewrote the function to use SFTP:Foreign and use SSH2. all works ok so far.. today I received a trouble report, the ftp send fails, leaving a 0 length file on the server.

I am trying to figure out how to debug this..

use Net::SSH2; use Net::SFTP::Foreign; my $ssh2 = Net::SSH2->new(); $ssh2->debug($debugFlag eq $true ? 1:0); $ssh2->connect($ftpSecureServer) or die "Connect failed!\n"; $ssh2->auth_password($ftpUser, $ftpPW) or die "password auth failed\n"; $ftp = Net::SFTP::Foreign->new(ssh2 => $ssh2, backend => 'Net_SSH2');
from this
$ftp = Net::SFTP::Foreign-> new(host => $ftpSecureServer, backend => 'Net_SSH2', user => $ftpUser, password => $ftpPW);
both use this code to actually send
$ftp->put( $zipFileName, $ftpDir."/" . $newname ); if ( !$@ ) { printl("Transmission complete..\n"); $rc = $true; } else { printl("file $zipFileName upload failed, try later\n"); }
the 32 SFTP version does
$ftp->put( $zipFileName, $newname ); if ( !$error ) { # etc
setting SSH2 debug gets me the gory details, but nothing really useful
libssh2_channel_open_ex(ss->session, pv_channel_type, len_channel_type +, window_s ize, packet_size, ((void *)0) , 0 ) -> 0x47dc418 Net::SSH2::Channel::read(size = 4, ext = 0) - read 4 bytes - read 4 total Net::SSH2::Channel::read(size = 5, ext = 0) - read 5 bytes - read 5 total
anyone have any suggestions?