78cd384 Update README and patchlevel.h for 2.4.8 release 5d03403 pppd: Avoid use of strnlen (and strlen) in vslprintf a1e950a pppd: Fix IPv6 default route code for Solaris ca5e61b plugins/rp-pppoe: Make tag parsing loop condition more accurate c10c3c7 pppd: Make sure word read from options file is null-terminated b311e98 pppd: Limit memory accessed by string formats with max length specified 3ea9de9 pppd: Eliminate some more compiler warnings 57edb1a pppd: Include time.h header before using time_t 09f695f pppd: Don't free static string 03104ba pppd.h: Add missing headers 388597e pppd: Add defaultroute6 and related options 66ce4ba pppd: Avoid declarations within statements in main.c 5637180 pppd: Fix `ifname` option in case of multilink (#105) d00f8a0 pppd: Fix variable reference syntax in Makefile.linux b6b4d28 pppd: Check tdb pointer before closing Signed-off-by: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
24 lines
766 B
Diff
24 lines
766 B
Diff
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 <jo@mein.io>
|
|
|
|
--- a/pppd/main.c
|
|
+++ b/pppd/main.c
|
|
@@ -1055,7 +1055,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;
|