From: Ethan G. <ega...@us...> - 2003-08-19 04:19:14
|
Update of /cvsroot/nagios/nagios/base In directory sc8-pr-cvs1:/tmp/cvs-serv16318/base Modified Files: Makefile.in broker.c config.c nagios.c nagiostats.c utils.c Log Message: Import of existing event broker code, escalation bug fix Index: Makefile.in =================================================================== RCS file: /cvsroot/nagios/nagios/base/Makefile.in,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** Makefile.in 15 Aug 2003 01:34:08 -0000 1.14 --- Makefile.in 19 Aug 2003 04:19:11 -0000 1.15 *************** *** 61,64 **** --- 61,66 ---- # Generated automatically from configure script SNPRINTF_O=@SNPRINTF_O@ + BROKER_O=@BROKER_O@ + BROKER_H=@BROKER_H@ # Object data *************** *** 105,110 **** ! OBJS=broker.o checks.o config.o commands.o events.o flapping.o logging.o notifications.o sehandlers.o utils.o $(RDATALIBS) $(CDATALIBS) $(ODATALIBS) $(SDATALIBS) $(PDATALIBS) $(DDATALIBS) $(BASEEXTRALIBS) $(SNPRINTF_O) ! OBJDEPS=$(ODATADEPS) $(ODATADEPS) $(RDATADEPS) $(CDATADEPS) $(SDATADEPS) $(PDATADEPS) $(DDATADEPS) all: nagios nagiostats --- 107,112 ---- ! OBJS=$(BROKER_O) checks.o config.o commands.o events.o flapping.o logging.o notifications.o sehandlers.o utils.o $(RDATALIBS) $(CDATALIBS) $(ODATALIBS) $(SDATALIBS) $(PDATALIBS) $(DDATALIBS) $(BASEEXTRALIBS) $(SNPRINTF_O) ! OBJDEPS=$(ODATADEPS) $(ODATADEPS) $(RDATADEPS) $(CDATADEPS) $(SDATADEPS) $(PDATADEPS) $(DDATADEPS) $(BROKER_H) all: nagios nagiostats Index: broker.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/broker.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** broker.c 15 Aug 2003 01:34:08 -0000 1.14 --- broker.c 19 Aug 2003 04:19:11 -0000 1.15 *************** *** 4,8 **** * * Copyright (c) 2002-2003 Ethan Galstad (na...@na...) ! * Last Modified: 08-14-2003 * * License: --- 4,8 ---- * * Copyright (c) 2002-2003 Ethan Galstad (na...@na...) ! * Last Modified: 08-15-2003 * * License: *************** *** 30,45 **** #include "../include/broker.h" - extern pthread_t worker_threads[TOTAL_WORKER_THREADS]; - - extern circular_buffer event_broker_buffer; - extern char *event_broker_file; extern int event_broker_options; - extern int sigrestart; - extern int sigshutdown; - - int broker_file_open; - int event_broker_socket=-1; - #ifdef USE_EVENT_BROKER --- 30,35 ---- *************** *** 65,69 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 55,58 ---- *************** *** 104,108 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 93,96 ---- *************** *** 125,129 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 113,116 ---- *************** *** 148,152 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 135,138 ---- *************** *** 182,186 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 168,171 ---- *************** *** 217,221 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 202,205 ---- *************** *** 246,250 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 230,233 ---- *************** *** 273,277 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 256,259 ---- *************** *** 297,301 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 279,282 ---- *************** *** 321,325 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 302,305 ---- *************** *** 355,359 **** temp_buffer[sizeof(temp_buffer)-1]='\x0'; - send_event_data_to_broker(temp_buffer); return; --- 335,338 ---- *************** *** 366,443 **** /******************************************************************/ - /* sends data to the event broker worker thread */ - int send_event_data_to_broker(char *data){ - #ifdef BROKER_BLOCKS - struct timeval tv; - #endif - - if(event_broker_options==BROKER_NOTHING) - return OK; - - /* bail if we weren't given data */ - if(data==NULL) - return ERROR; - - /* bail if the buffer is unallocated */ - if(event_broker_buffer.buffer==NULL){ - printf("BUFFER WAS NULL: %s\n",data); - return ERROR; - } - - /* obtain a lock for writing to the buffer */ - pthread_mutex_lock(&event_broker_buffer.buffer_lock); - - #ifdef BROKER_BLOCKS - /* if the buffer is full and we're blocking , we'll wait... */ - while(event_broker_buffer.items==EVENT_BUFFER_SLOTS){ - - /* if we're shutting down or restarting, don't block */ - if(sigrestart==TRUE || sigshutdown==TRUE) - break; - - /* unlock the buffer */ - pthread_mutex_unlock(&event_broker_buffer.buffer_lock); - - /* wait a bit... */ - tv.tv_sec=0; - tv.tv_usec=250000; - select(0,NULL,NULL,NULL,&tv); - - /* lock the buffer for writing */ - pthread_mutex_lock(&event_broker_buffer.buffer_lock); - } - #else - /* is the buffer full? if it is and we're not blocking, we're going to lose some older data... */ - if(event_broker_buffer.items==EVENT_BUFFER_SLOTS){ - - /* increment the overflow counter */ - event_broker_buffer.overflow++; - - /* free memory allocated to oldest data item */ - free(((char **)event_broker_buffer.buffer)[event_broker_buffer.head]); - - /* adjust tail pointer for overflow */ - event_broker_buffer.tail=(event_broker_buffer.tail + 1) % EVENT_BUFFER_SLOTS; - - printf("OVERFLOW: %s\n",data); - } - #endif - - /* save the data to the buffer */ - ((char **)event_broker_buffer.buffer)[event_broker_buffer.head]=strdup(data); - - /* increment the index counters and number of items */ - event_broker_buffer.head=(event_broker_buffer.head + 1) % EVENT_BUFFER_SLOTS; - if(event_broker_buffer.items<EVENT_BUFFER_SLOTS) - event_broker_buffer.items++; - - /* unlock the buffer */ - pthread_mutex_unlock(&event_broker_buffer.buffer_lock); - - return OK; - } - - - /* gets timestamp for use by broker */ struct timeval get_broker_timestamp(struct timeval *timestamp){ --- 345,348 ---- *************** *** 454,848 **** - - /******************************************************************/ - /************************ THREAD FUNCTIONS ************************/ - /******************************************************************/ - - /* initializes event broker worker thread */ - int init_event_broker_worker_thread(void){ - - if(event_broker_options==BROKER_NOTHING) - return OK; - - /* initialize socket */ - event_broker_socket=-1; - - /* initialize circular buffer */ - event_broker_buffer.head=0; - event_broker_buffer.tail=0; - event_broker_buffer.items=0; - event_broker_buffer.overflow=0L; - event_broker_buffer.buffer=(void **)malloc(EVENT_BUFFER_SLOTS*sizeof(char **)); - if(event_broker_buffer.buffer==NULL) - return ERROR; - - /* initialize mutex */ - pthread_mutex_init(&event_broker_buffer.buffer_lock,NULL); - - return OK; - } - - - - /* starts event broker worker thread */ - int start_event_broker_worker_thread(void){ - int result; - sigset_t newmask; - - if(event_broker_options==BROKER_NOTHING) - return OK; - - /* new thread should block all signals */ - sigfillset(&newmask); - pthread_sigmask(SIG_BLOCK,&newmask,NULL); - - /* create worker thread */ - result=pthread_create(&worker_threads[EVENT_WORKER_THREAD],NULL,event_broker_worker_thread,NULL); - - /* main thread should unblock all signals */ - pthread_sigmask(SIG_UNBLOCK,&newmask,NULL); - - #ifdef DEBUG1 - printf("EVENT BROKER THREAD: %lu\n",(unsigned long)worker_threads[EVENT_WORKER_THREAD]); - #endif - - if(result) - return ERROR; - - return OK; - } - - - - /* shutdown event broker worker thread */ - int shutdown_event_broker_worker_thread(void){ - - if(event_broker_options==BROKER_NOTHING) - return OK; - - /* tell the worker thread to exit */ - pthread_cancel(worker_threads[EVENT_WORKER_THREAD]); - - /* wait for the worker thread to exit */ - pthread_join(worker_threads[EVENT_WORKER_THREAD],NULL); - - return OK; - } - - - /* clean up resources used by event broker worker thread */ - void cleanup_event_broker_worker_thread(void *arg){ - char temp_buffer[MAX_INPUT_BUFFER]; - struct timeval tv; - int len; - - /* lock the buffer */ - pthread_mutex_lock(&event_broker_buffer.buffer_lock); - - /* report any overflows */ - if(event_broker_buffer.overflow>0){ - - if(event_broker_socket>=0){ - gettimeofday(&tv,NULL); - snprintf(temp_buffer,sizeof(temp_buffer)-1,"[%lu.%d] %d;%d;%d;%lu\n",tv.tv_sec,(tv.tv_usec/1000),NEBTYPE_INFO,NEBFLAG_NONE,NEBATTR_BUFFER_OVERFLOW,event_broker_buffer.overflow); - temp_buffer[sizeof(temp_buffer)-1]='\x0'; - len=strlen(temp_buffer); - write_event_broker_data(event_broker_socket,temp_buffer,&len); - } - - /* reset overflow counter */ - event_broker_buffer.overflow=0L; - } - - /* flush remaining data in the buffer */ - while(event_broker_buffer.items>0){ - - if(event_broker_socket>=0){ - len=strlen(((char **)event_broker_buffer.buffer)[event_broker_buffer.tail]); - write_event_broker_data(event_broker_socket,((char **)event_broker_buffer.buffer)[event_broker_buffer.tail],&len); - } - - #ifdef DEBUGBROKER - printf("FLUSH: %s",((char **)event_broker_buffer.buffer)[event_broker_buffer.tail]); - #endif - - /* free buffer data */ - free(((char **)event_broker_buffer.buffer)[event_broker_buffer.tail]); - - /* update the tail counter and items */ - event_broker_buffer.tail=(event_broker_buffer.tail + 1) % EVENT_BUFFER_SLOTS; - event_broker_buffer.items--; - } - - /* release memory allocated to circular buffer */ - free(event_broker_buffer.buffer); - event_broker_buffer.buffer=NULL; - - /* release lock on buffer */ - pthread_mutex_unlock(&event_broker_buffer.buffer_lock); - - if(event_broker_socket>=0){ - - /* say goodbye */ - gettimeofday(&tv,NULL); - snprintf(temp_buffer,sizeof(temp_buffer)-1,"[%lu.%d] %d;%d;%d;%s\n",tv.tv_sec,(tv.tv_usec/1000),NEBTYPE_GOODBYE,NEBFLAG_NONE,NEBATTR_NONE,PROGRAM_VERSION); - temp_buffer[sizeof(temp_buffer)-1]='\x0'; - len=strlen(temp_buffer); - write_event_broker_data(event_broker_socket,temp_buffer,&len); - - /* close socket */ - fsync(event_broker_socket); - close(event_broker_socket); - } - - return; - } - - - /* event broker thread - passes event data to external daemon */ - void * event_broker_worker_thread(void *arg){ - char temp_buffer[MAX_INPUT_BUFFER]; - struct timeval tv; - struct timeval start_time; - int write_result; - int hello_attr; - int x; - int broker_socket_open; - struct sockaddr_un sa; - int len; - - /* specify cleanup routine */ - pthread_cleanup_push(cleanup_event_broker_worker_thread,NULL); - - /* set cancellation info */ - pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL); - pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL); - - gettimeofday(&start_time,NULL); - - /***** MAKE THE CONNECTION (OR RECONNECT) TO BROKER SOCKET *****/ - - /* you have to love GOTO statements... */ - brokerconnect: - - #ifdef DEBUGBROKER - printf("Attempting to (re)connect to socket...\n"); - #endif - - /* initialize socket */ - while((event_broker_socket=socket(AF_UNIX,SOCK_STREAM,0))==-1){ - - #ifdef DEBUGBROKER - printf("We couldn't initialize socket: %s\n",strerror(errno)); - #endif - - for(x=0;x<10;x++){ - - /* should we shutdown? */ - pthread_testcancel(); - - /* wait a bit */ - tv.tv_sec=0; - tv.tv_usec=500000; - select(0,NULL,NULL,NULL,&tv); - } - } - - /* initialize socket address */ - sa.sun_family=AF_UNIX; - strncpy(sa.sun_path,event_broker_file,108); - sa.sun_path[107]='\x0'; - len=sizeof(sa.sun_family)+strlen(sa.sun_path); - - hello_attr=NEBATTR_NONE; - - /* connect to the socket */ - while(connect(event_broker_socket,(struct sockaddr *)&sa,len)==-1){ - - #ifdef DEBUGBROKER - printf("We couldn't connect to broker socket: %s\n",strerror(errno)); - #endif - - /* flag this as a potential error */ - if(!(hello_attr & NEBATTR_BROKERFILE_ERROR)) - hello_attr+=NEBATTR_BROKERFILE_ERROR; - - for(x=0;x<10;x++){ - - /* should we shutdown? */ - pthread_testcancel(); - - /* wait a bit */ - tv.tv_sec=0; - tv.tv_usec=500000; - select(0,NULL,NULL,NULL,&tv); - } - } - - #ifdef DEBUGBROKER - printf("We CONNECTED!\n"); - #endif - - /* socket should be nonblocking */ - fcntl(event_broker_socket,F_SETFL,O_NONBLOCK); - - /* flag the socket as just having been opened */ - broker_socket_open=FALSE; - - while(1){ - - /* should we shutdown? */ - pthread_testcancel(); - - /* wait a bit */ - tv.tv_sec=0; - tv.tv_usec=500000; - select(0,NULL,NULL,NULL,&tv); - - /* should we shutdown? */ - pthread_testcancel(); - - /* broker socket was just opened - say hello... */ - if(broker_socket_open==FALSE){ - - gettimeofday(&tv,NULL); - snprintf(temp_buffer,sizeof(temp_buffer)-1,"[%lu.%d] %d;%d;%d;%lu.%d;%s\n",tv.tv_sec,(tv.tv_usec/1000),NEBTYPE_HELLO,NEBFLAG_NONE,hello_attr,start_time.tv_sec,(start_time.tv_usec/1000),PROGRAM_VERSION); - temp_buffer[sizeof(temp_buffer)-1]='\x0'; - len=strlen(temp_buffer); - write_result=write_event_broker_data(event_broker_socket,temp_buffer,&len); - - /* handle disconnects... */ - if(write_result==-1 && (errno!=EAGAIN && errno!=EWOULDBLOCK)){ - close(event_broker_socket); - goto brokerconnect; - } - - #ifdef DEBUGBROKER - printf("SAID HELLO: %s\n",temp_buffer); - #endif - - broker_socket_open=TRUE; - } - - /* release lock on buffer */ - pthread_mutex_unlock(&event_broker_buffer.buffer_lock); - - /* process all data in the buffer */ - while(event_broker_buffer.items>0){ - - /* obtain a lock for reading from the buffer */ - pthread_mutex_lock(&event_broker_buffer.buffer_lock); - - /* report the amount data lost due to overflows */ - if(event_broker_buffer.overflow>0){ - - gettimeofday(&tv,NULL); - snprintf(temp_buffer,sizeof(temp_buffer)-1,"[%lu.%d] %d;%d;%d;%lu\n",tv.tv_sec,(tv.tv_usec/1000),NEBTYPE_INFO,NEBFLAG_NONE,NEBATTR_BUFFER_OVERFLOW,event_broker_buffer.overflow); - temp_buffer[sizeof(temp_buffer)-1]='\x0'; - len=strlen(temp_buffer); - write_result=write_event_broker_data(event_broker_socket,temp_buffer,&len); - - /* handle disconnects... */ - if(write_result==-1 && (errno!=EAGAIN && errno!=EWOULDBLOCK)){ - close(event_broker_socket); - pthread_mutex_unlock(&event_broker_buffer.buffer_lock); - goto brokerconnect; - } - - /* reset overflow counter */ - event_broker_buffer.overflow=0L; - } - - /* write this buffer item to the broker socket */ - len=strlen(((char **)event_broker_buffer.buffer)[event_broker_buffer.tail]); - write_result=write_event_broker_data(event_broker_socket,((char **)event_broker_buffer.buffer)[event_broker_buffer.tail],&len); - - #ifdef DEBUGBROKER - printf("SENT: %s",((char **)event_broker_buffer.buffer)[event_broker_buffer.tail]); - #endif - - /* handle disconnects... */ - if(write_result==-1 && (errno!=EAGAIN && errno!=EWOULDBLOCK)){ - close(event_broker_socket); - pthread_mutex_unlock(&event_broker_buffer.buffer_lock); - goto brokerconnect; - } - - /* the write was okay */ - else{ - - /* free buffer data */ - free(((char **)event_broker_buffer.buffer)[event_broker_buffer.tail]); - - /* update the tail counter and items */ - event_broker_buffer.tail=(event_broker_buffer.tail + 1) % EVENT_BUFFER_SLOTS; - event_broker_buffer.items--; - } - - /* release lock on buffer */ - pthread_mutex_unlock(&event_broker_buffer.buffer_lock); - - /* should we shutdown? */ - pthread_testcancel(); - } - } - - /* removes cleanup handler */ - pthread_cleanup_pop(0); - - return NULL; - } - - - /* sends data to event broker worker socket - modelled after Beej's sendall() function */ - int write_event_broker_data(int sock, char *buf, int *len){ - int total=0; - int bytesleft=*len; - int n=0; - struct pollfd pfd; - int pollval; - - /* check for null string */ - if(buf==NULL){ - *len=0; - return 0; - } - - while(total<*len){ - - /* try and send whatever is left */ - n=send(sock,buf+total,bytesleft,MSG_NOSIGNAL); - - /* a critical error occurred, so bail */ - if(n==-1 && errno!=EAGAIN && errno!=EWOULDBLOCK) - break; - - /* wait a bit before we retry the send */ - if(n==-1){ - #ifdef DEBUGBROKER - printf("Send Error: %s\n",(errno==EAGAIN)?"EAGAIN":"EWOULDBLOCK"); - #endif - pfd.fd=sock; - pfd.events=POLLOUT; - pollval=poll(&pfd,1,100); - - /* bail if there are critical errors */ - if(pollval>0 && ((pfd.revents & POLLHUP) || (pfd.revents & POLLERR) || (pfd.revents & POLLNVAL))) - break; - } - - /* we were able to send some data, so update counters */ - if(n>=0){ - total+=n; - bytesleft-=n; - } - } - - /* return number of bytes actually sent here */ - *len=total; - - /* return -1 on failure, 0 on success */ - return (n==-1)?-1:0; - } #endif --- 359,362 ---- Index: config.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/config.c,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -r1.34 -r1.35 *** config.c 15 Aug 2003 01:34:09 -0000 1.34 --- config.c 19 Aug 2003 04:19:11 -0000 1.35 *************** *** 4,8 **** * * Copyright (c) 1999-2003 Ethan Galstad (na...@na...) ! * Last Modified: 08-14-2003 * * License: --- 4,8 ---- * * Copyright (c) 1999-2003 Ethan Galstad (na...@na...) ! * Last Modified: 08-15-2003 * * License: *************** *** 28,31 **** --- 28,33 ---- #include "../include/objects.h" #include "../include/nagios.h" + #include "../include/nebmods.h" + #include "../include/nebmodules.h" *************** *** 37,41 **** extern char *auth_file; extern char *p1_file; - extern char *event_broker_file; extern char *nagios_user; --- 39,42 ---- *************** *** 211,214 **** --- 212,217 ---- int error=FALSE; int command_check_interval_is_seconds=FALSE; + char *modptr; + char *argptr; #ifdef DEBUG0 *************** *** 1213,1232 **** #endif } - else if(!strcmp(variable,"event_broker_file")){ - if(strlen(value)>MAX_FILENAME_LENGTH-1){ - strcpy(error_message,"Event broker file is too long"); - error=TRUE; - break; - } - - if(event_broker_file!=NULL) - free(event_broker_file); - event_broker_file=(char *)strdup(value); - strip(event_broker_file); - - #ifdef DEBUG1 - printf("\t\tevent_broker_file set to '%s'\n",event_broker_file); - #endif - } else if(!strcmp(variable,"event_broker_options")){ strip(value); --- 1216,1219 ---- *************** *** 1248,1251 **** --- 1235,1245 ---- #ifdef DEBUG1 printf("\t\tillegal_macro_output_chars set to '%s'\n",illegal_output_chars); + #endif + } + else if(!strcmp(variable,"nebmodule")){ + modptr=strtok(value," \n"); + argptr=strtok(NULL,"\n"); + #ifdef USE_EVENT_BROKER + neb_add_module(modptr,argptr,TRUE); #endif } Index: nagios.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/nagios.c,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -r1.51 -r1.52 *** nagios.c 15 Aug 2003 01:34:09 -0000 1.51 --- nagios.c 19 Aug 2003 04:19:11 -0000 1.52 *************** *** 9,13 **** * * First Written: 01-28-1999 (start of development) ! * Last Modified: 08-14-2003 * * Description: --- 9,13 ---- * * First Written: 01-28-1999 (start of development) ! * Last Modified: 08-18-2003 * * Description: *************** *** 47,50 **** --- 47,52 ---- #include "../include/perfdata.h" #include "../include/broker.h" + #include "../include/nebmods.h" + #include "../include/nebmodules.h" *************** *** 57,62 **** char *p1_file=NULL; /**** EMBEDDED PERL ****/ char *auth_file=NULL; /**** EMBEDDED PERL INTERPRETER AUTH FILE ****/ - char *event_broker_file=NULL; - char *nagios_user=NULL; char *nagios_group=NULL; --- 59,62 ---- *************** *** 199,203 **** circular_buffer external_command_buffer; circular_buffer service_result_buffer; - circular_buffer event_broker_buffer; pthread_t worker_threads[TOTAL_WORKER_THREADS]; --- 199,202 ---- *************** *** 479,484 **** #ifdef USE_EVENT_BROKER ! /* initialize event broker worker thread */ ! init_event_broker_worker_thread(); /* send program data to broker */ --- 478,485 ---- #ifdef USE_EVENT_BROKER ! /* load modules */ ! neb_init_modules(); ! neb_init_callback_list(); ! neb_load_all_modules(); /* send program data to broker */ *************** *** 508,512 **** /* send program data to broker */ broker_program_state(NEBTYPE_PROCESS_SHUTDOWN,NEBFLAG_PROCESS_INITIATED,NEBATTR_SHUTDOWN_ABNORMAL,NULL); - shutdown_event_broker_worker_thread(); #endif cleanup(); --- 509,512 ---- *************** *** 537,541 **** /* send program data to broker */ broker_program_state(NEBTYPE_PROCESS_SHUTDOWN,NEBFLAG_PROCESS_INITIATED,NEBATTR_SHUTDOWN_ABNORMAL,NULL); - shutdown_event_broker_worker_thread(); #endif cleanup(); --- 537,540 ---- *************** *** 577,581 **** /* send program data to broker */ broker_program_state(NEBTYPE_PROCESS_SHUTDOWN,NEBFLAG_PROCESS_INITIATED,NEBATTR_SHUTDOWN_ABNORMAL,NULL); - shutdown_event_broker_worker_thread(); #endif cleanup(); --- 576,579 ---- *************** *** 583,592 **** } - - #ifdef USE_EVENT_BROKER - /* start the event broker */ - start_event_broker_worker_thread(); - #endif - /* initialize status data */ initialize_status_data(config_file); --- 581,584 ---- *************** *** 624,628 **** /* send program data to broker */ broker_program_state(NEBTYPE_PROCESS_SHUTDOWN,NEBFLAG_PROCESS_INITIATED,NEBATTR_SHUTDOWN_ABNORMAL,NULL); - shutdown_event_broker_worker_thread(); #endif cleanup(); --- 616,619 ---- *************** *** 644,648 **** /* send program data to broker */ broker_program_state(NEBTYPE_PROCESS_SHUTDOWN,NEBFLAG_PROCESS_INITIATED,NEBATTR_SHUTDOWN_ABNORMAL,NULL); - shutdown_event_broker_worker_thread(); #endif cleanup(); --- 635,638 ---- *************** *** 694,697 **** --- 684,695 ---- shutdown_service_result_worker_thread(); + #ifdef USE_EVENT_BROKER + /* unload modules */ + neb_unload_all_modules(NEBMODULE_FORCE_UNLOAD,(sigshutdown==TRUE)?NEBMODULE_NEB_SHUTDOWN:NEBMODULE_NEB_RESTART); + neb_free_module_list(); + neb_free_callback_list(); + neb_deinit_modules(); + #endif + /* shutdown stuff... */ if(sigshutdown==TRUE){ *************** *** 706,714 **** write_to_logs_and_console(buffer,NSLOG_PROCESS_INFO,TRUE); } - - #ifdef USE_EVENT_BROKER - /* cleanup event broker */ - shutdown_event_broker_worker_thread(); - #endif /* clean up after ourselves */ --- 704,707 ---- Index: nagiostats.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/nagiostats.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** nagiostats.c 15 Aug 2003 01:34:09 -0000 1.3 --- nagiostats.c 19 Aug 2003 04:19:11 -0000 1.4 *************** *** 8,12 **** * Copyright (c) 2003 Ethan Galstad (na...@na...) * ! * Last Modified: 08-14-2003 * * License: --- 8,12 ---- * Copyright (c) 2003 Ethan Galstad (na...@na...) * ! * Last Modified: 08-18-2003 * * License: *************** *** 283,287 **** /* read main config file */ result=read_config_file(); ! if(result==ERROR){ printf("Error processing config file '%s'\n",main_config_file); return ERROR; --- 283,287 ---- /* read main config file */ result=read_config_file(); ! if(result==ERROR && mrtg_mode==FALSE){ printf("Error processing config file '%s'\n",main_config_file); return ERROR; *************** *** 290,294 **** /* read the status file */ result=read_status_file(); ! if(result==ERROR){ printf("Error reading status file '%s'\n",status_file); return ERROR; --- 290,294 ---- /* read the status file */ result=read_status_file(); ! if(result==ERROR && mrtg_mode==FALSE){ printf("Error reading status file '%s'\n",status_file); return ERROR; Index: utils.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/utils.c,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -r1.50 -r1.51 *** utils.c 15 Aug 2003 01:34:09 -0000 1.50 --- utils.c 19 Aug 2003 04:19:11 -0000 1.51 *************** *** 4,8 **** * * Copyright (c) 1999-2003 Ethan Galstad (na...@na...) ! * Last Modified: 08-14-2003 * * License: --- 4,8 ---- * * Copyright (c) 1999-2003 Ethan Galstad (na...@na...) ! * Last Modified: 08-15-2003 * * License: *************** *** 71,75 **** extern char *auth_file; extern char *p1_file; - extern char *event_broker_file; extern char *nagios_user; --- 71,74 ---- *************** *** 3937,3941 **** p1_file=(char *)strdup(DEFAULT_P1_FILE); log_archive_path=(char *)strdup(DEFAULT_LOG_ARCHIVE_PATH); - event_broker_file=(char *)strdup(DEFAULT_EVENT_BROKER_FILE); nagios_user=(char *)strdup(DEFAULT_NAGIOS_USER); --- 3936,3939 ---- |