terminates because of an error.  This is needed for persist
to work properly.
  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define RCSID  "$Id: auth.c,v 1.102 2004/12/31 11:58:56 paulus Exp $"
+#define RCSID  "$Id: auth.c,v 1.103 2005/03/21 09:20:16 paulus Exp $"
 
 #include <stdio.h>
 #include <stddef.h>
     new_phase(PHASE_DEAD);
     if (the_channel->cleanup)
        (*the_channel->cleanup)();
-
-    /* XXX not nice here but needs to go somewhere... */
-    lcp_close(0, msg);
 }
 
 /*
 
  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define RCSID  "$Id: main.c,v 1.149 2004/11/14 22:53:42 carlsonj Exp $"
+#define RCSID  "$Id: main.c,v 1.150 2005/03/21 09:20:16 paulus Exp $"
 
 #include <stdio.h>
 #include <ctype.h>
                }
            }
        }
+       /* restore FSMs to original state */
+       lcp_close(0, "");
 
        if (!persist || asked_to_quit || (maxfail > 0 && unsuccess >= maxfail))
            break;