summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--osdep/OSUtils.cpp6
-rw-r--r--osdep/OSUtils.hpp2
-rw-r--r--service/OneService.cpp7
3 files changed, 11 insertions, 4 deletions
diff --git a/osdep/OSUtils.cpp b/osdep/OSUtils.cpp
index 30349285..0257458a 100644
--- a/osdep/OSUtils.cpp
+++ b/osdep/OSUtils.cpp
@@ -133,7 +133,7 @@ std::vector<std::string> OSUtils::listDirectory(const char *path,bool includeDir
return r;
}
-long OSUtils::cleanDirectory(const char *path,const uint64_t olderThan)
+long OSUtils::cleanDirectory(const char *path,const int64_t olderThan)
{
long cleaned = 0;
@@ -150,7 +150,7 @@ long OSUtils::cleanDirectory(const char *path,const uint64_t olderThan)
date.LowPart = ffd.ftLastWriteTime.dwLowDateTime;
if (date.QuadPart > 0) {
date.QuadPart -= adjust.QuadPart;
- if ((uint64_t)((date.QuadPart / 10000000) * 1000) < olderThan) {
+ if ((int64_t)((date.QuadPart / 10000000) * 1000) < olderThan) {
ztsnprintf(tmp, sizeof(tmp), "%s\\%s", path, ffd.cFileName);
if (DeleteFileA(tmp))
++cleaned;
@@ -176,7 +176,7 @@ long OSUtils::cleanDirectory(const char *path,const uint64_t olderThan)
if ((strcmp(dptr->d_name,"."))&&(strcmp(dptr->d_name,".."))&&(dptr->d_type == DT_REG)) {
ztsnprintf(tmp,sizeof(tmp),"%s/%s",path,dptr->d_name);
if (stat(tmp,&st) == 0) {
- uint64_t mt = (uint64_t)(st.st_mtime);
+ int64_t mt = (int64_t)(st.st_mtime);
if ((mt > 0)&&((mt * 1000) < olderThan)) {
if (unlink(tmp) == 0)
++cleaned;
diff --git a/osdep/OSUtils.hpp b/osdep/OSUtils.hpp
index 8f66f850..45770b7f 100644
--- a/osdep/OSUtils.hpp
+++ b/osdep/OSUtils.hpp
@@ -142,7 +142,7 @@ public:
* @param olderThan Last modified older than timestamp (ms since epoch)
* @return Number of cleaned files or negative on fatal error
*/
- static long cleanDirectory(const char *path,const uint64_t olderThan);
+ static long cleanDirectory(const char *path,const int64_t olderThan);
/**
* Delete a directory and all its files and subdirectories recursively
diff --git a/service/OneService.cpp b/service/OneService.cpp
index 743f5a9a..e962fb5b 100644
--- a/service/OneService.cpp
+++ b/service/OneService.cpp
@@ -762,6 +762,7 @@ public:
int64_t lastTapMulticastGroupCheck = 0;
int64_t lastBindRefresh = 0;
int64_t lastUpdateCheck = clockShouldBe;
+ int64_t lastCleanedPeersDb = 0;
int64_t lastLocalInterfaceAddressCheck = (clockShouldBe - ZT_LOCAL_INTERFACE_CHECK_INTERVAL) + 15000; // do this in 15s to give portmapper time to configure and other things time to settle
for(;;) {
_run_m.lock();
@@ -856,6 +857,12 @@ public:
_node->addLocalInterfaceAddress(reinterpret_cast<const struct sockaddr_storage *>(&(*i)));
}
+ // Clean peers.d periodically
+ if ((now - lastCleanedPeersDb) >= 3600000) {
+ lastCleanedPeersDb = now;
+ OSUtils::cleanDirectory((_homePath + ZT_PATH_SEPARATOR_S "peers.d").c_str(),now - 2592000000LL); // delete older than 30 days
+ }
+
const unsigned long delay = (dl > now) ? (unsigned long)(dl - now) : 100;
clockShouldBe = now + (uint64_t)delay;
_phy.poll(delay);