[PATCH 2/3] winhttp: Make cookie access thread safe.
Hans Leidekker
hans at codeweavers.com
Fri Oct 5 02:11:49 CDT 2018
Hi Jacek,
> diff --git a/dlls/winhttp/cookie.c b/dlls/winhttp/cookie.c
> index 63cbde7c3d..56c0821f2a 100644
> --- a/dlls/winhttp/cookie.c
> +++ b/dlls/winhttp/cookie.c
> @@ -286,7 +286,10 @@ BOOL set_cookies( request_t *request, const WCHAR *cookies )
> if (!cookie_path && !(cookie_path = strdupW( request->path ))) goto end;
>
> if ((p = strrchrW( cookie_path, '/' )) && p != cookie_path) *p = 0;
> +
> + EnterCriticalSection( &session->cs );
> ret = add_cookie( session, cookie, cookie_domain, cookie_path );
> + LeaveCriticalSection( &session->cs );
I would prefer to do this inside add_cookie, just like you do in add_cookie_headers.
> end:
> if (!ret) free_cookie( cookie );
> @@ -303,6 +306,8 @@ BOOL add_cookie_headers( request_t *request )
> struct list *domain_cursor;
> session_t *session = request->connect->session;
>
> + EnterCriticalSection( &session->cs );
> +
> LIST_FOR_EACH( domain_cursor, &session->cookie_cache )
> {
> domain_t *domain = LIST_ENTRY( domain_cursor, domain_t, entry );
> @@ -343,5 +348,7 @@ BOOL add_cookie_headers( request_t *request )
> }
> }
> }
> +
> + LeaveCriticalSection( &session->cs );
> return TRUE;
There's an error return in the middle that should unlock too.
More information about the wine-devel
mailing list