Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Dec 1995 13:33:54 -0500
From:      John Capo <jc@irbs.com>
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   bin/892: ppp recursion problem and partial FIX
Message-ID:  <199512141833.NAA09618@irbs.irbs.com>
Resent-Message-ID: <Pine.ULT.3.91.951215084014.2713C@ucvg.med.utah.edu>

next in thread | raw e-mail | index | archive | help

>Number:         892
>Category:       bin
>Synopsis:       ppp recursion problem and partial FIX
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Dec 14 10:40:02 PST 1995
>Last-Modified:
>Originator:     John Capo
>Organization:
IRBS Engineering
>Release:        FreeBSD 2.1-STABLE i386
>Environment:

	

>Description:

There are two bugs here.  One is that SendLqrReport() is called
via StopLqr() when the line drops.  I believe the intention was to
stop the LQR timer.

SendLqrReport() attempts to send an echo request or calls LcpClose()
if > 5 echo packets have been lost.  LcpClose() will wind up calling
SendLqrReport() which is the second bug.

Actually there is a third bug.  I don't think that -auto mode should
exit when echo packets are lost.  The link should be re-started
just as it is when LQR is off.

#0 0xa2da in SendLqrReport () at lqr.c:121
#1 0xa5e5 in StopLqr (method=1) at lqr.c:227
#2 0x97d1 in LcpLayerDown (fp=0x17088) at lcp.c:375
#3 0x6046 in FsmClose (fp=0x17088) at fsm.c:185
#4 0x985d in LcpClose () at lcp.c:405
#5 0xa2da in SendLqrReport () at lqr.c:121
#6 0xa5e5 in StopLqr (method=1) at lqr.c:227
#7 0x97d1 in LcpLayerDown (fp=0x17088) at lcp.c:375
#8 0x6046 in FsmClose (fp=0x17088) at fsm.c:185
#9 0x985d in LcpClose () at lcp.c:405
#10 0xa2da in SendLqrReport () at lqr.c:121
#11 0xa5e5 in StopLqr (method=1) at lqr.c:227
#12 0x97d1 in LcpLayerDown (fp=0x17088) at lcp.c:375
#13 0x5fb6 in FsmDown (fp=0x17088) at fsm.c:164
#14 0x9829 in LcpDown () at lcp.c:391
#15 0xcfe3 in DownConnection () at modem.c:212

>How-To-Repeat:

Disable and deny LQR
Run ppp in -auto mode
Cause 6 connections to drop by disconnecting the phone line.

>Fix:
	
This patch stops the LQR timer when the line drops rather than
calling StopLqr().  The line is dead, no need to attempt to send
echo requests.  I have been using this code for 4 weeks.

I'm not sure of the best way to fix the recursion problem when LQR
is enabled and the lost packet threshold is hit. Setting lqmmethod
to 0 before calling LcpClose() from SendLqrReport() is one way.

*** lqr.c.orig	Thu Dec 14 11:05:23 1995
--- lqr.c	Thu Dec 14 11:05:39 1995
***************
*** 213,218 ****
--- 213,224 ----
  }
  
  void
+ StopLqrTimer(void)
+ {
+     StopTimer(&LqrTimer);
+ }
+ 
+ void
  StopLqr(method)
  int method;
  {
*** lcp.c.orig	Thu Dec 14 11:04:16 1995
--- lcp.c	Thu Dec 14 11:04:46 1995
***************
*** 327,332 ****
--- 327,333 ----
    StopIdleTimer();
    StopTimer(&AuthPapInfo.authtimer);
    StopTimer(&AuthChapInfo.authtimer);
+   StopLqrTimer();
  }
  
  static void
***************
*** 372,378 ****
  {
    LogPrintf(LOG_LCP, "%s: LayerDown\n", fp->name);
    StopAllTimers();
-   StopLqr( LQM_LQR );
    OsLinkdown();
    NewPhase(PHASE_TERMINATE);
  }
--- 373,378 ----
>Audit-Trail:
>Unformatted:




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512141833.NAA09618>