On Wed, 2013-09-04 at 18:16 +0200, Jacek Caban wrote: > On 09/04/13 15:36, Hans Leidekker wrote: > > On Wed, 2013-09-04 at 15:28 +0200, Jacek Caban wrote: > >> On 09/04/13 15:01, Hans Leidekker wrote: > >>> + /* don't allow this connection to be reused */ > >>> + InternetSetOptionW(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0); > >> There must be a better way to do that than removing all existing wininet > >> cached connections to all hosts. Removing INTERNET_FLAG_KEEP_CONNECTION > >> from HttpOpenRequest call would be a good start... > > We can't do that, it breaks NTLM and Negotiate. > > Hmm, right. Thinking more about this, I don't see how this connection > could be reused. RPC over HTTP shouldn't reach the end of the stream, so > it can't be reused once the connection is established, even if client > closes the handle. If it is, that's probably a bug in wininet. When did > you see this to happen?
It happens when Outlook connects to Exchange, closes the connection and then reconnects. I didn't trust wininet either and wrote a standalone test to mimic the consecutive connects. It showed that wininet is right in reusing the connection, though I didn't perform any reads or writes. You say that reuse depends on reaching end of stream, so this might actually be a variation of the other bug, which is that in chunked mode we can't know whether we reached end of stream.