diff --git a/apps/app_directed_pickup.c b/apps/app_directed_pickup.c
index 640911317e6f890404349f10ce7d7044ef2038b9..605d11faff1916866c1f6144b7f6e22300dd7dcf 100644
--- a/apps/app_directed_pickup.c
+++ b/apps/app_directed_pickup.c
@@ -163,8 +163,8 @@ static int pickup_by_channel(struct ast_channel *chan, char *pickup)
 	/* Just check that we are not picking up the SAME as target */
 	if (chan->name != target->name && chan != target) {
 		res = pickup_do(chan, target);
-		ast_channel_unlock(target);
 	}
+	ast_channel_unlock(target);
 
 	return res;
 }