Now that we're counting ProgressInputStream leaks, we do indeed seem to be leaking them, on IE. In particular, testPostRedirectBackToCache() in test/testcases/localserver_tests.js is one test case that has a reliable leak. I think the key factors in this case is that we're doing a HTTP POST to /testcases/cgi/server_redirect.py, which as its name suggests, returns a 302. Changing that HttpRequest to point to a URL that 404's, for example, doesn't leak.
I'm poking around in localserver/ie/http_request_ie.cc, but it's not obvious to me what's going on, since I'm unfamiliar with urlmon, or really the whole IMoniker thing. For example, should we be responsible for calling ReleaseBindInfo at any point (currently we don't)? Does calling BindToStorage with a CComPtr<IStream> be a possible source of an unbalanced AddRef to ProgressInputStream and do we need to unbind storage at some point? Is the fact that we're pushing the ProgressInputStream into a stgmedData, in IEHttpRequest::GetBindInfo, be related to this leak? I can keep poking around, but I was just wondering if you (Michael), or anyone else, had any hints.
