From: Rudolf v. d. L. <van...@lo...> - 2007-01-24 16:36:28
|
As of NSCA 2.6 up to NSCA CVS the nsca daemon is no longer running successfully in single-process mode (--single option). I discovered this during my recent upgrade to the Nagios 2.7. The symptons have been described in earlier postings: nsca responds to exactly one client request and stops responding (while still running). There is no solution execpt avoiding the --single mode and working with --inetd or --daemon mode instead, or using NSCA 2.5. I checked the source nsca.c and found a workaround: Enable in the function "accept_connection" the following if statement again: /* REMOVED 04/03/2006 EG - already done in wait_for_connections() */ /* if(mode==SINGLE_PROCESS_DAEMON) register_read_handler(sock,accept_connection,NULL); */ The real problem seems to lie in the way pfds[i].events is maintained. handle_events() clears it ( pfds[i].events&=~POLLIN; ) and register_poll() sets it again in NSCA 2.5 because register_read_handler is called which in turn calls register_poll(). NSCA 2.7 does not call register_poll() and hence the fd is removed as events=0 (done at the end of handle_events(). Could someone familiar with the code please have a look and check the root cause of the problem. I would be willing to work on a patch. Thanks, Rudolf VanderLeeden Sysadmin Logic United GmbH Germany van...@lo... |