From 8a17acdd63ae2b2726dc5a3272b23294f75a5883 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 5 Jan 2021 11:29:29 +0100 Subject: [PATCH 06/14] Remove one of the 2 pidfiles (pidfilename or linkpidfile) --- pppd/auth.c | 2 +- pppd/main.c | 25 ++++++++++++++++--------- pppd/multilink.c | 2 +- pppd/pppd.h | 3 ++- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/pppd/auth.c b/pppd/auth.c index b1271c4..a1a831e 100644 --- a/pppd/auth.c +++ b/pppd/auth.c @@ -678,7 +678,7 @@ link_terminated(int unit) * we delete its pid file. */ if (!doing_multilink && !demand) - remove_pidfiles(); + remove_pidfile(pidfilename); /* * If we may want to bring the link up again, transfer diff --git a/pppd/main.c b/pppd/main.c index 6c0a173..08c5306 100644 --- a/pppd/main.c +++ b/pppd/main.c @@ -130,7 +130,7 @@ struct channel *the_channel; char *progname; /* Name of this program */ char hostname[MAXNAMELEN]; /* Our hostname */ -static char pidfilename[MAXPATHLEN]; /* name of pid file */ +char pidfilename[MAXPATHLEN]; /* name of pid file */ static char linkpidfile[MAXPATHLEN]; /* name of linkname pid file */ char ppp_devnam[MAXPATHLEN]; /* name of PPP tty (maybe ttypx) */ uid_t uid; /* Our real user-id */ @@ -241,6 +241,7 @@ static void chld(int); static void toggle_debug(int); static void open_ccp(int); static void bad_signal(int); +static void remove_pidfilenames(void); static void holdoff_end(void *); static void forget_child(int pid, int status); static int reap_kids(void); @@ -828,16 +829,22 @@ create_linkpidfile(int pid) } /* - * remove_pidfile - remove our pid files + * remove_pidfile - remove one of the 2 pidfiles (pidfilename or linkpidfile) */ -void remove_pidfiles(void) +void remove_pidfile(char* filename) { - if (pidfilename[0] != 0 && unlink(pidfilename) < 0 && errno != ENOENT) - warn("unable to delete pid file %s: %m", pidfilename); - pidfilename[0] = 0; - if (linkpidfile[0] != 0 && unlink(linkpidfile) < 0 && errno != ENOENT) - warn("unable to delete pid file %s: %m", linkpidfile); - linkpidfile[0] = 0; + if (filename[0] != 0 && unlink(filename) < 0 && errno != ENOENT) + warn("unable to delete pid file %s: %m", filename); + filename[0] = 0; +} + +/* + * remove_pidfiles - remove our pid files + */ +static void remove_pidfiles() +{ + remove_pidfile(pidfilename); + remove_pidfile(linkpidfile); } /* diff --git a/pppd/multilink.c b/pppd/multilink.c index ddd848c..c9d93c3 100644 --- a/pppd/multilink.c +++ b/pppd/multilink.c @@ -267,7 +267,7 @@ void mp_bundle_terminated(void) notice("Connection terminated."); print_link_stats(); if (!demand) { - remove_pidfiles(); + remove_pidfile(pidfilename); script_unsetenv("IFNAME"); } diff --git a/pppd/pppd.h b/pppd/pppd.h index bdb8778..88a1209 100644 --- a/pppd/pppd.h +++ b/pppd/pppd.h @@ -219,6 +219,7 @@ extern int hungup; /* Physical layer has disconnected */ extern int ifunit; /* Interface unit number */ extern char ifname[]; /* Interface name */ extern char hostname[]; /* Our hostname */ +extern char pidfilename[]; /* name of pid file */ extern u_char outpacket_buf[]; /* Buffer for outgoing packets */ extern int devfd; /* fd of underlying device */ extern int fd_ppp; /* fd for talking PPP */ @@ -531,7 +532,7 @@ void notify(struct notifier *, int); int ppp_send_config(int, int, u_int32_t, int, int); int ppp_recv_config(int, int, u_int32_t, int, int); const char *protocol_name(int); -void remove_pidfiles(void); +void remove_pidfile(char *); void lock_db(void); void unlock_db(void); -- 2.30.0