fixed a segfault in daemon mode
This commit is contained in:
parent
806dcf9145
commit
e140190402
2 changed files with 10 additions and 4 deletions
|
@ -129,7 +129,9 @@ void print(int level, const char *format, void *id, ... ) {
|
|||
va_end(args);
|
||||
|
||||
/* print to stdout/stderr */
|
||||
fprintf((level > 0) ? stdout : stderr, "%s\n", buffer);
|
||||
if (getppid() != 1) {
|
||||
fprintf((level > 0) ? stdout : stderr, "%s\n", buffer);
|
||||
}
|
||||
|
||||
/* append to logfile */
|
||||
if (options.logfd) {
|
||||
|
@ -180,7 +182,7 @@ void show_usage(char *argv[]) {
|
|||
* @link http://www.enderunix.org/docs/eng/daemon.php
|
||||
*/
|
||||
void daemonize() {
|
||||
if(getppid() == 1) {
|
||||
if (getppid() == 1) {
|
||||
return; /* already a daemon */
|
||||
}
|
||||
|
||||
|
@ -193,7 +195,6 @@ void daemonize() {
|
|||
}
|
||||
|
||||
/* child (daemon) continues */
|
||||
|
||||
setsid(); /* obtain a new process group */
|
||||
|
||||
for (i = getdtablesize(); i >= 0; --i) {
|
||||
|
|
|
@ -201,7 +201,12 @@ int meter_sml_open_socket(const char *node, const char *service) {
|
|||
return ERR;
|
||||
}
|
||||
|
||||
getaddrinfo(node, service, NULL, &ais);
|
||||
int rc = getaddrinfo(node, service, NULL, &ais);
|
||||
if (rc != 0) {
|
||||
print(log_error, "getaddrinfo(%s, %s): %s", NULL, node, service, gai_strerror(rc));
|
||||
return ERR;
|
||||
}
|
||||
|
||||
memcpy(&sin, ais->ai_addr, ais->ai_addrlen);
|
||||
freeaddrinfo(ais);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue