diff --git a/main/manager.c b/main/manager.c
index 57f081ab0d28a44744ca5edf167a4a33d491c0bb..e5dbc3a92a23ce7c9d4c6d431aa9e2a20cf4fbea 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -1787,13 +1787,11 @@ static int action_hangup(struct mansession *s, const struct message *m)
 		return 0;
 	}
 	if (causecode > 0) {
-		if (option_debug >= 1) {
-			ast_log(LOG_DEBUG, "Setting hangupcause of channel %s to %d (is %d now)\n",
+		ast_debug(1, "Setting hangupcause of channel %s to %d (is %d now)\n",
 				c->name, causecode, c->hangupcause);
-		}
 		c->hangupcause = causecode;
 	}
-	ast_softhangup(c, AST_SOFTHANGUP_EXPLICIT);
+	ast_softhangup_nolock(c, AST_SOFTHANGUP_EXPLICIT);
 	ast_channel_unlock(c);
 	astman_send_ack(s, m, "Channel Hungup");
 	return 0;