Skip to content

Commit

Permalink
chan_dahdi: Fix Caller ID presentation for FXO ports.
Browse files Browse the repository at this point in the history
Currently, the presentation for incoming channels is
always available, because it is never actually set,
meaning the channel presentation can be nonsensical.
If the presentation from the incoming Caller ID spill
is private or unavailable, we now update the channel
presentation to reflect this.

Resolves: #120
ASTERISK-30333
ASTERISK-21741
  • Loading branch information
InterLinked1 authored and gtjoseph committed Jun 5, 2023
1 parent cfde21c commit 4176f57
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions channels/chan_dahdi.c
Expand Up @@ -1459,6 +1459,18 @@ static int my_get_callerid(void *pvt, char *namebuf, char *numbuf, enum analog_e
if (num)
ast_copy_string(numbuf, num, ANALOG_MAX_CID);

if (flags & (CID_PRIVATE_NUMBER | CID_UNKNOWN_NUMBER)) {
/* If we got a presentation, we must set it on the channel */
struct ast_channel *chan = analog_p->ss_astchan;
struct ast_party_caller caller;

ast_party_caller_set_init(&caller, ast_channel_caller(chan));
caller.id.name.presentation = caller.id.number.presentation = (flags & CID_PRIVATE_NUMBER) ?
AST_PRES_RESTRICTED | AST_PRES_USER_NUMBER_UNSCREENED : AST_PRES_UNAVAILABLE | AST_PRES_USER_NUMBER_UNSCREENED;
ast_party_caller_set(ast_channel_caller(chan), &caller, NULL);
ast_party_caller_free(&caller);
}

ast_debug(1, "CallerID number: %s, name: %s, flags=%d\n", num, name, flags);
return 0;
}
Expand Down

0 comments on commit 4176f57

Please sign in to comment.