| |
|
|
|
cURL Mailing List Monthly Index Single Mail
curl-library Mailing List Archives
RE: libcurl and libssh2
From: Xu, Qiang (FXSGSC) <Qiang.Xu_at_fujixerox.com>
Date: Tue, 20 Oct 2009 15:29:50 +0800
> -----Original Message-----
I have generated the sample code with sftp upload:
However, the generated code doesn't specify the local filename (or filepointer) to be uploaded. I understand that this can be set by CURLOPT_READDATA in real coding. Still, I am not sure whether a callback function is necessary with the option CURLOPT_READFUNCTION. Or, is it optional?
By the way, the prototype of the callback looks pretty similar to C function fread():
Function pointer that should match the following prototype: size_t function( void *ptr, size_t size, size_t nmemb, void *stream); This function gets called by libcurl as soon as it needs to read data in order to send it to the peer. The data area pointed at by the pointer ptr may be filled with at most size multiplied with nmemb number of bytes. Your function must return the actual number of bytes that you stored in that memory area. Returning 0 will signal end-of-file to the library and cause it to stop the current transfer.
If you stop the current transfer by returning 0 "pre-maturely" (i.e before the server expected it, like when you've said you will upload N bytes and you upload less than N bytes), you may experience that the server "hangs" waiting for the rest of the data that won't come.
The read callback may return CURL_READFUNC_ABORT to stop the current operation immediately, resulting in a CURLE_ABORTED_BY_CALLBACK error code from the transfer (Added in 7.12.1)
From 7.18.0, the function can return CURL_READFUNC_PAUSE which then will cause reading from this connection to become paused. See curl_easy_pause(3) for further details.
If you set the callback pointer to NULL, or don't set it at all, the default internal read function will be used. It is simply doing an fread() on the FILE * stream set with CURLOPT_READDATA.
/* from K&R, 2nd Edition, Page 247 */
Thanks,
-------------------------------------------------------------------
These mail archives are generated by hypermail. |
Page updated November 12, 2010.
web site info