diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index b3895c47ae057729969453cf07197294fcc44482..71be99a4cf59a1f41eec1dbb43c820af124396b6 100644
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -2586,6 +2586,7 @@ static int unload_module(void *mod)
 {
 	struct agent_pvt *p;
 	/* First, take us out of the channel loop */
+	ast_channel_unregister(&agent_tech);
 	/* Unregister dialplan functions */
 	ast_custom_function_unregister(&agent_function);	
 	/* Unregister CLI commands */
@@ -2610,7 +2611,6 @@ static int unload_module(void *mod)
 	}
 	AST_LIST_UNLOCK(&agents);
 	AST_LIST_HEAD_DESTROY(&agents);
-	ast_channel_unregister(&agent_tech);
 	return 0;
 }