From 3f849848a4ba2611d86f08457fbce779d7a2b705 Mon Sep 17 00:00:00 2001 From: goldsimon Date: Tue, 22 Mar 2011 20:59:49 +0000 Subject: [PATCH] Fixed bug #32648 (PPP code crashes when terminating a link) by only calling sio_read_abort() if the file descriptor is valid. --- CHANGELOG | 4 ++++ src/netif/ppp/ppp.c | 20 +++++--------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 75c1495d..17e1a750 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -233,6 +233,10 @@ HISTORY ++ Bugfixes: + 2011-03-22: Simon Goldschmidt + * ppp.c: Fixed bug #32648 (PPP code crashes when terminating a link) by only + calling sio_read_abort() if the file descriptor is valid. + 2011-03-14: Simon Goldschmidt * err.h/.c, sockets.c, api_msg.c: fixed bug #31748 (Calling non-blocking connect more than once can render a socket useless) since it mainly involves changing diff --git a/src/netif/ppp/ppp.c b/src/netif/ppp/ppp.c index 0c2d20e8..c302b424 100644 --- a/src/netif/ppp/ppp.c +++ b/src/netif/ppp/ppp.c @@ -344,7 +344,9 @@ static void pppRecvWakeup(int pd) { PPPDEBUG(LOG_DEBUG, ("pppRecvWakeup: unit %d\n", pd)); - sio_read_abort(pppControl[pd].fd); + if (pppControl[pd].openFlag != 0) { + sio_read_abort(pppControl[pd].fd); + } } #endif /* PPPOS_SUPPORT */ @@ -681,20 +683,8 @@ pppClose(int pd) void pppSigHUP(int pd) { -#if PPPOE_SUPPORT - PPPControl *pc = &pppControl[pd]; - if(pc->ethif) { - PPPDEBUG(LOG_DEBUG, ("pppSigHUP: unit %d sig_hup -> pppHupCB\n", pd)); - pppHup(pd); - } else -#endif /* PPPOE_SUPPORT */ - { -#if PPPOS_SUPPORT - PPPDEBUG(LOG_DEBUG, ("pppSigHUP: unit %d sig_hup -> pppHupCB\n", pd)); - pppHup(pd); - pppRecvWakeup(pd); -#endif /* PPPOS_SUPPORT */ - } + PPPDEBUG(LOG_DEBUG, ("pppSigHUP: unit %d sig_hup -> pppHupCB\n", pd)); + pppHup(pd); } #if PPPOS_SUPPORT