Sorry, bad patch included in last mail.

Jan Friesse wrote:
This patch fixes evt.c, so now no warnings are there.

Regards,
  Honza


Index: services/evt.c
===================================================================
--- services/evt.c	(revision 1871)
+++ services/evt.c	(working copy)
@@ -109,7 +109,7 @@
 static void lib_evt_unlink_channel(void *conn, const void *message);
 static void lib_evt_event_subscribe(void *conn, const void *message);
 static void lib_evt_event_unsubscribe(void *conn, const void *message);
-static void lib_evt_event_publish(void *conn, void *message);
+static void lib_evt_event_publish(void *conn, const void *message);
 static void lib_evt_event_clear_retentiontime(void *conn, const void *message);
 static void lib_evt_event_data_get(void *conn, const void *message);
 
@@ -182,8 +182,8 @@
 };
 
 
-static void evt_remote_evt(void *msg, unsigned int nodeid);
-static void evt_remote_recovery_evt(void *msg, unsigned int nodeid);
+static void evt_remote_evt(const void *msg, unsigned int nodeid);
+static void evt_remote_recovery_evt(const void *msg, unsigned int nodeid);
 static void evt_remote_chan_op(const void *msg, unsigned int nodeid);
 
 static struct corosync_exec_handler evt_exec_engine[] = {
@@ -2691,9 +2685,10 @@
 /*
  * saEvtEventPublish Handler
  */
-static void lib_evt_event_publish(void *conn, void *message)
+static void lib_evt_event_publish(void *conn, const void *message)
 {
-	struct lib_event_data *req = message;
+	struct lib_event_data *req;
+	const struct lib_event_data *req_ro = message;
 	struct res_evt_event_publish res;
 	struct event_svr_channel_open	*eco;
 	struct event_svr_channel_instance *eci;
@@ -2705,6 +2700,7 @@
 	int result;
 	unsigned int ret;
 	struct libevt_pd *esip;
+	size_t ed_size;
 
 	esip = (struct libevt_pd *)api->ipc_private_data_get(conn);
 
@@ -2713,6 +2709,13 @@
 
 
 	/*
+	 * Allocate new req and copy there message
+	 */
+	ed_size = sizeof (*req) + req_ro->led_user_data_offset + req_ro->led_user_data_size;
+	req = alloca (ed_size);
+	memcpy (req, message, ed_size);
+
+	/*
 	 * look up and validate open channel info
 	 */
 	ret = hdb_handle_get(&esip->esi_hdb,
@@ -2903,7 +2906,7 @@
 {
 	log_printf(RECOVERY_DEBUG, "Evt conf change %d\n",
 			configuration_type);
-	log_printf(RECOVERY_DEBUG, "m %"PRIu64", j %"PRIu64" l %"PRIu64,
+	log_printf(RECOVERY_DEBUG, "m %u, j %u l %u",
 					member_list_entries,
 					joined_list_entries,
 					left_list_entries);
@@ -3207,7 +3210,7 @@
 /*
  * Receive the network event message and distribute it to local subscribers
  */
-static void evt_remote_evt(void *msg, unsigned int nodeid)
+static void evt_remote_evt(const void *msg, unsigned int nodeid)
 {
 	/*
 	 * - retain events that have a retention time
@@ -3216,10 +3219,11 @@
 	 * - Apply filters
 	 * - Deliver events that pass the filter test
 	 */
-	struct lib_event_data *evtpkt = msg;
+	const struct lib_event_data *evtpkt = msg;
 	struct event_svr_channel_instance *eci;
 	struct event_data *evt;
 	SaClmClusterNodeT *cn;
+	mar_time_t evtpkt_recieve_time;
 
 	log_printf(LOGSYS_LEVEL_DEBUG, "Remote event data received from nodeid %s\n",
 			api->totem_ifaces_print (nodeid));
@@ -3241,9 +3245,7 @@
 	log_printf(LOGSYS_LEVEL_DEBUG, "Cluster node ID %s name %s\n",
 					api->totem_ifaces_print (cn->nodeId), cn->nodeName.value);
 
-	evtpkt->led_publisher_node_id = nodeid;
-	evtpkt->led_nodeid = nodeid;
-	evtpkt->led_receive_time = clust_time_now();
+	evtpkt_recieve_time = clust_time_now();
 
 	if (evtpkt->led_chan_unlink_id != EVT_CHAN_ACTIVE) {
 		log_printf(CHAN_UNLINK_DEBUG,
@@ -3288,6 +3290,10 @@
 		return;
 	}
 
+	evt->ed_event.led_publisher_node_id = nodeid;
+	evt->ed_event.led_nodeid = nodeid;
+	evt->ed_event.led_receive_time = evtpkt_recieve_time;
+
 	if (evt->ed_event.led_retention_time) {
 		retain_event(evt);
 	}
@@ -3312,7 +3318,7 @@
 /*
  * Receive a recovery network event message and save it in the retained list
  */
-static void evt_remote_recovery_evt(void *msg, unsigned int nodeid)
+static void evt_remote_recovery_evt(const void *msg, unsigned int nodeid)
 {
 	/*
 	 * - calculate remaining retention time
@@ -3321,12 +3327,13 @@
 	 * - Apply filters
 	 * - Deliver events that pass the filter test
 	 */
-	struct lib_event_data *evtpkt = msg;
+	const struct lib_event_data *evtpkt = msg;
 	struct event_svr_channel_instance *eci;
 	struct event_data *evt;
 	struct member_node_data *md;
 	int num_delivered;
 	mar_time_t now;
+	mar_time_t evtpkt_retention_time;
 
 	now = clust_time_now();
 
@@ -3351,7 +3358,7 @@
 	/*
 	 * Calculate remaining retention time
 	 */
-	evtpkt->led_retention_time = calc_retention_time(
+	evtpkt_retention_time = calc_retention_time(
 				evtpkt->led_retention_time,
 				evtpkt->led_receive_time,
 				now);
@@ -3410,6 +3417,8 @@
 			return;
 		}
 
+		evt->ed_event.led_retention_time = evtpkt_retention_time;
+
 		retain_event(evt);
 		num_delivered = try_deliver_event(evt, eci);
 		log_printf(RECOVERY_EVENT_DEBUG, "Delivered to %d subscribers\n",
_______________________________________________
Openais mailing list
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to