projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
datapath: Don't use vlan_features before 2.6.26.
[openvswitch]
/
lib
/
daemon.c
diff --git
a/lib/daemon.c
b/lib/daemon.c
index c0f168291e6ed053540e9260ec8e6997d4b8d4a3..a8b3fae3c6e2e5ae5505ed38077dd5b013010ca8 100644
(file)
--- a/
lib/daemon.c
+++ b/
lib/daemon.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2008, 2009, 2010 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010
, 2011
Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-475,11
+475,14
@@
daemonize_start(void)
}
/* If daemonization is configured, then this function notifies the parent
}
/* If daemonization is configured, then this function notifies the parent
- * process that the child process has completed startup successfully. */
+ * process that the child process has completed startup successfully.
+ *
+ * Calling this function more than once has no additional effect. */
void
daemonize_complete(void)
{
fork_notify_startup(daemonize_fd);
void
daemonize_complete(void)
{
fork_notify_startup(daemonize_fd);
+ daemonize_fd = -1;
if (detach) {
setsid();
if (detach) {
setsid();
@@
-487,6
+490,7
@@
daemonize_complete(void)
ignore(chdir("/"));
}
close_standard_fds();
ignore(chdir("/"));
}
close_standard_fds();
+ detach = false;
}
}
}
}
@@
-536,6
+540,7
@@
read_pidfile(const char *pidfile)
lck.l_whence = SEEK_SET;
lck.l_start = 0;
lck.l_len = 0;
lck.l_whence = SEEK_SET;
lck.l_start = 0;
lck.l_len = 0;
+ lck.l_pid = 0;
if (fcntl(fileno(file), F_GETLK, &lck)) {
error = errno;
VLOG_WARN("%s: fcntl: %s", pidfile, strerror(error));
if (fcntl(fileno(file), F_GETLK, &lck)) {
error = errno;
VLOG_WARN("%s: fcntl: %s", pidfile, strerror(error));