From 6e6bb3246106e680463c106d1ee6b773fc4f9c5a Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 4 Nov 2004 10:07:37 +0000 Subject: [PATCH] Fix an fd leak on the discovery socket. Remove some unused code. --- pppd/plugins/rp-pppoe/discovery.c | 13 ++++++------- pppd/plugins/rp-pppoe/plugin.c | 4 +++- pppd/plugins/rp-pppoe/pppoe.h | 3 +-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pppd/plugins/rp-pppoe/discovery.c b/pppd/plugins/rp-pppoe/discovery.c index e05b773..937ea52 100644 --- a/pppd/plugins/rp-pppoe/discovery.c +++ b/pppd/plugins/rp-pppoe/discovery.c @@ -9,7 +9,7 @@ ***********************************************************************/ static char const RCSID[] = -"$Id: discovery.c,v 1.2 2004/01/13 04:03:58 paulus Exp $"; +"$Id: discovery.c,v 1.3 2004/11/04 10:07:37 paulus Exp $"; #include "pppoe.h" @@ -592,10 +592,6 @@ discovery(PPPoEConnection *conn) /* Skip discovery? */ if (conn->skipDiscovery) { conn->discoveryState = STATE_SESSION; - if (conn->killSession) { - sendPADT(conn, "RP-PPPoE: Session killed manually"); - exit(0); - } return; } @@ -603,6 +599,8 @@ discovery(PPPoEConnection *conn) padiAttempts++; if (padiAttempts > MAX_PADI_ATTEMPTS) { warn("Timeout waiting for PADO packets"); + close(conn->discoverySocket); + conn->discoverySocket = -1; return; } sendPADI(conn); @@ -622,8 +620,7 @@ discovery(PPPoEConnection *conn) /* If we're only printing access concentrator names, we're done */ if (conn->printACNames) { - printf("--------------------------------------------------\n"); - exit(0); + die(0); } timeout = PADI_TIMEOUT; @@ -631,6 +628,8 @@ discovery(PPPoEConnection *conn) padrAttempts++; if (padrAttempts > MAX_PADI_ATTEMPTS) { warn("Timeout waiting for PADS packets"); + close(conn->discoverySocket); + conn->discoverySocket = -1; return; } sendPADR(conn); diff --git a/pppd/plugins/rp-pppoe/plugin.c b/pppd/plugins/rp-pppoe/plugin.c index 3fa669c..cd93bfa 100644 --- a/pppd/plugins/rp-pppoe/plugin.c +++ b/pppd/plugins/rp-pppoe/plugin.c @@ -22,7 +22,7 @@ ***********************************************************************/ static char const RCSID[] = -"$Id: plugin.c,v 1.11 2004/10/24 23:06:31 paulus Exp $"; +"$Id: plugin.c,v 1.12 2004/11/04 10:07:37 paulus Exp $"; #define _GNU_SOURCE 1 #include "pppoe.h" @@ -244,6 +244,8 @@ PPPOEDisconnectDevice(void) return; } close(conn->sessionSocket); + /* don't send PADT?? */ + close(conn->discoverySocket); } static void diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h index 35c98c8..2309ad3 100644 --- a/pppd/plugins/rp-pppoe/pppoe.h +++ b/pppd/plugins/rp-pppoe/pppoe.h @@ -9,7 +9,7 @@ * This program may be distributed according to the terms of the GNU * General Public License, version 2 or (at your option) any later version. * -* $Id: pppoe.h,v 1.1 2001/12/14 02:55:20 mostrows Exp $ +* $Id: pppoe.h,v 1.2 2004/11/04 10:07:37 paulus Exp $ * ***********************************************************************/ @@ -263,7 +263,6 @@ typedef struct PPPoEConnectionStruct { int printACNames; /* Just print AC names */ int skipDiscovery; /* Skip discovery */ int noDiscoverySocket; /* Don't even open discovery socket */ - int killSession; /* Kill session and exit */ FILE *debugFile; /* Debug file for dumping packets */ int numPADOs; /* Number of PADO packets received */ PPPoETag cookie; /* We have to send this if we get it */ -- 2.39.2