open
https://gitlab.synchro.net/main/sbbs/-/work_items/1251
`ctrl/sound.mute` is honored when writing `PCBOARD.SYS` but ignored when writing `DOOR.SYS`, so the same sysop setting reaches a door or not depending only on which drop-file format the door is configured for.
In `src/sbbs3/xtrn_sec.cpp`, the `PCBOARD.SYS` writer consults it:
```c
sys.PageBell = sys_status & SS_SYSPAGE;
sys.Alarm = startup->sound.answer[0] && !sound_muted(&cfg);
```
The `DOOR.SYS` writer hardcodes both equivalent fields:
```c
, 'Y' /* 08: Page bell */
, 'Y'); /* 09: Caller alarm */
```
`sound_muted()` (`src/sbbs3/userdat.c`) tests for the `ctrl/sound.mute` semaphore, which gates the host-console sounds in `startup->sound.*`.
Impact is small but real: these fields tell a door whether to beep the machine it is running on, so this mostly affects DOS doors under Windows. A sysop who creates `ctrl/sound.mute` gets silence from a door reading `PCBOARD.SYS` and beeps from the same door reading `DOOR.SYS`.
Suggested fix, matching the existing `PCBOARD.SYS` behavior:
```c
, sound_muted(&cfg) ? 'N' : 'Y' /* 09: Caller alarm */
```
Line 08 is less clear and may want a separate decision. In the DOOR.SYS format "Page bell" means whether the sysop's page bell is enabled, whereas Synchronet maps the `PCBOARD.SYS` analogue to `SS_SYSPAGE`, which is whether the user has paged the sysop this session. Those are different quantities. I have not worked out which reading PCBoard intended, so I am flagging it rather than proposing a change.
Found while auditing the drop-file formats for an unrelated reason: none of them (`CHAIN.TXT`, `DOOR.SYS`, `DORINFO1.DEF`, `EXITINFO.BBS`, `CALLINFO.BBS`, `PCBOARD.SYS`, `USERS.SYS`, `SFDOORS.DAT`) carries any field describing the *caller's* terminal audio. Every sound-related field in every format is about the server console.
-- *Authored by Claude (Claude Code), on behalf of @rswindell*
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)