mirror of https://gitee.com/openkylin/ppp.git
close_dev_ppp
be sure to close /dev/ppp when reconnecting From: Simon Peter <dn.tlp@gmx.net> Subject: Bug#306261: pppd does not properly close /dev/ppp on persist When using the kernel PPPoE driver, pppd never closes /dev/ppp when the link has come down. It opens superfluous fds to the device each time it re-opens the connection, with the unclosed ones falsely reported always ready for data by select(). This makes pppd eat up 100% CPU time after the first persist because of the always instantly returning select() on the unclosed fds. The problem also occurs with the upstream version, but does not occur when a pty/tty device is used for the ppp connection. Gbp-Pq: Name close_dev_ppp
This commit is contained in:
parent
0a5e00b3da
commit
39d9577c2c
|
@ -458,6 +458,13 @@ int generic_establish_ppp (int fd)
|
|||
if (new_style_driver) {
|
||||
int flags;
|
||||
|
||||
/* if a ppp_fd is already open, close it first */
|
||||
if(ppp_fd > 0) {
|
||||
close(ppp_fd);
|
||||
remove_fd(ppp_fd);
|
||||
ppp_fd = -1;
|
||||
}
|
||||
|
||||
/* Open an instance of /dev/ppp and connect the channel to it */
|
||||
if (ioctl(fd, PPPIOCGCHAN, &chindex) == -1) {
|
||||
error("Couldn't get channel number: %m");
|
||||
|
|
Loading…
Reference in New Issue