diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index d89e00c2e93400396e7245347c33bb58683332e4..3aea0d49d9053c73b8eb4a26da611da3c19aa0f0 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -205,6 +205,7 @@ static struct ooh323_pvt { char rtpmaskstr[120]; int rtdrcount, rtdrinterval; /* roundtripdelayreq */ int faststart, h245tunneling; /* faststart & h245 tunneling */ + int aniasdni; /* use dialed number as answering identification */ struct ooh323_pvt *next; /* Next entity */ } *iflist = NULL; @@ -237,6 +238,7 @@ struct ooh323_user{ int directrtp; int earlydirect; int g729onlyA; + int aniasdni; struct ooh323_user *next; }; @@ -344,6 +346,7 @@ OOBOOL gH323Debug = FALSE; static int gTRCLVL = OOTRCLVLERR; static int gRTDRCount = 0, gRTDRInterval = 0; static int gNat = FALSE; +static int gANIasDNI = 0; static int t35countrycode = 0; static int t35extensions = 0; @@ -557,6 +560,8 @@ static struct ooh323_pvt *ooh323_alloc(int callref, char *callToken) ast_format_cap_copy(pvt->cap, gCap); memcpy(&pvt->prefs, &gPrefs, sizeof(pvt->prefs)); + pvt->aniasdni = gANIasDNI; + ast_mutex_unlock(&pvt->lock); /* Add to interface list */ ast_mutex_lock(&iflock); @@ -1897,6 +1902,9 @@ int ooh323_onReceivedSetup(ooCallData *call, Q931Message *pmsg) p->rtdrcount = user->rtdrcount; p->rtdrinterval = user->rtdrinterval; } + + p->aniasdni = user->aniasdni; + if (user->incominglimit) user->inUse++; ast_mutex_unlock(&user->lock); } else { @@ -1929,6 +1937,10 @@ int ooh323_onReceivedSetup(ooCallData *call, Q931Message *pmsg) ast_log(LOG_ERROR, "Could not create ast_channel\n"); return -1; } + + if (p->aniasdni) { + ooCallSetCallerId(call, p->exten); + } if (!configure_local_rtp(p, call)) { ast_mutex_unlock(&p->lock); ast_log(LOG_ERROR, "Couldn't create rtp structure\n"); @@ -2430,6 +2442,8 @@ static struct ooh323_user *build_user(const char *name, struct ast_variable *v) user->t38support = T38_FAXGW; else if (!strcasecmp(v->value, "yes")) user->t38support = T38_ENABLED; + } else if (!strcasecmp(v->name, "aniasdni")) { + user->aniasdni = ast_true(v->value); } v = v->next; } @@ -3049,6 +3063,8 @@ int reload_config(int reload) } else if (!strcasecmp(v->name, "tracelevel")) { gTRCLVL = atoi(v->value); ooH323EpSetTraceLevel(gTRCLVL); + } else if (!strcasecmp(v->name, "aniasdni")) { + gANIasDNI = ast_true(v->value); } v = v->next; } diff --git a/configs/ooh323.conf.sample b/configs/ooh323.conf.sample index d8ccdcf000d11544031b89940826f673ec1e248d..aeeb02fab3d1aafb55a19e9371688a029a8afcd9 100644 --- a/configs/ooh323.conf.sample +++ b/configs/ooh323.conf.sample @@ -72,6 +72,10 @@ e164=100 ;Default - Same as h323id callerid=asterisk +; Whether asterisk send back to caller own connected line id on incoming call as called number +; Default - no +aniasdni=no + ;Whether this asterisk server will use gatekeeper. ;Default - DISABLE ;gatekeeper = DISCOVER