[2/2] rpcrt4: Clear the connection pool when closing an http connection.

Jacek Caban jacek at codeweavers.com
Wed Sep 4 11:16:44 CDT 2013


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:
>>> ---
>>>  dlls/rpcrt4/rpc_transport.c | 2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c
>>> index d0857fa..1eb0151 100644
>>> --- a/dlls/rpcrt4/rpc_transport.c
>>> +++ b/dlls/rpcrt4/rpc_transport.c
>>> @@ -3234,6 +3234,8 @@ static int rpcrt4_ncacn_http_close(RpcConnection *Connection)
>>>    HeapFree(GetProcessHeap(), 0, httpc->servername);
>>>    httpc->servername = NULL;
>>>  
>>> +  /* 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?

Jacek



More information about the wine-devel mailing list