NSCA 2.7 not working in single-process mode (bug)

Rudolf van der Leeden vanderleeden at logicunited.com
Wed Jan 24 17:36:19 CET 2007


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
vanderleeden at logicunited.com




-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV




More information about the Developers mailing list