actually call session ticker

pull/1/head
Jeff Becker 6 years ago
parent 87aabefddc
commit c6b3a45eca
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -1221,23 +1221,20 @@ namespace iwp
return serv->m_Connected.find(pubkey) != serv->m_Connected.end();
}
static void
HandleSessionTicker(void *user, uint64_t orig, uint64_t left)
void
TickSessions()
{
if(left)
return;
server *serv = static_cast< server * >(user);
auto now = llarp_time_now_ms();
auto now = llarp_time_now_ms();
{
lock_t lock(serv->m_sessions_Mutex);
lock_t lock(m_sessions_Mutex);
std::set< llarp::Addr > remove;
auto itr = serv->m_sessions.begin();
while(itr != serv->m_sessions.end())
auto itr = m_sessions.begin();
while(itr != m_sessions.end())
if(static_cast< session * >(itr->second.impl)->Tick(now))
remove.insert(itr->first);
for(const auto &addr : remove)
serv->RemoveSessionByAddr(addr);
RemoveSessionByAddr(addr);
}
}
@ -1359,27 +1356,6 @@ namespace iwp
}
}
void
cleanup_dead()
{
auto now = llarp_time_now_ms();
std::set< llarp::Addr > remove;
{
lock_t lock(m_sessions_Mutex);
for(auto &itr : m_sessions)
{
session *s = static_cast< session * >(itr.second.impl);
if(s->timedout(now))
remove.insert(itr.first);
}
for(const auto &addr : remove)
{
RemoveSessionByAddr(addr);
}
}
}
uint8_t *
pubkey()
{
@ -1422,14 +1398,13 @@ namespace iwp
static void
handle_cleanup_timer(void *l, uint64_t orig, uint64_t left)
{
if(left)
return;
server *link = static_cast< server * >(l);
link->timeout_job_id = 0;
if(!left)
{
link->cleanup_dead();
// TODO: exponential backoff for cleanup timer ?
link->issue_cleanup_timer(orig);
}
link->TickSessions();
// TODO: exponential backoff for cleanup timer ?
link->issue_cleanup_timer(orig);
}
// this is called in net threadpool

Loading…
Cancel
Save