Changed the way IdleSince is updated.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7210 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -190,14 +190,6 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry,
|
|||||||
fMode = PPP_CLIENT_MODE;
|
fMode = PPP_CLIENT_MODE;
|
||||||
// we are a client by default
|
// we are a client by default
|
||||||
|
|
||||||
SetDialOnDemand(
|
|
||||||
get_boolean_value(
|
|
||||||
get_settings_value(PPP_DIAL_ON_DEMAND_KEY, fSettings),
|
|
||||||
false)
|
|
||||||
);
|
|
||||||
// dial on demand is disabled by default
|
|
||||||
|
|
||||||
|
|
||||||
SetAutoRedial(
|
SetAutoRedial(
|
||||||
get_boolean_value(
|
get_boolean_value(
|
||||||
get_settings_value(PPP_AUTO_REDIAL_KEY, fSettings),
|
get_settings_value(PPP_AUTO_REDIAL_KEY, fSettings),
|
||||||
@@ -1323,14 +1315,12 @@ KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber)
|
|||||||
if(!packet)
|
if(!packet)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
fIdleSince = real_time_clock();
|
|
||||||
|
|
||||||
int32 result = PPP_REJECTED;
|
int32 result = PPP_REJECTED;
|
||||||
// assume we have no handler
|
// assume we have no handler
|
||||||
|
|
||||||
// Set our interface as the receiver.
|
// Set our interface as the receiver.
|
||||||
// The real netstack protocols (IP, IPX, etc.) might get confused if our
|
// The real netstack protocols (IP, IPX, etc.) might get confused if our
|
||||||
// interface is a main interface and at the same time is not registered
|
// interface is a main interface and at the same time not registered
|
||||||
// because then there is no receiver interface.
|
// because then there is no receiver interface.
|
||||||
// PPP NCPs should be aware of that!
|
// PPP NCPs should be aware of that!
|
||||||
if(packet->m_flags & M_PKTHDR && Ifnet() != NULL)
|
if(packet->m_flags & M_PKTHDR && Ifnet() != NULL)
|
||||||
@@ -1415,9 +1405,15 @@ KPPPInterface::Pulse()
|
|||||||
for(; protocol; protocol = protocol->NextProtocol())
|
for(; protocol; protocol = protocol->NextProtocol())
|
||||||
protocol->Pulse();
|
protocol->Pulse();
|
||||||
|
|
||||||
|
uint32 currentTime = real_time_clock();
|
||||||
|
if(fUpdateIdleSince) {
|
||||||
|
fIdleSince = currentTime;
|
||||||
|
fUpdateIdleSince = false;
|
||||||
|
}
|
||||||
|
|
||||||
// check our idle time and disconnect if needed
|
// check our idle time and disconnect if needed
|
||||||
if(fDisconnectAfterIdleSince > 0 && fIdleSince != 0
|
if(fDisconnectAfterIdleSince > 0 && fIdleSince != 0
|
||||||
&& fIdleSince - real_time_clock() >= fDisconnectAfterIdleSince)
|
&& fIdleSince - currentTime >= fDisconnectAfterIdleSince)
|
||||||
StateMachine().CloseEvent();
|
StateMachine().CloseEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ class KPPPInterface : public KPPPLayer {
|
|||||||
{ return fRedialDelay; }
|
{ return fRedialDelay; }
|
||||||
|
|
||||||
// idle handling
|
// idle handling
|
||||||
|
void UpdateIdleSince()
|
||||||
|
{ fUpdateIdleSince = true; }
|
||||||
uint32 IdleSince() const
|
uint32 IdleSince() const
|
||||||
{ return fIdleSince; }
|
{ return fIdleSince; }
|
||||||
uint32 DisconnectAfterIdleSince() const
|
uint32 DisconnectAfterIdleSince() const
|
||||||
@@ -231,6 +233,7 @@ class KPPPInterface : public KPPPLayer {
|
|||||||
ppp_interface_module_info *fManager;
|
ppp_interface_module_info *fManager;
|
||||||
|
|
||||||
uint32 fIdleSince, fDisconnectAfterIdleSince;
|
uint32 fIdleSince, fDisconnectAfterIdleSince;
|
||||||
|
bool fUpdateIdleSince;
|
||||||
uint32 fMRU, fInterfaceMTU, fHeaderLength;
|
uint32 fMRU, fInterfaceMTU, fHeaderLength;
|
||||||
|
|
||||||
KPPPInterface *fParent;
|
KPPPInterface *fParent;
|
||||||
|
|||||||
Reference in New Issue
Block a user