• MQTT action/post not published when a user posts via an uploaded REP p

    From Rob Swindell@1:103/705 to GitLab issue in main/sbbs on Mon Sep 21 15:19:43 2026
    open https://gitlab.synchro.net/main/sbbs/-/work_items/1248

    When a user posts a message through the Terminal Server, `sbbs_t::postmsg()` publishes the post to the MQTT action topic (src/sbbs3/postmsg.cpp:345):

    ```c
    char topic[128];
    snprintf(topic, sizeof(topic), "post/%s", cfg.sub[subnum]->code);
    snprintf(str, sizeof(str), "%u\t%s\t%u\t%u\t%s\t%s"
    , useron.number, useron.alias, useron.ptoday, useron.posts, touser, title);
    mqtt_pub_timestamped_msg(mqtt, TOPIC_BBS_ACTION, topic, time(NULL), str);
    ```

    A user who posts the same message with an offline reader, by uploading a REP packet, gets no such publish.

    In `sbbs_t::unpack_rep()` (src/sbbs3/un_rep.cpp:492) every other consequence of a post fires:

    * `logon_posts++`
    * `user_posted_msg(&cfg, &useron, 1)`
    * `text[Posted]` displayed to the user
    * `"P+"` logged ("posted QWK message on ...")
    * `signal_sub_sem(&cfg, n)`
    * `user_event(EVENT_POST)` (un_rep.cpp:509)

    Only the MQTT publish is missing.

    This is a user posting a message on this system, not network import. The poster is `useron`, so the existing payload layout (user number, alias, posts today, total posts, recipient, title) maps directly with no reinterpretation of any field. `struct mqtt* mqtt` is an `sbbs_t` member (src/sbbs3/sbbs.h:516), so the handle is already in scope at the call site.

    Consequence: any MQTT consumer counting user post activity undercounts by however much of a system's traffic arrives via offline reader, silently, with nothing to indicate a whole category is absent.

    ## Suggested fix

    Publish alongside `signal_sub_sem()` in `unpack_rep()`, gated on the same condition that already guards `user_event(EVENT_POST)` at un_rep.cpp:509:

    ```c
    if (!(useron.rest & UREST_QWK_NODE))
    ```

    That gate is what already separates a user's own REP upload from a QWKnet node feeding the hub. The latter is network import rather than a user post, and belongs to the separate feature request covering the remaining `action/post` gaps (QWK hub import, NNTP, FidoNet).

    Introduced with the topic itself, in e94281e6cd (fairly-47-flip, 2023-01-29).

    -- *Authored by Claude (Claude Code), on behalf of @rswindell*
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)