Index: main/pbx.c =================================================================== --- main/pbx.c (revision 314115) +++ main/pbx.c (working copy) @@ -4993,6 +4993,7 @@ } else if (ast_exists_extension(c, c->context, "e", 1, S_COR(c->caller.id.number.valid, c->caller.id.number.str, NULL))) { pbx_builtin_raise_exception(c, "INVALID"); + set_ext_pri(c, "e", 1); } else { ast_log(LOG_WARNING, "Invalid extension '%s', but no rule 'i' in context '%s'\n", dst_exten, c->context); found = 1; /* XXX disable message */ @@ -9415,6 +9416,9 @@ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) { ast_verb(3, "Timeout on %s, going to 't'\n", chan->name); set_ext_pri(chan, "t", 0); /* 0 will become 1, next time through the loop */ + } else if (ast_exists_extension(chan, chan->context, "e", 1, + S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) { + pbx_builtin_raise_exception(chan, "RESPONSETIMEOUT"); } else { ast_log(LOG_WARNING, "Timeout but no rule 't' in context '%s'\n", chan->context); res = -1;