[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ossec-dev
Subject:    [ossec-dev] ossec-hids: agentd.c (HEAD) agentd.h (HEAD)
From:       OSSEC CVS <cvs-commit () ossec ! net>
Date:       2006-08-29 19:35:44
Message-ID: start_agent.c.1.2 () ossec ! net
[Download RAW message or body]


Module name:	ossec-hids
Changes by:	dcid	06/08/29 16:35:41

Modified files:
	agentd.c agentd.h event-forward.c notify.c receiver.c sendmsg.c
	start_agent.c

Log message:
Description: More fixes for the client/server control. Added global ossec lock and some new rules..
Reviewed by: dcid
Bug:

Index: agentd.c
===================================================================
RCS file: /usr/cvsroot/ossec-hids/src/client-agent/agentd.c,v
diff -u -r1.23 -r1.24
--- agentd.c	28 Aug 2006 18:45:24 -0000	1.23
+++ agentd.c	29 Aug 2006 19:35:41 -0000	1.24
@@ -118,9 +118,19 @@
     pthread_cond_init (&forwarder_cond, NULL);
     pthread_cond_init (&notify_cond, NULL);
 
-    
+
+    /* initializing global variables */
+    available_server = 0;     
+    available_forwarder = 0;     
+    available_receiver = 0;     
+
+     
     /* Trying to connect to server */
+    os_setwait();
+
     start_agent();
+    
+    os_delwait();
 
 
     /* Starting receiver thread.
@@ -256,8 +266,6 @@
          * have available.
          */
         sleep(1); 
-        
-        
     }
 }
 

Index: agentd.h
===================================================================
RCS file: /usr/cvsroot/ossec-hids/src/client-agent/agentd.h,v
diff -u -r1.10 -r1.11
--- agentd.h	28 Aug 2006 18:45:24 -0000	1.10
+++ agentd.h	29 Aug 2006 19:35:41 -0000	1.11
@@ -74,6 +74,7 @@
 #endif
 
 
+int available_server;
 int available_receiver;
 int available_forwarder;
 

Index: event-forward.c
===================================================================
RCS file: /usr/cvsroot/ossec-hids/src/client-agent/event-forward.c,v
diff -u -r1.6 -r1.7
--- event-forward.c	28 Aug 2006 18:45:24 -0000	1.6
+++ event-forward.c	29 Aug 2006 19:35:41 -0000	1.7
@@ -68,6 +68,24 @@
             msg[recv_b] = '\0';
             
             send_msg(0, msg);
+
+            /* Check if the server has responded */
+            if((time(0) - available_server) > (3*NOTIFY_TIME))
+            {
+                /* If response is not available, set lock and
+                 * wait for it.
+                 */
+                verbose(SERVER_UNAV, ARGV0);     
+                os_setwait();
+                
+                while((time(0) - available_server) > (3*NOTIFY_TIME))
+                {
+                    sleep(1);
+                }
+
+                verbose(SERVER_UP, ARGV0);
+                os_delwait();
+            }
         }
     }
     

Index: notify.c
===================================================================
RCS file: /usr/cvsroot/ossec-hids/src/client-agent/notify.c,v
diff -u -r1.7 -r1.8
--- notify.c	28 Aug 2006 18:45:24 -0000	1.7
+++ notify.c	29 Aug 2006 19:35:41 -0000	1.8
@@ -189,7 +189,6 @@
             merror(MUTEX_ERROR, ARGV0);
             return(NULL);
         }
-
     }
     
     return(NULL);

Index: receiver.c
===================================================================
RCS file: /usr/cvsroot/ossec-hids/src/client-agent/receiver.c,v
diff -u -r1.8 -r1.9
--- receiver.c	28 Aug 2006 18:45:24 -0000	1.8
+++ receiver.c	29 Aug 2006 19:35:41 -0000	1.9
@@ -60,8 +60,10 @@
             pthread_cond_wait(&receiver_cond, &receiver_mutex);
         }
 
+
         /* Setting availables to 0 */
         available_receiver = 0;
+
         
         /* Unlocking mutex */
         if(pthread_mutex_unlock(&receiver_mutex) != 0)
@@ -87,6 +89,10 @@
             /* Check for commands */
             if(IsValidHeader(tmp_msg))
             {
+                /* This is the only thread that modifies it */
+                available_server = (int)time(NULL);
+                
+                
                 /* If it is an active response message */
                 if(strncmp(tmp_msg, EXECD_HEADER, strlen(EXECD_HEADER)) == 0)
                 {
@@ -102,6 +108,13 @@
 
                     continue;
                 } 
+
+
+                /* Ack from server */
+                else if(strcmp(tmp_msg, HC_ACK) == 0)
+                {
+                    continue;
+                }
 
                 /* Close any open file pointer if it was being written to */
                 if(fp)

Index: sendmsg.c
===================================================================
RCS file: /usr/cvsroot/ossec-hids/src/client-agent/sendmsg.c,v
diff -u -r1.1 -r1.2
--- sendmsg.c	28 Aug 2006 18:45:24 -0000	1.1
+++ sendmsg.c	29 Aug 2006 19:35:41 -0000	1.2
@@ -31,7 +31,10 @@
 
     /* Send msg_size of crypt_msg */
     if(OS_SendUDPbySize(logr->sock, msg_size, crypt_msg) < 0)
+    {
         merror(SEND_ERROR,ARGV0, "server");
+        return(-1);
+    }
                                     
     return(0);
 }

Index: start_agent.c
===================================================================
RCS file: /usr/cvsroot/ossec-hids/src/client-agent/start_agent.c,v
diff -u -r1.1 -r1.2
--- start_agent.c	28 Aug 2006 18:45:24 -0000	1.1
+++ start_agent.c	29 Aug 2006 19:35:41 -0000	1.2
@@ -73,7 +73,7 @@
             if(IsValidHeader(tmp_msg))
             {
                 /* If it is an ack reply */
-                if(strcmp(tmp_msg, HC_STARTUP_ACK) == 0)
+                if(strcmp(tmp_msg, HC_ACK) == 0)
                 {
                     verbose(AG_CONNECTED, ARGV0);
 

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic