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