aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/ppp/patches/208-fix_status_code.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-10-10 12:32:29 +0000
committerFelix Fietkau <nbd@openwrt.org>2012-10-10 12:32:29 +0000
commitabe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5 (patch)
tree46b83031a0da1b4458317413c00d13c252c72afa /package/network/services/ppp/patches/208-fix_status_code.patch
parent41d09b7d7880b83b0e544574296b2b3673792c7f (diff)
downloadupstream-abe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5.tar.gz
upstream-abe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5.tar.bz2
upstream-abe70b1494c60a3f9cbe5e4d8d967a82dd1e29a5.zip
packages: sort network related packages into package/network/
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33688 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/network/services/ppp/patches/208-fix_status_code.patch')
-rw-r--r--package/network/services/ppp/patches/208-fix_status_code.patch24
1 files changed, 24 insertions, 0 deletions
diff --git a/package/network/services/ppp/patches/208-fix_status_code.patch b/package/network/services/ppp/patches/208-fix_status_code.patch
new file mode 100644
index 0000000000..25e2a10b85
--- /dev/null
+++ b/package/network/services/ppp/patches/208-fix_status_code.patch
@@ -0,0 +1,24 @@
+pppd: Do not clobber exit codes on hangup
+
+When a modem hangup occurs, pppd unconditionally sets the exit status code
+to EXIT_HANGUP. This patch only sets EXIT_HANGUP if the exit status code is
+not already set to an error value.
+
+The motiviation of this patch is to allow applications which remote control
+pppd to react properly on errors, e.g. only redial (relaunch pppd) if there
+was a hangup, but not if the CHAP authentication failed.
+
+Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
+
+--- a/pppd/main.c
++++ b/pppd/main.c
+@@ -1048,7 +1048,8 @@ get_input()
+ }
+ notice("Modem hangup");
+ hungup = 1;
+- status = EXIT_HANGUP;
++ if (status == EXIT_OK)
++ status = EXIT_HANGUP;
+ lcp_lowerdown(0); /* serial link is no longer available */
+ link_terminated(0);
+ return;