diff options
author | Grant Limberg <grant.limberg@zerotier.com> | 2019-07-16 15:20:05 -0700 |
---|---|---|
committer | Grant Limberg <grant.limberg@zerotier.com> | 2019-07-16 15:20:05 -0700 |
commit | 861a319014b2536dbd22bcc925586bb63846f2ab (patch) | |
tree | bad00c70dd728d3749d9e134b952ab3db8622703 /controller | |
parent | d43e810ecbcb264e57d2b52138a3729b7667388a (diff) | |
parent | 90872c906fa0f415804873bb7388fea417e4252c (diff) | |
download | infinitytier-861a319014b2536dbd22bcc925586bb63846f2ab.tar.gz infinitytier-861a319014b2536dbd22bcc925586bb63846f2ab.zip |
Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev
Diffstat (limited to 'controller')
-rw-r--r-- | controller/FileDB.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/controller/FileDB.cpp b/controller/FileDB.cpp index 69573306..eb2ec00d 100644 --- a/controller/FileDB.cpp +++ b/controller/FileDB.cpp @@ -86,25 +86,26 @@ FileDB::FileDB(EmbeddedNetworkController *const nc,const Identity &myId,const ch FILE *f = fopen(p,"wb"); if (f) { fprintf(f,"{"); - char *memberPrefix = ""; + const char *memberPrefix = ""; for(auto m=nw->second.begin();m!=nw->second.end();++m) { fprintf(f,"%s\"%.10llx\":{" ZT_EOL_S,memberPrefix,(unsigned long long)m->first); memberPrefix = ","; InetAddress lastAddr; - char *timestampPrefix = " "; + const char *timestampPrefix = " "; int cnt = 0; - for(auto ts=m->second.rbegin();ts!=m->second.rend();++ts) { + for(auto ts=m->second.rbegin();ts!=m->second.rend();) { if (cnt < 25) { if (lastAddr != ts->second) { lastAddr = ts->second; fprintf(f,"%s\"%lld\":\"%s\"" ZT_EOL_S,timestampPrefix,(long long)ts->first,ts->second.toString(atmp)); timestampPrefix = ","; ++cnt; + ++ts; } else { - m->second.erase(ts.base()); // erase previous entries for same IP/port + ts = std::map<int64_t,InetAddress>::reverse_iterator(m->second.erase(std::next(ts).base())); } } else { - m->second.erase(ts.base()); // erase entries beyond the 25 max written to log + ts = std::map<int64_t,InetAddress>::reverse_iterator(m->second.erase(std::next(ts).base())); } } fprintf(f,"}"); |