From 75b7a33a1275e9cdb7c0959f0edfef81ff2c8e43 Mon Sep 17 00:00:00 2001 From: Jouke Witteveen Date: Sat, 26 Apr 2014 13:45:35 +0200 Subject: Fix pid lookup for killing pppd The pid file contains more than just the pid: on the second line it records the interface pppd manages. --- src/lib/connections/mobile_ppp | 7 +++++-- src/lib/connections/pppoe | 15 ++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/connections/mobile_ppp b/src/lib/connections/mobile_ppp index 6df30d8..785457d 100644 --- a/src/lib/connections/mobile_ppp +++ b/src/lib/connections/mobile_ppp @@ -79,12 +79,15 @@ EOF } mobile_ppp_down() { - local options chat pidfile + local options chat pidfile pid options="$STATE_DIR/mobile_ppp.$Interface.$Profile/options" chat="$STATE_DIR/mobile_ppp.$Interface.$Profile/modem.chat" pidfile="/var/run/ppp-$Profile.pid" - [[ -r $pidfile ]] && kill "$(< "$pidfile")" + if [[ -r $pidfile ]]; then + read pid < "$pidfile" + (( pid )) && kill "$pid" + fi rm "$options" "$chat" rmdir "$(dirname "$options")" diff --git a/src/lib/connections/pppoe b/src/lib/connections/pppoe index 78cc35f..9816658 100644 --- a/src/lib/connections/pppoe +++ b/src/lib/connections/pppoe @@ -8,9 +8,7 @@ quote_word() { } pppoe_up() { - local options pidfile pppn - options="$STATE_DIR/pppoe.$Interface.$Profile/options" - pidfile="/var/run/ppp-$Profile.pid" + local options="$STATE_DIR/pppoe.$Interface.$Profile/options" if ! is_interface "$Interface"; then report_error "Interface '$Interface' does not exist" @@ -55,18 +53,17 @@ EOF report_error "Could not establish a ppp connection for profile '$Profile'." return 1 fi - - [[ -r $pidfile ]] || return 0 - pppn=$(grep -l "$(< "$pidfile")" /var/run/ppp[[:digit:]]*.pid) - report_notice "PPP unit for profile '$Profile': ${pppn:9:-4}" } pppoe_down() { - local options pidfile + local options pidfile pid options="$STATE_DIR/pppoe.$Interface.$Profile/options" pidfile="/var/run/ppp-$Profile.pid" - [[ -r $pidfile ]] && kill "$(< "$pidfile")" + if [[ -r $pidfile ]]; then + read pid < "$pidfile" + (( pid )) && kill "$pid" + fi rm "$options" rmdir "$(dirname "$options")" -- cgit v1.2.3-24-g4f1b