116 lines
3.6 KiB
Diff
116 lines
3.6 KiB
Diff
From 8a17acdd63ae2b2726dc5a3272b23294f75a5883 Mon Sep 17 00:00:00 2001
|
|
From: Mike Frysinger <vapier@gentoo.org>
|
|
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
|
|
|