Fixed bug #32648 (PPP code crashes when terminating a link) by only calling sio_read_abort() if the file descriptor is valid.

This commit is contained in:
goldsimon 2011-03-22 20:59:49 +00:00
parent 7203680146
commit 3f849848a4
2 changed files with 9 additions and 15 deletions

View File

@ -233,6 +233,10 @@ HISTORY
++ Bugfixes: ++ 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 2011-03-14: Simon Goldschmidt
* err.h/.c, sockets.c, api_msg.c: fixed bug #31748 (Calling non-blocking connect * 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 more than once can render a socket useless) since it mainly involves changing

View File

@ -344,7 +344,9 @@ static void
pppRecvWakeup(int pd) pppRecvWakeup(int pd)
{ {
PPPDEBUG(LOG_DEBUG, ("pppRecvWakeup: unit %d\n", pd)); PPPDEBUG(LOG_DEBUG, ("pppRecvWakeup: unit %d\n", pd));
if (pppControl[pd].openFlag != 0) {
sio_read_abort(pppControl[pd].fd); sio_read_abort(pppControl[pd].fd);
}
} }
#endif /* PPPOS_SUPPORT */ #endif /* PPPOS_SUPPORT */
@ -681,20 +683,8 @@ pppClose(int pd)
void void
pppSigHUP(int pd) pppSigHUP(int pd)
{ {
#if PPPOE_SUPPORT
PPPControl *pc = &pppControl[pd];
if(pc->ethif) {
PPPDEBUG(LOG_DEBUG, ("pppSigHUP: unit %d sig_hup -> pppHupCB\n", pd)); PPPDEBUG(LOG_DEBUG, ("pppSigHUP: unit %d sig_hup -> pppHupCB\n", pd));
pppHup(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 */
}
} }
#if PPPOS_SUPPORT #if PPPOS_SUPPORT