cleanup clash between timeout and session_timout
This commit is contained in:
parent
9448b44db3
commit
fb0d8b5fb6
5 changed files with 48 additions and 89 deletions
64
l2tpns.c
64
l2tpns.c
|
|
@ -4,7 +4,7 @@
|
|||
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
||||
// vim: sw=8 ts=8
|
||||
|
||||
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.170 2006-07-01 14:07:35 bodea Exp $";
|
||||
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.171 2006-08-02 13:35:39 bodea Exp $";
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <assert.h>
|
||||
|
|
@ -3053,37 +3053,6 @@ static void regular_cleanups(double period)
|
|||
continue;
|
||||
}
|
||||
|
||||
// check for timed out sessions
|
||||
if (session[s].timeout)
|
||||
{
|
||||
bundleidt bid = session[s].bundle;
|
||||
if (bid)
|
||||
{
|
||||
clockt curr_time = time_now;
|
||||
if (curr_time - bundle[bid].last_check >= 1)
|
||||
{
|
||||
bundle[bid].online_time += (curr_time-bundle[bid].last_check)*bundle[bid].num_of_links;
|
||||
bundle[bid].last_check = curr_time;
|
||||
if (bundle[bid].online_time >= session[s].timeout)
|
||||
{
|
||||
int ses;
|
||||
for (ses = bundle[bid].num_of_links - 1; ses >= 0; ses--)
|
||||
{
|
||||
sessionshutdown(bundle[bid].members[ses], "Session timeout", CDN_ADMIN_DISC, TERM_SESSION_TIMEOUT);
|
||||
s_actions++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (session[s].timeout <= time_now - session[s].opened)
|
||||
{
|
||||
sessionshutdown(s, "Session timeout", CDN_ADMIN_DISC, TERM_SESSION_TIMEOUT);
|
||||
s_actions++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// PPP timeouts
|
||||
if (sess_local[s].lcp.restart <= time_now)
|
||||
{
|
||||
|
|
@ -3226,12 +3195,33 @@ static void regular_cleanups(double period)
|
|||
}
|
||||
|
||||
// Drop sessions who have reached session_timeout seconds
|
||||
if (session[s].session_timeout && (time_now - session[s].opened >= session[s].session_timeout))
|
||||
if (session[s].session_timeout)
|
||||
{
|
||||
sessionshutdown(s, "Session Timeout Reached", CDN_ADMIN_DISC, TERM_SESSION_TIMEOUT);
|
||||
STAT(session_timeout);
|
||||
s_actions++;
|
||||
continue;
|
||||
bundleidt bid = session[s].bundle;
|
||||
if (bid)
|
||||
{
|
||||
if (time_now - bundle[bid].last_check >= 1)
|
||||
{
|
||||
bundle[bid].online_time += (time_now - bundle[bid].last_check) * bundle[bid].num_of_links;
|
||||
bundle[bid].last_check = time_now;
|
||||
if (bundle[bid].online_time >= session[s].session_timeout)
|
||||
{
|
||||
int ses;
|
||||
for (ses = bundle[bid].num_of_links - 1; ses >= 0; ses--)
|
||||
{
|
||||
sessionshutdown(bundle[bid].members[ses], "Session timeout", CDN_ADMIN_DISC, TERM_SESSION_TIMEOUT);
|
||||
s_actions++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (time_now - session[s].opened >= session[s].session_timeout)
|
||||
{
|
||||
sessionshutdown(s, "Session timeout", CDN_ADMIN_DISC, TERM_SESSION_TIMEOUT);
|
||||
s_actions++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Drop sessions who have reached idle_timeout seconds
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue