diff --git a/channels/h323/chan_h323.c b/channels/h323/chan_h323.c index 24f9ed9e1e4d83dd4ef1365726dd3bc0be8d452f..52a989f541f87c46b35c7c0d536a4a4b90220b8d 100755 --- a/channels/h323/chan_h323.c +++ b/channels/h323/chan_h323.c @@ -961,8 +961,14 @@ int setup_incoming_call(call_details_t cd) } else { if (user->host) { if (strcasecmp(cd.sourceIp, inet_ntoa(user->addr.sin_addr))){ - ast_log(LOG_ERROR, "Call from user '%s' rejected due to non-matching IP address of '%s'\n", user->name, cd.sourceIp); - return 0; + + if(!strlen(default_context)) { + ast_log(LOG_ERROR, "Call from user '%s' rejected due to non-matching IP address of '%s'\n", user->name, cd.sourceIp); + return 0; + } + strncpy(p->context, default_context, sizeof(p->context)-1); + sprintf(p->exten,"i"); + goto exit; } } if (user->incominglimit > 0) { @@ -993,7 +999,9 @@ int setup_incoming_call(call_details_t cd) user->inUse++; } } - + +/* I know this is horrid, don't kill me saddam */ +exit: /* allocate a channel and tell asterisk about it */ c = oh323_new(p, AST_STATE_RINGING, cd.call_token);