diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2019-07-15 16:30:34 -0500 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2019-07-15 16:30:34 -0500 |
commit | 90872c906fa0f415804873bb7388fea417e4252c (patch) | |
tree | 2f94adb22b7cd4efe22b40a42d7534ac2db27d3e /controller | |
parent | bdc2ec1f5e2074c067ce225352de3e0dd92b1356 (diff) | |
download | infinitytier-90872c906fa0f415804873bb7388fea417e4252c.tar.gz infinitytier-90872c906fa0f415804873bb7388fea417e4252c.zip |
Fix FileDB stuff and latency measurement.
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 917784ba..64c305bb 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,"}"); |