diff --git "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\ntpclient.c" "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\ntpclient.c" index 7442b49150..37a1af1272 100644 --- "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\ntpclient.c" +++ "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\ntpclient.c" @@ -4,6 +4,7 @@ * FILE: dll/cpl/timedate/ntpclient.c * PURPOSE: Queries the NTP server * COPYRIGHT: Copyright 2006 Ged Murphy + * Copyright 2017 Doug Lyons * */ @@ -121,15 +122,15 @@ ReceiveData(PINFO pInfo) if ((Ret != SOCKET_ERROR) && (Ret != 0)) { - Ret = recvfrom(pInfo->Sock, (char *)&pInfo->RecvPacket, sizeof(pInfo->RecvPacket), 0, NULL, NULL); + if (Ret != SOCKET_ERROR) - ulTime = ntohl(ulTime); + ulTime = ntohl(pInfo->RecvPacket.TransmitTimestamp.dwInteger); } return ulTime; diff --git "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\internettime.c" "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\internettime.c" index 9f0b851451..e6636a6a90 100644 --- "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\internettime.c" +++ "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\internettime.c" @@ -258,7 +258,8 @@ UpdateSystemTime(ULONG ulTime) return; } - if (!SystemSetLocalTime(&stNew)) + /* Use SystemSetTime with SystemTime = TRUE to set System Time */ + if (!SystemSetTime(&stNew, TRUE)) DisplayWin32Error(GetLastError()); } diff --git "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\dateandtime.c" "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\dateandtime.c" index c51e175cc9..c055baab8e 100644 --- "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\dateandtime.c" +++ "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\dateandtime.c" @@ -14,7 +14,8 @@ static WNDPROC pOldWndProc = NULL; BOOL -SystemSetLocalTime(LPSYSTEMTIME lpSystemTime) +SystemSetTime(LPSYSTEMTIME lpSystemTime, + BOOL SystemTime) { HANDLE hToken; DWORD PrevSize; @@ -45,11 +46,18 @@ SystemSetLocalTime(LPSYSTEMTIME lpSystemTime) GetLastError() == ERROR_SUCCESS) { /* - * We successfully enabled it, we're permitted to change the system time + * We successfully enabled it, we're permitted to change the time + * Check the second parameter for SystemTime and if TRUE set System Time + * Otherwise, if FALSE set the Local Time * Call SetLocalTime twice to ensure correct results */ - Ret = SetLocalTime(lpSystemTime) && - SetLocalTime(lpSystemTime); + { + if (SystemTime) + Ret = SetSystemTime(lpSystemTime); + else + Ret = SetLocalTime(lpSystemTime) && + SetLocalTime(lpSystemTime); + } /* * For the sake of security, restore the previous status again @@ -86,7 +94,8 @@ SetLocalSystemTime(HWND hwnd) (WPARAM)&Time, 0)) { - SystemSetLocalTime(&Time); + /* Set Local Time with SystemTime = FALSE */ + SystemSetTime(&Time, FALSE); SetWindowLongPtrW(hwnd, DWL_MSGRESULT, diff --git "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\timedate.h" "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\timedate.h" index 7442b49150..37a1af1272 100644 --- "a/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\timedate.h" +++ "b/D:\\ReactOS\\reactos\\dll\\cpl\\timedate\\timedate.h" @@ -39,7 +39,7 @@ extern HINSTANCE hApplet; /* dateandtime.c */ INT_PTR CALLBACK DateTimePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -BOOL SystemSetLocalTime(LPSYSTEMTIME lpSystemTime); +BOOL SystemSetTime(LPSYSTEMTIME lpSystemTime, BOOL SystemTime); /* timezone.c */