Patches from Frank Cusack:
authorDavid F. Skoll <dfs@roaringpenguin.com>
Mon, 24 Jun 2002 12:57:15 +0000 (12:57 +0000)
committerDavid F. Skoll <dfs@roaringpenguin.com>
Mon, 24 Jun 2002 12:57:15 +0000 (12:57 +0000)
- Avoid infinite loop (eventually running out of stack space) when doing
  callback into ccp with MPPE enabled, by updating lcp_fsm state *before*
  doing callbacks.  Problem noted by Rustem Yumaev <rust@vostok-inc.com>.

- Add missing accounting attributes

- Update for newer automake; required to compile on RH 7.3

pppd/ccp.c
pppd/fsm.c
pppd/plugins/radius/radiusclient/aclocal.m4
pppd/plugins/radius/radiusclient/etc/dictionary

index 3e408ba27f6e4339174dccad4e2f23f012eca99a..8ff92f3be179b6824050a833a88d57afe712fca9 100644 (file)
@@ -25,7 +25,7 @@
  * OR MODIFICATIONS.
  */
 
-#define RCSID  "$Id: ccp.c,v 1.36 2002/05/28 17:00:57 dfs Exp $"
+#define RCSID  "$Id: ccp.c,v 1.37 2002/06/24 12:57:15 dfs Exp $"
 
 #include <stdlib.h>
 #include <string.h>
@@ -37,7 +37,7 @@
 
 #ifdef MPPE
 #include "chap_ms.h"   /* mppe_xxxx_key */
-#include "lcp.h"       /* lcp_close() */
+#include "lcp.h"       /* lcp_close(), lcp_fsm */
 #endif
 
 static const char rcsid[] = RCSID;
@@ -1438,8 +1438,12 @@ ccp_down(f)
     ccp_flags_set(f->unit, 1, 0);
 #ifdef MPPE
     if (ccp_gotoptions[f->unit].mppe) {
-       error("MPPE disabled");
-       lcp_close(f->unit, "MPPE disabled");
+       ccp_gotoptions[f->unit].mppe = 0;
+       if (lcp_fsm[f->unit].state == OPENED) {
+           /* If LCP is not already going down, make sure it does. */
+           error("MPPE disabled");
+           lcp_close(f->unit, "MPPE disabled");
+       }
     }
 #endif
 }
index b5b8148f9a2c5af079212f45193dc98d85963f53..6c74036aa0bfc2d27070c745abfd658ff9f16358 100644 (file)
@@ -17,7 +17,7 @@
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#define RCSID  "$Id: fsm.c,v 1.17 1999/08/13 06:46:12 paulus Exp $"
+#define RCSID  "$Id: fsm.c,v 1.18 2002/06/24 12:57:15 dfs Exp $"
 
 /*
  * TODO:
@@ -562,10 +562,10 @@ fsm_rtermreq(f, id, p, len)
            info("%s terminated by peer (%0.*v)", PROTO_NAME(f), len, p);
        } else
            info("%s terminated by peer", PROTO_NAME(f));
-       if (f->callbacks->down)
-           (*f->callbacks->down)(f);   /* Inform upper layers */
        f->retransmits = 0;
        f->state = STOPPING;
+       if (f->callbacks->down)
+           (*f->callbacks->down)(f);   /* Inform upper layers */
        TIMEOUT(fsm_timeout, f, f->timeouttime);
        break;
     }
index 5532ad1815118d9e669f6a3086792dd1deeae3e8..6cb12d403b8dca3acda8b25f699fa59e3b6f9c27 100644 (file)
@@ -20,7 +20,7 @@ dnl Usage:
 dnl AM_INIT_AUTOMAKE(package,version, [no-define])
 
 AC_DEFUN(AM_INIT_AUTOMAKE,
-[AC_REQUIRE([AM_PROG_INSTALL])
+[AC_REQUIRE([AC_PROG_INSTALL])
 PACKAGE=[$1]
 AC_SUBST(PACKAGE)
 VERSION=[$2]
index b8d77719c5814bbe7c90a9a7d55eb03ece5fe9ad..8de308c854218eeac217cd974bc397f839cc10ae 100644 (file)
@@ -77,6 +77,8 @@ ATTRIBUTE     Acct-Output-Octets      43      integer
 ATTRIBUTE      Acct-Session-Id         44      string
 ATTRIBUTE      Acct-Authentic          45      integer
 ATTRIBUTE      Acct-Session-Time       46      integer
+ATTRIBUTE      Acct-Input-Packets      47      integer
+ATTRIBUTE      Acct-Output-Packets     48      integer
 ATTRIBUTE      Acct-Terminate-Cause    49      integer
 ATTRIBUTE       Chap-Challenge          60      string
 ATTRIBUTE      NAS-Port-Type           61      integer