diff --git a/apps/app_macro.c b/apps/app_macro.c
index 53235e34f98e605d205bee12a3cb3aed42ea268e..55b3df48a11f42f5325ab0ee7bb2af7aa3d56848 100755
--- a/apps/app_macro.c
+++ b/apps/app_macro.c
@@ -163,7 +163,8 @@ static int macro_exec(struct ast_channel *chan, void *data)
 			ast_verbose(VERBOSE_PREFIX_2 "Channel '%s' jumping out of macro '%s'\n", chan->name, macro);
 		break;
 	}
-	if (chan->_softhangup) {
+	/* don't stop executing extensions when we're in "h" */
+	if (chan->_softhangup && strcasecmp(chan->exten,"h")) {
 		ast_log(LOG_DEBUG, "Extension %s, priority %d returned normally even though call was hung up\n",
 			chan->exten, chan->priority);
 		goto out;