cURL / Mailing Lists / curl-library / Single Mail

curl-library

Strange discrepancy between XP & Vista

From: jérôme Muffat-Méridol <jmuffat_at_webphotomag.com>
Date: Thu, 29 Nov 2007 12:51:27 +0100

Hi,

This is my first application using libCurl, so I may well be getting
things wrong in places.

The app I am working on is called gpuViewer, it can be downloaded at
www.gpuviewer.com .

The feature where I have problems with libCurl is the map (which can
be activated in the online version by pressing 'M', if you want to see
the problem). I am reading tiles from a map server, as you zoom in and
out. Problem: sometimes, the wrong tile is obtained.

Strange thing: if I compile the app targetting Vista, there is no
problem (or it becomes so rare I have not encountered it). A bit of
find-in-files tells me that the only difference is the use of WSAPoll
in this case.

My use of libCurl is based on the code I found in samples and feels
ok. There is one Multi Handle to which Easy Handles are added as new
tiles get into view. On each animation frame, a method updating the
Multi Handle is called.

It checks for messages (looping on curl_multi_info_read). Then it
calls select, to check if any transfer has finished. Finally, it loops
on curl_multi_perform until something else than
CURLM_CALL_MULTI_PERFORM is returned.

There is also a round of curl_multi_perform every time a new Easy
Handle is added to the Multi (to get things started).

Now, the peculiarity of this type of use is that I end up cancelling a
lot of transfers. This is done by curl_multi_remove_handle followed by
curl_easy_cleanup.

I should also mention that I managed the connection between my C++
objects and the handles by storing my pointers in the CURLINFO_PRIVATE
field.

Does that sound familiar to anyone ?
Any hint appreciated, I think I'm just looking in the wrong place
(it's very probably somewhere in my code) but the fact that it seems
to work fine in Vista is puzzling me.

Thanks
Jérôme
Received on 2007-11-29