Commit 4834b93f authored by Willem Thiart's avatar Willem Thiart
Browse files

Added leader check for recv_entry

parent ff4295ea
......@@ -342,7 +342,7 @@ int raft_recv_requestvote_response(raft_server_t* me, int node,
* @param node Index of the node who sent us this message
* @param[out] r The resulting response
* @param e The entry message
* @return 0 on success */
* @return 0 on success, -1 if the server is not the leader */
int raft_recv_entry(raft_server_t* me, int node, msg_entry_t* e,
msg_entry_response_t *r);
......
......@@ -412,6 +412,9 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e,
raft_entry_t ety;
int res, i;
if (!raft_is_leader(me_))
return -1;
__log(me_, "received entry from: %d", node);
ety.term = me->current_term;
......
......@@ -1400,6 +1400,32 @@ void TestRaft_leader_responds_to_entry_msg_when_entry_is_committed(CuTest * tc)
CuAssertTrue(tc, 1 == cr.was_committed);
}
void TestRaft_non_leader_recv_entry_msg_fails(CuTest * tc)
{
msg_entry_response_t cr;
raft_cbs_t funcs = {
.log = NULL
};
void *sender = sender_new(NULL);
void *r = raft_new();
raft_set_callbacks(r, &funcs, sender);
raft_add_peer(r, (void*)1, 1);
raft_add_peer(r, (void*)2, 0);
raft_set_state(r, RAFT_STATE_FOLLOWER);
/* entry message */
msg_entry_t ety;
ety.id = 1;
ety.data = "entry";
ety.len = strlen("entry");
/* receive entry */
int e = raft_recv_entry(r, 1, &ety, &cr);
CuAssertTrue(tc, -1 == e);
}
/* 5.3 */
void TestRaft_leader_sends_appendentries_with_NextIdx_when_PrevIdx_gt_NextIdx(
CuTest * tc)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment