Module: wine Branch: master Commit: 95c1b74fc9fe4525f2314570aa422401fc40d865 URL: http://source.winehq.org/git/wine.git/?a=commit;h=95c1b74fc9fe4525f2314570aa...
Author: Jacek Caban jacek@codeweavers.com Date: Fri May 25 16:35:32 2012 +0200
wininet: Store server_t on the list until clean up.
---
dlls/wininet/http.c | 21 +++++++++------------ dlls/wininet/internet.h | 1 - 2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c index 50f77df..e32dde6 100644 --- a/dlls/wininet/http.c +++ b/dlls/wininet/http.c @@ -242,8 +242,10 @@ void server_release(server_t *server) if(InterlockedDecrement(&server->ref)) return;
- if(!server->ref) - server->keep_until = GetTickCount64() + COLLECT_TIME; + list_remove(&server->entry); + + heap_free(server->name); + heap_free(server); }
static server_t *get_server(const WCHAR *name, INTERNET_PORT port) @@ -264,7 +266,7 @@ static server_t *get_server(const WCHAR *name, INTERNET_PORT port) server = heap_alloc(sizeof(*server)); if(server) { server->addr_len = 0; - server->ref = 1; + server->ref = 2; /* list reference and return */ server->port = port; server->security_flags = 0; list_init(&server->conn_pool); @@ -303,15 +305,10 @@ BOOL collect_connections(BOOL collect_all) } }
- if(!server->ref) { - if(collect_all || server->keep_until < now) { - list_remove(&server->entry); - - heap_free(server->name); - heap_free(server); - }else { - remaining = TRUE; - } + if(collect_all) { + list_remove(&server->entry); + list_init(&server->entry); + server_release(server); } }
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h index bf11e6d..30869d9 100644 --- a/dlls/wininet/internet.h +++ b/dlls/wininet/internet.h @@ -61,7 +61,6 @@ typedef struct { char addr_str[INET6_ADDRSTRLEN];
LONG ref; - DWORD64 keep_until;
DWORD security_flags;