[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 (¬ify_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