http://bugs.winehq.org/show_bug.cgi?id=31051
--- Comment #3 from Ron van der Wal support@tarma.com 2012-06-30 18:40:53 CDT --- Yes, the Publish or Perish [PoP] software (http://www.harzing.com/pop.htm) came across this problem.
We added an internal workaround for two Wine bugs in the PoP code to make sure that it would not get into an infinite loop, but that should not have been necessary.
The attached source code (taken verbatim from PoP) shows how HttpQueryInfo() is used and already includes two (2) workarounds for anomalous Wine behavior:
(1) For some values of dwInfoLevel, Wine's HttpQueryInfo() returns a nonzero (i.e., True) function value but zero (0) bytes of data; this should have been a FALSE function result because the requested header apparently doesn't exist.
WORKAROUND: We detect the case of dwReqSize == 0 separately
(2) For other values of dwInfoLevel, Wine's HttpQueryInfo() ignores the value in *lpdwIndex as reported earlier.
WORKAROUND: We calculate and remember a Fletcher-32 checksum on the returned data and compare that with the next iteration's checksum to see if Wine returns the same data; if so, we break the enumeration.