> I am not sure if this is a correct usage?  I will try this and run for a few 
> hours to see if the problem is >> resolved.

>                // set the put_data_callback function
>                curl_easy_setopt(curl, CURLOPT_PUT, true);
>               curl_easy_setopt(curl, CURLOPT_READDATA, &m_data);
>                curl_easy_setopt(curl, CURLOPT_READFUNCTION, 
> put_data_callback);
>
>                curl_easy_setopt(curl, CURLOPT_SEEKDATA, &m_data);
>                curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, 
> seek_data_callback);

>                curl_easy_perform(curl);


> struct put_data_t {
>              const char * data_start;
>                unsigned read_pos;
>                unsigned data_len;
>};

>int  seek_data_callback(void *userp,  curl_off_t offset, int origin)
>{
>                if (!userp)
>                                return 0;

>               put_data_t *userdata = (put_data_t *)userp;

>               if (offset > userdata->data_len)
>                      return CURL_SEEKFUNC_FAIL;


>               if (origin == SEEK_SET || origin == SEEK_CUR)
>              {
>                      userdata->read_pos = offset;
>                      return CURL_SEEKFUNC_OK;
>                }

>                if (origin == SEEK_END)
>                {
>                       userdata->read_pos = userdata->data_len;
>                       return CURL_SEEKFUNC_OK;
>                }

>                return CURL_SEEKFUNC_FAIL;
> }

The above code did not fix the problem. I added log message  in call back 
funcgtions. The log output is as follows. 

2012-01-24 22:59:22.000 (GMT-05:00) Write Data is 489 bytes
2012-01-24 22:59:22.000 (GMT-05:00) put_data_callback buff length 16372,  data 
passed in 489 bytes
2012-01-24 22:59:22.000 (GMT-05:00) seek_data_callback, offset: 0, origin: 0, 
data len: 0

Looks like the put_data_callback is not called again after seek_data callback 
with SEEK_SET operation(the seek_data_callback returns CURL_SEEKFUNC_OK) . Also 
the data passed back in seek_data_callback is not correct (the datalen should 
be 489, not 0). Maybe my implementation of seek_data_callback is not correct. 

Thanks,
Wenjun



  > / daniel.haxx.se
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to