aboutsummaryrefslogtreecommitdiffstats
path: root/bitlbee.c
diff options
context:
space:
mode:
Diffstat (limited to 'bitlbee.c')
-rw-r--r--bitlbee.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/bitlbee.c b/bitlbee.c
index 26d12b6c..2d543eba 100644
--- a/bitlbee.c
+++ b/bitlbee.c
@@ -41,8 +41,8 @@ int bitlbee_daemon_init()
int i;
FILE *fp;
- log_link( LOGLVL_ERROR, LOGOUTPUT_SYSLOG );
- log_link( LOGLVL_WARNING, LOGOUTPUT_SYSLOG );
+ log_link( LOGLVL_ERROR, LOGOUTPUT_CONSOLE );
+ log_link( LOGLVL_WARNING, LOGOUTPUT_CONSOLE );
memset( &hints, 0, sizeof( hints ) );
hints.ai_family = PF_UNSPEC;
@@ -69,6 +69,15 @@ int bitlbee_daemon_init()
if( global.listen_socket < 0 )
continue;
+#ifdef IPV6_V6ONLY
+ if( res->ai_family == AF_INET6 )
+ {
+ i = 0;
+ setsockopt( global.listen_socket, IPPROTO_IPV6, IPV6_V6ONLY,
+ (char *) &i, sizeof( i ) );
+ }
+#endif
+
/* TIME_WAIT (?) sucks.. */
i = 1;
setsockopt( global.listen_socket, SOL_SOCKET, SO_REUSEADDR, &i, sizeof( i ) );
@@ -79,7 +88,6 @@ int bitlbee_daemon_init()
log_error( "bind" );
return( -1 );
}
-
break;
}
@@ -106,6 +114,7 @@ int bitlbee_daemon_init()
else if( i != 0 )
exit( 0 );
+ setsid();
chdir( "/" );
if( getenv( "_BITLBEE_RESTART_STATE" ) == NULL )
@@ -136,6 +145,12 @@ int bitlbee_daemon_init()
}
#endif
+ if( !global.conf->nofork )
+ {
+ log_link( LOGLVL_ERROR, LOGOUTPUT_SYSLOG );
+ log_link( LOGLVL_WARNING, LOGOUTPUT_SYSLOG );
+ }
+
return( 0 );
}