Commit e8d2b543 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

urlmon: Unlock protocol only if it was locked.

parent 451a8a6d
...@@ -91,6 +91,7 @@ struct Binding { ...@@ -91,6 +91,7 @@ struct Binding {
LPWSTR url; LPWSTR url;
BOOL verified_mime; BOOL verified_mime;
DWORD continue_call; DWORD continue_call;
BOOL request_locked;
DWORD apartment_thread; DWORD apartment_thread;
HWND notif_hwnd; HWND notif_hwnd;
...@@ -871,8 +872,10 @@ static HRESULT WINAPI InternetProtocolSink_ReportData(IInternetProtocolSink *ifa ...@@ -871,8 +872,10 @@ static HRESULT WINAPI InternetProtocolSink_ReportData(IInternetProtocolSink *ifa
if(grfBSCF & BSCF_LASTDATANOTIFICATION) if(grfBSCF & BSCF_LASTDATANOTIFICATION)
on_progress(This, ulProgress, ulProgressMax, BINDSTATUS_ENDDOWNLOADDATA, This->url); on_progress(This, ulProgress, ulProgressMax, BINDSTATUS_ENDDOWNLOADDATA, This->url);
if(grfBSCF & BSCF_FIRSTDATANOTIFICATION) if(!This->request_locked) {
IInternetProtocol_LockRequest(This->protocol, 0); HRESULT hres = IInternetProtocol_LockRequest(This->protocol, 0);
This->request_locked = SUCCEEDED(hres);
}
on_data_available(This, grfBSCF); on_data_available(This, grfBSCF);
...@@ -1155,6 +1158,7 @@ static HRESULT Binding_Create(LPCWSTR url, IBindCtx *pbc, REFIID riid, Binding * ...@@ -1155,6 +1158,7 @@ static HRESULT Binding_Create(LPCWSTR url, IBindCtx *pbc, REFIID riid, Binding *
ret->notif_hwnd = get_notif_hwnd(); ret->notif_hwnd = get_notif_hwnd();
ret->verified_mime = FALSE; ret->verified_mime = FALSE;
ret->continue_call = 0; ret->continue_call = 0;
ret->request_locked = FALSE;
ret->task_queue_head = ret->task_queue_tail = NULL; ret->task_queue_head = ret->task_queue_tail = NULL;
memset(&ret->bindinfo, 0, sizeof(BINDINFO)); memset(&ret->bindinfo, 0, sizeof(BINDINFO));
...@@ -1240,6 +1244,7 @@ HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv) ...@@ -1240,6 +1244,7 @@ HRESULT start_binding(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv)
} }
if(binding->stream->init_buf) { if(binding->stream->init_buf) {
if(binding->request_locked)
IInternetProtocol_UnlockRequest(binding->protocol); IInternetProtocol_UnlockRequest(binding->protocol);
IStream_AddRef(STREAM(binding->stream)); IStream_AddRef(STREAM(binding->stream));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment