X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fntp.cpp;h=84f3301071015994a4ac15584c958f1ff9161711;hb=100f0fef9528c03cfaa55ab39c3fbf8f84ea3c14;hp=c46991e0c88cd9917751757a4f874a995310498d;hpb=337a66b52c0296b218bdd0f2e24a84a0d451fb11;p=novacoin.git diff --git a/src/ntp.cpp b/src/ntp.cpp index c46991e..84f3301 100644 --- a/src/ntp.cpp +++ b/src/ntp.cpp @@ -81,7 +81,7 @@ struct pkt { const int nServersCount = 147; -const std::string NtpServers[147] = { +std::string NtpServers[147] = { // Microsoft "time.windows.com", @@ -262,7 +262,7 @@ const std::string NtpServers[147] = { // ... To be continued }; -bool InitWithHost(const std::string &strHostName, SOCKET &sockfd, socklen_t &servlen, struct sockaddr *pcliaddr) { +bool InitWithHost(std::string &strHostName, SOCKET &sockfd, socklen_t &servlen, struct sockaddr *pcliaddr) { sockfd = -1; std::vector vIP; @@ -348,7 +348,7 @@ int64_t DoReq(SOCKET sockfd, socklen_t servlen, struct sockaddr cliaddr) { int len=48; int retcode = sendto(sockfd, (char *) msg, len, 0, &cliaddr, servlen); if (retcode < 0) { - printf("sendto() failed: %d", retcode); + printf("sendto() failed: %d\n", retcode); return -3; } @@ -359,7 +359,7 @@ int64_t DoReq(SOCKET sockfd, socklen_t servlen, struct sockaddr cliaddr) { retcode = select(sockfd + 1, &fdset, NULL, NULL, &timeout); if (retcode <= 0) { - printf("recvfrom() error"); + printf("recvfrom() error\n"); return -4; } @@ -391,7 +391,7 @@ int64_t NtpGetTime(CNetAddr& ip) { return nTime; } -int64_t NtpGetTime(const std::string &strHostName) +int64_t NtpGetTime(std::string &strHostName) { struct sockaddr cliaddr; @@ -426,7 +426,7 @@ void ThreadNtpSamples(void* parg) { printf("Trying to find NTP server at localhost...\n"); - const std::string strLocalHost = "127.0.0.1"; + std::string strLocalHost = "127.0.0.1"; if (NtpGetTime(strLocalHost) == GetTime()) { printf("There is NTP server active at localhost, we don't need NTP thread.\n"); @@ -443,18 +443,19 @@ void ThreadNtpSamples(void* parg) { CMedianFilter vTimeOffsets(200,0); while (!fShutdown) { - if (strTrustedUpstream != strLocalHost) { + if (strTrustedUpstream != "localhost") { // Trying to get new offset sample from trusted NTP server. int64_t nClockOffset = NtpGetTime(strTrustedUpstream) - GetTime(); if (abs64(nClockOffset) < nMaxOffset) { // Everything seems right, remember new trusted offset. + printf("ThreadNtpSamples: new offset sample from %s, offset=%" PRId64 ".\n", strTrustedUpstream.c_str(), nClockOffset); nNtpOffset = nClockOffset; } else { // Something went wrong, disable trusted offset sampling. nNtpOffset = INT64_MAX; - strTrustedUpstream = strLocalHost; + strTrustedUpstream = "localhost"; int nSleepMinutes = 1 + GetRandInt(9); // Sleep for 1-10 minutes. for (int i = 0; i < nSleepMinutes * 60 && !fShutdown; i++) @@ -472,15 +473,16 @@ void ThreadNtpSamples(void* parg) { int64_t nClockOffset = NtpGetTime(ip) - GetTime(); if (abs64(nClockOffset) < nMaxOffset) { // Skip the deliberately wrong timestamps + printf("ThreadNtpSamples: new offset sample from %s, offset=%" PRId64 ".\n", ip.ToString().c_str(), nClockOffset); vTimeOffsets.input(nClockOffset); } } - if (vTimeOffsets.size() > 2) { + if (vTimeOffsets.size() > 1) { nNtpOffset = vTimeOffsets.median(); } else { - // Not enough offsets yet, try again later. + // Not enough offsets yet, try to collect additional samples later. nNtpOffset = INT64_MAX; int nSleepMinutes = 1 + GetRandInt(4); // Sleep for 1-5 minutes. for (int i = 0; i < nSleepMinutes * 60 && !fShutdown; i++)