fixed a segfault in daemon mode

This commit is contained in:
Steffen Vogel 2011-12-06 03:53:36 +01:00
parent 806dcf9145
commit e140190402
2 changed files with 10 additions and 4 deletions

View file

@ -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) {

View file

@ -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);