Index: channels/chan_iax2.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_iax2.c,v retrieving revision 1.269 diff -u -r1.269 chan_iax2.c --- channels/chan_iax2.c 6 Apr 2005 21:12:32 -0000 1.269 +++ channels/chan_iax2.c 15 Apr 2005 19:45:34 -0000 @@ -5904,7 +5904,8 @@ /* Must be started */ if (!strcmp(callednum, ast_parking_ext()) || ast_exists_extension(NULL, context, callednum, 1, callerid)) { dpstatus = IAX_DPSTATUS_EXISTS; - } else if (ast_canmatch_extension(NULL, context, callednum, 1, callerid)) { + } else if (ast_canmatch_extension(NULL, context, callednum, 1, callerid) || + ast_exists_extension(NULL, context, "i", 1, callerid)) { dpstatus = IAX_DPSTATUS_CANEXIST; } else { dpstatus = IAX_DPSTATUS_NONEXISTANT; @@ -6580,7 +6581,7 @@ /* This might re-enter the IAX code and need the lock */ if (strcasecmp(iaxs[fr.callno]->exten, "TBD")) { ast_mutex_unlock(&iaxsl[fr.callno]); - exists = ast_exists_extension(NULL, iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num); + exists = ast_exists_extension(NULL, iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num) || ast_exists_extension(NULL, iaxs[fr.callno]->context, "i", 1, iaxs[fr.callno]->cid_num); ast_mutex_lock(&iaxsl[fr.callno]); } else exists = 0; @@ -6975,7 +6976,7 @@ } if (strcasecmp(iaxs[fr.callno]->exten, "TBD")) { /* This might re-enter the IAX code and need the lock */ - exists = ast_exists_extension(NULL, iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num); + exists = ast_exists_extension(NULL, iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num) || ast_exists_extension(NULL, iaxs[fr.callno]->context, "i", 1, iaxs[fr.callno]->cid_num); } else exists = 0; if (strcmp(iaxs[fr.callno]->exten, "TBD") && !exists) { @@ -7116,7 +7117,7 @@ if (iaxs[fr.callno]->state & IAX_STATE_TBD) { iaxs[fr.callno]->state &= ~IAX_STATE_TBD; strncpy(iaxs[fr.callno]->exten, ies.called_number ? ies.called_number : "s", sizeof(iaxs[fr.callno]->exten)-1); - if (!ast_exists_extension(NULL, iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num)) { + if (!ast_exists_extension(NULL, iaxs[fr.callno]->context, iaxs[fr.callno]->exten, 1, iaxs[fr.callno]->cid_num) && !ast_exists_extension(NULL, iaxs[fr.callno]->context, "i", 1, iaxs[fr.callno]->cid_num)) { if (authdebug) ast_log(LOG_NOTICE, "Rejected dial attempt from %s, request '%s@%s' does not exist\n", ast_inet_ntoa(iabuf, sizeof(iabuf), sin.sin_addr), iaxs[fr.callno]->exten, iaxs[fr.callno]->context); memset(&ied0, 0, sizeof(ied0));