diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 95899a8b4b911ff3988327dadd9664b57ab555f8..1f3541f322c3079158ba19195ab7dab51a366daf 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -6573,7 +6573,6 @@ int unload_module()
 	struct sip_pvt *p, *pl;
 	
 	/* First, take us out of the channel loop */
-	ast_channel_unregister(type);
 	ast_unregister_application(app_dtmfmode);
 	ast_cli_unregister(&cli_show_users);
 	ast_cli_unregister(&cli_show_channels);
@@ -6584,6 +6583,7 @@ int unload_module()
 	ast_cli_unregister(&cli_no_debug);
 	ast_cli_unregister(&cli_inuse_show);
 	ast_rtp_proto_unregister(&sip_rtp);
+	ast_channel_unregister(type);
 	if (!ast_mutex_lock(&iflock)) {
 		/* Hangup all interfaces if they have an owner */
 		p = iflist;