diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c
index 3a7e6f5d29329ff30568a14b983e4a05693ba66d..e144fda480bc76133b68c4174be971adec4ac23e 100644
--- a/src/managesieve/managesieve-client.c
+++ b/src/managesieve/managesieve-client.c
@@ -673,7 +673,7 @@ static bool client_handle_input(struct client_command_context *cmd)
 		/* command not given - cmd_func is already NULL. */
 	} else {
 		/* find the command function */
-		struct command *command = command_find(cmd->name);
+		const struct command *command = command_find(cmd->name);
 
 		if (command != NULL)
 			cmd->func = command->func;
diff --git a/src/managesieve/managesieve-commands.c b/src/managesieve/managesieve-commands.c
index 87e20484e7d9fc42762f42452e32ac59fc8435e3..fc65bbbee3bf76092811ac6b831e27f2c1ea1f1f 100644
--- a/src/managesieve/managesieve-commands.c
+++ b/src/managesieve/managesieve-commands.c
@@ -83,7 +83,7 @@ static int command_bsearch(const char *name, const struct command *cmd)
 	return strcasecmp(name, cmd->name);
 }
 
-struct command *command_find(const char *name)
+const struct command *command_find(const char *name)
 {
 	if (commands_unsorted) {
 		array_sort(&managesieve_commands, command_cmp);
diff --git a/src/managesieve/managesieve-commands.h b/src/managesieve/managesieve-commands.h
index d922b74b35b40465ef9109ff2184408d41165c8c..22e4a4b168736c18aacb237c248f1c84e3d13584 100644
--- a/src/managesieve/managesieve-commands.h
+++ b/src/managesieve/managesieve-commands.h
@@ -21,7 +21,7 @@ void command_unregister(const char *name);
 void command_register_array(const struct command *cmdarr, unsigned int count);
 void command_unregister_array(const struct command *cmdarr, unsigned int count);
 
-struct command *command_find(const char *name);
+const struct command *command_find(const char *name);
 
 void commands_init(void);
 void commands_deinit(void);