diff --git a/Win32/Win32App.cpp b/Win32/Win32App.cpp
index df345b11..1785ffd6 100644
--- a/Win32/Win32App.cpp
+++ b/Win32/Win32App.cpp
@@ -43,10 +43,7 @@ namespace i2p
{
namespace win32
{
- static DWORD GracefulShutdownEndtime = 0;
-
- typedef DWORD (* IPN)();
- IPN GetTickCountLocal = (IPN)GetProcAddress (GetModuleHandle ("KERNEL32.dll"), "GetTickCount");
+ DWORD g_GracefulShutdownEndtime = 0;
static void ShowPopupMenu (HWND hWnd, POINT *curpos, int wDefaultItem)
{
@@ -167,9 +164,9 @@ namespace win32
s << "; ";
s << "Success Rate: " << i2p::tunnel::tunnels.GetTunnelCreationSuccessRate() << "%\n";
s << "Uptime: "; ShowUptime(s, i2p::context.GetUptime ());
- if (GracefulShutdownEndtime != 0)
+ if (g_GracefulShutdownEndtime != 0)
{
- DWORD GracefulTimeLeft = (GracefulShutdownEndtime - GetTickCountLocal()) / 1000;
+ DWORD GracefulTimeLeft = (g_GracefulShutdownEndtime - GetTickCount()) / 1000;
s << "Graceful shutdown, time left: "; ShowUptime(s, GracefulTimeLeft);
}
else
@@ -247,7 +244,7 @@ namespace win32
i2p::context.SetAcceptsTunnels (false);
SetTimer (hWnd, IDT_GRACEFUL_SHUTDOWN_TIMER, 10*60*1000, nullptr); // 10 minutes
SetTimer (hWnd, IDT_GRACEFUL_TUNNELCHECK_TIMER, 1000, nullptr); // check tunnels every second
- GracefulShutdownEndtime = GetTickCountLocal() + 10*60*1000;
+ g_GracefulShutdownEndtime = GetTickCount() + 10*60*1000;
i2p::util::DaemonWin32::Instance ().isGraceful = true;
return 0;
}
@@ -256,7 +253,7 @@ namespace win32
i2p::context.SetAcceptsTunnels (true);
KillTimer (hWnd, IDT_GRACEFUL_SHUTDOWN_TIMER);
KillTimer (hWnd, IDT_GRACEFUL_TUNNELCHECK_TIMER);
- GracefulShutdownEndtime = 0;
+ g_GracefulShutdownEndtime = 0;
i2p::util::DaemonWin32::Instance ().isGraceful = false;
return 0;
}
@@ -343,7 +340,7 @@ namespace win32
{
case IDT_GRACEFUL_SHUTDOWN_TIMER:
{
- GracefulShutdownEndtime = 0;
+ g_GracefulShutdownEndtime = 0;
PostMessage (hWnd, WM_CLOSE, 0, 0); // exit
return 0;
}
diff --git a/Win32/Win32App.h b/Win32/Win32App.h
index d242f7d3..ebe49efd 100644
--- a/Win32/Win32App.h
+++ b/Win32/Win32App.h
@@ -15,6 +15,8 @@ namespace i2p
{
namespace win32
{
+ extern DWORD g_GracefulShutdownEndtime;
+
bool StartWin32App ();
void StopWin32App ();
int RunWin32App ();
diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp
index 59c530f9..ad549a00 100644
--- a/daemon/HTTPServer.cpp
+++ b/daemon/HTTPServer.cpp
@@ -270,8 +270,17 @@ namespace http {
}
s << "
\r\n";
#if ((!defined(WIN32) && !defined(QT_GUI_LIB) && !defined(ANDROID)) || defined(ANDROID_BINARY))
- if (auto remains = Daemon.gracefulShutdownInterval)
- s << "Stopping in: " << remains << " seconds
\r\n";
+ if (auto remains = Daemon.gracefulShutdownInterval) {
+ s << "Stopping in: ";
+ ShowUptime(s, remains);
+ s << "
\r\n";
+#elif defined(WIN32_APP)
+ if (i2p::win32::g_GracefulShutdownEndtime != 0) {
+ uint16_t remains = (i2p::win32::g_GracefulShutdownEndtime - GetTickCount()) / 1000;
+ s << "Stopping in: ";
+ ShowUptime(s, remains);
+ s << "
\r\n";
+ }
#endif
auto family = i2p::context.GetFamily ();
if (family.length () > 0)