84f29d4df86c237ec0933c56bc9e4d6ad6d3eb13
[openwrt.git] / package / ppp / patches / 101-debian_close_dev_ppp.patch
1 diff -Naur ppp-2.4.4.orig/pppd/sys-linux.c ppp-2.4.4/pppd/sys-linux.c
2 --- ppp-2.4.4.orig/pppd/sys-linux.c     2005-08-26 18:44:35.000000000 -0400
3 +++ ppp-2.4.4/pppd/sys-linux.c  2009-05-07 15:50:00.000000000 -0400
4 @@ -453,6 +453,13 @@
5      if (new_style_driver) {
6         int flags;
7  
8 +        /* if a ppp_fd is already open, close it first */
9 +        if(ppp_fd > 0) {
10 +          close(ppp_fd);
11 +          remove_fd(ppp_fd);
12 +          ppp_fd = -1;
13 +        }
14 +
15         /* Open an instance of /dev/ppp and connect the channel to it */
16         if (ioctl(fd, PPPIOCGCHAN, &chindex) == -1) {
17             error("Couldn't get channel number: %m");
18 diff -Naur ppp-2.4.4.orig/pppd/sys-linux.c ppp-2.4.4/pppd/sys-linux.c
19 --- ppp-2.4.4.orig/pppd/sys-linux.c     2005-08-26 18:44:35.000000000 -0400
20 +++ ppp-2.4.4/pppd/sys-linux.c  2009-05-07 15:50:00.000000000 -0400
21 @@ -453,6 +453,13 @@
22      if (new_style_driver) {
23         int flags;
24  
25 +        /* if a ppp_fd is already open, close it first */
26 +        if(ppp_fd > 0) {
27 +          close(ppp_fd);
28 +          remove_fd(ppp_fd);
29 +          ppp_fd = -1;
30 +        }
31 +
32         /* Open an instance of /dev/ppp and connect the channel to it */
33         if (ioctl(fd, PPPIOCGCHAN, &chindex) == -1) {
34             error("Couldn't get channel number: %m");