Summary:ASTERISK-29991: chan_dahdi, callerid: Caller ID does not honor presentation
Reporter:N A (InterLinked)Labels:
Date Opened:2022-03-27 15:33:56Date Closed:2022-07-14 07:11:27
Status:Closed/CompleteComponents:Channels/chan_dahdi Core/CallerID
Versions:18.6.0 Frequency of
Description:There are several problems with the chan_dahdi.c/callerid.c code that cause Caller ID to not work the way it should.

1. The simple_switch (built in) *67/*82 simply clear or fill the Caller ID name and number. This is wrong. *67 is supposed to modify the presentation. It should have no impact on the name/number itself.

2. CALLERID(pres) is completely ignored for analog Caller ID. Even if if you set CALLERID(pres) to prohib_not_screened, for instance, the analog line *still gets Caller ID!* In contrast, if you were to call an ATA (using PJSIP, for instance, or SIP) the ATA does the correct thing and the phone will see "PRIVATE CALLER" on the screen.

But with DAHDI, nothing works as expected:

[Mar 26 18:52:32]     -- Executing [5@ring:1] NoOp("DAHDI/8-1", "Pres: prohib_not_screened / Num Pres: prohib_not_screened / Name Pres: prohib_not_screened") in new stack
[Mar 26 18:52:32] DEBUG[1068][C-00000009]: sig_analog.c:995 analog_call: CALLING CID_NAME: InterLinked CID_NUM:: 208
[Mar 26 18:52:32]     -- Called DAHDI/5
[Mar 26 18:52:34] DEBUG[1068][C-00000009]: sig_analog.c:395 analog_send_callerid: Sending callerid.  CID_NAME: 'InterLinked' CID_NUM: '208'

(The same thing also happens for the unavailable presentation, as with prohib_*).

In reality, there is code in callerid.c to do this. However, the current public API does not allow passing in the right information, so the flags or info to do this need to be passed in, which necessitates an API expansion.

Then, chan_dahdi can pass the presentation in to the caller ID functions, and the correct caller ID should be generated.

3. The simple switch *67 and *82 currently only "appear" to work because they simply destroy the Caller ID completely. But even then, they don't actually work properly. *67 should result in "PRIVATE CALLER" on CPE, but instead it results in "UNAVAILABLE". So the current way of doing it is an improper hack, and it is also wrong. None of this is being done to specification.

I am marking this "major" because Caller ID presentation is completely broken and this could have huge security and privacy compliance issues.
Comments:By: Asterisk Team (asteriskteam) 2022-03-27 15:33:57.420-0500

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. Please note that log messages and other files should not be sent to the Sangoma Asterisk Team unless explicitly asked for. All files should be placed on this issue in a sanitized fashion as needed.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.

Please note that by submitting data, code, or documentation to Sangoma through JIRA, you accept the Terms of Use present at [https://www.asterisk.org/terms-of-use/|https://www.asterisk.org/terms-of-use/].

By: N A (InterLinked) 2022-03-29 15:37:54.563-0500

FYI, just for documentation, issue linkage, this seems to be the *opposite* of ASTERISK-21741 (that is for FXO ports, this is for FXS ports).

By: Friendly Automation (friendly-automation) 2022-07-14 07:11:28.456-0500

Change 18804 merged by Friendly Automation:
chan_dahdi: Fix buggy and missing Caller ID parameters


By: Friendly Automation (friendly-automation) 2022-07-14 07:51:20.353-0500

Change 18802 merged by Friendly Automation:
chan_dahdi: Fix buggy and missing Caller ID parameters


By: Friendly Automation (friendly-automation) 2022-07-14 08:19:00.930-0500

Change 18803 merged by George Joseph:
chan_dahdi: Fix buggy and missing Caller ID parameters


By: Friendly Automation (friendly-automation) 2022-07-14 08:19:33.511-0500

Change 18305 merged by George Joseph:
chan_dahdi: Fix buggy and missing Caller ID parameters