From c55e4e122f746d5f75bf00ea835fff1505e0acba Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 17 Apr 2019 14:31:49 +0200 Subject: [PATCH] ApiListener#RotateLogFile(): don't overwrite previous log (cherry picked from commit 997d84bfa0b8c53144590547bcffdb6d30695e9b) --- lib/remote/apilistener.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/remote/apilistener.cpp b/lib/remote/apilistener.cpp index 0a1574c27..b83be1c67 100644 --- a/lib/remote/apilistener.cpp +++ b/lib/remote/apilistener.cpp @@ -1095,13 +1095,11 @@ void ApiListener::RotateLogFile() String oldpath = GetApiDir() + "log/current"; String newpath = GetApiDir() + "log/" + Convert::ToString(static_cast(ts)+1); - -#ifdef _WIN32 - _unlink(newpath.CStr()); -#endif /* _WIN32 */ - - - (void) rename(oldpath.CStr(), newpath.CStr()); + // If the log is being rotated more than once per second, + // don't overwrite the previous one, but silently deny rotation. + if (!Utility::PathExists(newpath)) { + (void) rename(oldpath.CStr(), newpath.CStr()); + } } void ApiListener::LogGlobHandler(std::vector& files, const String& file) -- 2.40.0