diff --git a/llarp/link/utp.cpp b/llarp/link/utp.cpp index 60f4bf8af..dbbea5eeb 100644 --- a/llarp/link/utp.cpp +++ b/llarp/link/utp.cpp @@ -87,6 +87,9 @@ namespace llarp ssize_t s = utp_writev(sock, vecs.data(), vecs.size()); if(s < 0) return; + if(s > 0) + lastSend = parent->Now(); + METRICS_DYNAMIC_INT_UPDATE( "utp.session.tx", RouterID(remoteRC.pubkey).ToString().c_str(), s); m_TXRate += s; @@ -241,7 +244,7 @@ namespace llarp return false; if(sendq.size() >= MaxSendQueueSize) { - return now - lastActive > 5000; + return now - lastSend > 5000; } // let utp manage this return state == eClose; diff --git a/llarp/link/utp_internal.hpp b/llarp/link/utp_internal.hpp index 8671dac59..2461b2f5f 100644 --- a/llarp/link/utp_internal.hpp +++ b/llarp/link/utp_internal.hpp @@ -109,6 +109,8 @@ namespace llarp SharedSecret txKey; /// timestamp last active llarp_time_t lastActive; + /// timestamp last send success + llarp_time_t lastSend; /// session timeout (60s) const static llarp_time_t sessionTimeout = DefaultLinkSessionLifetime; diff --git a/llarp/nodedb.cpp b/llarp/nodedb.cpp index a14adf34c..48cc6912e 100644 --- a/llarp/nodedb.cpp +++ b/llarp/nodedb.cpp @@ -84,7 +84,7 @@ llarp_nodedb::RemoveIf( ++itr; } } - llarp_threadpool_queue_job(disk, {job, AsyncKillRCJobs::Work}); + llarp_threadpool_queue_job(disk, {job, &AsyncKillRCJobs::Work}); } bool diff --git a/llarp/router/router.cpp b/llarp/router/router.cpp index 4f11f40ba..9e6c31dd6 100644 --- a/llarp/router/router.cpp +++ b/llarp/router/router.cpp @@ -366,7 +366,6 @@ namespace llarp } if(results[0].Verify(crypto(), Now())) { - nodedb()->Insert(results[0]); TryConnectAsync(results[0], 10); return; } @@ -415,11 +414,6 @@ namespace llarp if(remote.Verify(crypto(), Now())) { LogDebug("verified signature"); - // store into filesystem - if(!nodedb()->Insert(remote)) - { - LogWarn("failed to store"); - } if(!TryConnectAsync(remote, 10)) { // or error? @@ -616,11 +610,11 @@ namespace llarp { if(!rc.Verify(crypto(), Now())) continue; - nodedb()->Insert(rc); + nodedb()->InsertAsync(rc); if(ConnectionToRouterAllowed(rc.pubkey) && numConnected < minConnectedRouters) - TryEstablishTo(rc.pubkey); + TryConnectAsync(rc, 10); } } @@ -684,7 +678,6 @@ namespace llarp if(whitelistRouters && lokinetRouters.find(result.pubkey) == lokinetRouters.end()) continue; - nodedb()->Insert(result); TryConnectAsync(result, 10); } } @@ -1093,7 +1086,8 @@ namespace llarp } } - size_t N = nodedb()->num_loaded(); + const size_t connected = NumberOfConnectedRouters(); + const size_t N = nodedb()->num_loaded(); if(N < minRequiredRouters) { LogInfo("We need at least ", minRequiredRouters, @@ -1110,8 +1104,6 @@ namespace llarp else LogError("we have no bootstrap nodes specified"); } - - const size_t connected = NumberOfConnectedRouters(); if(connected < minConnectedRouters) { size_t dlt = minConnectedRouters - connected;