Dmitry Timoshkov : mstask: Retry with a timeout if opening a job file has failed.
Module: wine Branch: master Commit: 5c85a243109e61ec6751c09f03899c0103012d92 URL: https://source.winehq.org/git/wine.git/?a=commit;h=5c85a243109e61ec6751c09f0... Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Thu May 31 12:21:05 2018 +0800 mstask: Retry with a timeout if opening a job file has failed. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mstask/task.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/dlls/mstask/task.c b/dlls/mstask/task.c index 91d2cb6..266029a 100644 --- a/dlls/mstask/task.c +++ b/dlls/mstask/task.c @@ -1398,7 +1398,7 @@ static HRESULT WINAPI MSTASK_IPersistFile_Load(IPersistFile *iface, LPCOLESTR fi TaskImpl *This = impl_from_IPersistFile(iface); HRESULT hr; HANDLE file, mapping; - DWORD access, sharing, size; + DWORD access, sharing, size, try; void *data; TRACE("(%p, %s, 0x%08x)\n", iface, debugstr_w(file_name), mode); @@ -1432,11 +1432,18 @@ static HRESULT WINAPI MSTASK_IPersistFile_Load(IPersistFile *iface, LPCOLESTR fi break; } - file = CreateFileW(file_name, access, sharing, NULL, OPEN_EXISTING, 0, 0); - if (file == INVALID_HANDLE_VALUE) + try = 1; + for (;;) { - TRACE("Failed to open %s, error %u\n", debugstr_w(file_name), GetLastError()); - return HRESULT_FROM_WIN32(GetLastError()); + file = CreateFileW(file_name, access, sharing, NULL, OPEN_EXISTING, 0, 0); + if (file != INVALID_HANDLE_VALUE) break; + + if (try++ >= 3) + { + TRACE("Failed to open %s, error %u\n", debugstr_w(file_name), GetLastError()); + return HRESULT_FROM_WIN32(GetLastError()); + } + Sleep(100); } size = GetFileSize(file, NULL);
participants (1)
-
Alexandre Julliard