|
@@ -193,7 +193,7 @@ static int ykd_attempt_send_msg (const void *context)
|
|
|
struct ykd_header header;
|
|
struct ykd_header header;
|
|
|
int res;
|
|
int res;
|
|
|
|
|
|
|
|
- header.id = YKD_HEADER_SENDSTATE;
|
|
|
|
|
|
|
+ header.id = YKD_HEADER_ATTEMPT;
|
|
|
|
|
|
|
|
iovec.iov_base = (char *)&header;
|
|
iovec.iov_base = (char *)&header;
|
|
|
iovec.iov_len = sizeof (struct ykd_header);
|
|
iovec.iov_len = sizeof (struct ykd_header);
|
|
@@ -343,6 +343,7 @@ static void ykd_deliver_fn (
|
|
|
int all_received = 1;
|
|
int all_received = 1;
|
|
|
int state_position = 0;
|
|
int state_position = 0;
|
|
|
int i;
|
|
int i;
|
|
|
|
|
+ struct ykd_header *header = (struct ykd_header *)msg;
|
|
|
char *msg_state = (char *)msg + sizeof (struct ykd_header);
|
|
char *msg_state = (char *)msg + sizeof (struct ykd_header);
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -390,6 +391,13 @@ static void ykd_deliver_fn (
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Ignore messages from a different state
|
|
|
|
|
+ */
|
|
|
|
|
+ if ((ykd_mode == YKD_MODE_SENDSTATE && header->id == YKD_HEADER_ATTEMPT) ||
|
|
|
|
|
+ (ykd_mode == YKD_MODE_ATTEMPT && header->id == YKD_HEADER_SENDSTATE))
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
switch (ykd_mode) {
|
|
switch (ykd_mode) {
|
|
|
case YKD_MODE_SENDSTATE:
|
|
case YKD_MODE_SENDSTATE:
|
|
|
assert (msg_len > sizeof (struct ykd_header));
|
|
assert (msg_len > sizeof (struct ykd_header));
|