Hi,

First of all thanks a lot for your response(more so bcoz of weekend).
I have read the example scp_write_nonblock and using non-blocking socket in my 
code.
Following is the callback function when socket becomes writable.
This works most of the time. But some times mostly for remote HP-UX host, the 
transferred file shows correct size but is not proper(checksum)
Please let me know, if anything is wrong in this.


void scpChanWriteCB(ssh2_host_info *snp,ssh2_channel_info *schan,void* 
outParam) 

{
    int rc,errLen;   
    char buf[4096];
    char* ptr;
    int nread,sent;
    debug("scpChanWriteCB:Entry %s filesize %ld total sent 
%ld\n",snp->hostname,schan->fsize,schan->sent);
    nread = read(schan->fn,buf,4096);
    debug("scpChanWriteCB:file read %d",nread);
    if (nread <= 0) {
        close(schan->fn);
           while (libssh2_channel_send_eof(schan->channel) == 
LIBSSH2_ERROR_EAGAIN);

        while (libssh2_channel_wait_eof(schan->channel) == 
LIBSSH2_ERROR_EAGAIN);

        while (libssh2_channel_wait_closed(schan->channel) == 
LIBSSH2_ERROR_EAGAIN);
    
        schan->status = PROC_CHAN_FINISH;
        *(int*)outParam = H_READABLE;    
        return;
    }
    ptr = buf;
    sent = 0;
    do {
        /* write the same data over and over, until error or completion */
        rc = libssh2_channel_write(schan->channel, ptr, nread);
        if(rc < 0){
            if (LIBSSH2_ERROR_EAGAIN == rc) 
                continue;
            else{
                schan->status = PROC_CHAN_FINISH;
                *(int*)outParam = H_READABLE;
                break;
            } 
        } else {
            /* rc indicates how many bytes were written this time */
            sent += rc;
            schan->sent += rc;
        }
    } while (sent < nread);    
    debug("scpChanWriteCB:%d bytes sent with %d rc\n",sent,rc);
    *(int*)outParam = H_WRITABLE;
}







________________________________
From: "[email protected]" <[email protected]>
To: [email protected]
Sent: Sat, 9 April, 2011 3:30:03 PM
Subject: libssh2-devel Digest, Vol 23, Issue 5

Note: Forwarded message is attached.

Send libssh2-devel mailing list submissions to
    [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
    http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
or, via email, send a message with subject or body 'help' to
    [email protected]

You can reach the person managing the list at
    [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of libssh2-devel digest..."
Today's Topics:

   1. ssh protocol flow diagram (suyog jadhav)
   2. Re: ssh protocol flow diagram (Daniel Stenberg)
_______________________________________________
libssh2-devel mailing list
[email protected]
http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to