Dmitry Timoshkov : mstask: Retry with a timeout if opening a job file has failed.
Alexandre Julliard
julliard at winehq.org
Thu May 31 15:56:56 CDT 2018
Module: wine
Branch: master
Commit: 5c85a243109e61ec6751c09f03899c0103012d92
URL: https://source.winehq.org/git/wine.git/?a=commit;h=5c85a243109e61ec6751c09f03899c0103012d92
Author: Dmitry Timoshkov <dmitry at 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 at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at 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);
More information about the wine-cvs
mailing list