diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index e1e1e76c1d0389d66d33893c1add58fa92a592da..21cfd163ebb95d3f89fc5699d6f2bc26b40e80e5 100755
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -2883,7 +2883,7 @@ static int handle_request(struct mgcp_subchannel *sub, struct mgcp_request *req,
 						tmp_sub = tmp_ep->sub;
 						while (tmp_sub) {
 							if (tmp_sub->owner)
-								ast_softhangup(sub->owner, AST_SOFTHANGUP_DEV);
+								ast_softhangup(tmp_sub->owner, AST_SOFTHANGUP_DEV);
 							tmp_sub = tmp_sub->next;
 							if (tmp_sub == first_sub)
 								break;