diff --git a/src/traft/node.rs b/src/traft/node.rs
index d3c8f68c3b7d66878da2711e9e78424cd4443b80..28aa14462b0974d1168514ae0543813b6d6e6d65 100644
--- a/src/traft/node.rs
+++ b/src/traft/node.rs
@@ -446,6 +446,14 @@ fn handle_read_states(
     }
 }
 
+fn handle_messages(messages: Vec<raft::Message>, pool: &ConnectionPool) {
+    for msg in messages {
+        if let Err(e) = pool.send(&msg) {
+            tlog!(Error, "{e}");
+        }
+    }
+}
+
 fn raft_main_loop(
     main_inbox: Mailbox<NormalRequest>,
     status: Rc<RefCell<Status>>,
@@ -631,15 +639,6 @@ fn raft_main_loop(
         }
 
         let mut ready: raft::Ready = raw_node.ready();
-
-        fn handle_messages(messages: Vec<raft::Message>, pool: &ConnectionPool) {
-            for msg in messages {
-                if let Err(e) = pool.send(&msg) {
-                    tlog!(Error, "{e}");
-                }
-            }
-        }
-
         let mut config_changed = false;
 
         start_transaction(|| -> Result<(), TransactionError> {