Hi Jacek,
From: Jacek Caban jacek@codeweavers.com Subject: Re: urlmon/tests: Fix protocol tests when proxy is configured
Ge van Geldorp wrote:
There is a large amount of proxy configurations possible on Windows (WPAD, proxy.pac, fixed proxy values), which might behave differently on a second run of the protocol test compared to the first run. These configurations influence when/how IInternetProtocolSink methods are called. For example, with a standard, direct connection you'll get the following ReportProgress notifications during the https test: BINDSTATUS_FINDINGRESOURCE BINDSTATUS_CONNECTING BINDSTATUS_SENDINGREQUEST BINDSTATUS_ACCEPTRANGES BINDSTATUS_MIMETYPEAVAILABLE However, when you run the protocol test for the second time on a machine with a fixed proxy server configured, you'll only get these notifications: BINDSTATUS_SENDINGREQUEST BINDSTATUS_ACCEPTRANGES BINDSTATUS_MIMETYPEAVAILABLE
When a proxy is used, the BINDSTATUS_FINDINGRESOURCE and BINDSTATUS_CONNECTING notifications report the hostname/ip address of the proxy server, not the end destination.
I can't see this behavior in tests results, where do you see them? Which IE version is it?
This started when investigated the failures reported here: http://test.winehq.org/data/8b10dd2a8daed738527f92aa89104c8647e4535c/2003_gv g-w2k3r2sesp2/urlmon:protocol.html. This is a Windows 2003 R2 Standard Edition SP2 machine with IE6. The status 32 shown there is BINDSTATUS_PROXYDETECTING. It turns out that on this particular machine "Automatically detect settings" (aka WPAD) was activated. The full sequence of of ReportProtress notifications for the https test was:
BINDSTATUS_FINDINGRESOURCE BINDSTATUS_CONNECTING BINDSTATUS_PROXYDETECTING BINDSTATUS_CONNECTING BINDSTATUS_SENDINGREQUEST BINDSTATUS_ACCEPTRANGES BINDSTATUS_MIMETYPEAVAILABLE
I then started experimenting on that machine with various proxy settings. I found that this sequence happens on the first run with WPAD configured but no wpad.mydomain.mytld available. On a second run it seems the info that no wpad was available was cached, I got "standard" behavior. If I configured a wpad.mydomain.mytld domain the sequence would also revert back to "standard" on the first run (whether there was a wpad.dat file available from that host or not didn't seem to matter, there just needs to be a wpad.mydomain.mytld DNS entry). When a proxy was indeed configured via WPAD, the BINDSTATUS_FINDINGRESOURCE and BINDSTATUS_CONNECTING notifications reported the hostname/ip address of the proxy server. Next I experimented with "Use automatic configuration script" (aka proxy.pac). I found that in that case the "standard" notification sequence was used, but still with the proxy server hostname/ip address. Finally I set a manual proxy server. In that case, the first time I run the test I get the "standard" sequence, but on the second (and later) runs I see the very minimal sequence mentioned in my original post. So most of the behavior was seen in one-off experimentation. If you want, I can set up some machines to report some of the behaviors to test.winehq.org.
Also, you have to make sure that each SET_EXPECT is followed by CHECK_CALLED (or CLEAR_CALLED if you want to ignore that function was not called).
Ok, thanks, I'll take care of that.
Ge.