Skip to content

client.startPeriodicPing() creates numerous server ping events when connecting to znc #392

@squankytoast

Description

@squankytoast

The startPerioidicPing() method is invoked whenever the server sends a 'registered' event irrespective of the socket's connection state.

client.js line 133:

client.on('registered', function(event) {
    // PING is not a valid command until after registration
    client.startPeriodicPing();
});

When using znc, the client remains connected even when the IRC server's connection drops. When znc reconnects to the target server, a new 'registered' event is sent. This creates multiple ping timers which eventually floods the user off of the target network if enough server disconnections have occurred.

client.js line 340:

    startPeriodicPing() {
        const client = this;
        let ping_timer = null;

        if (client.options.ping_interval <= 0) {
            return;
        }

I believe we need to check if the current ping_timer value is defined, and if so, either do nothing or dispose of it first, before attaching the new timer.

znc logs after a few server disconnects:

[2025-10-23 18:27:04.258404] (user1/network1) CLI -> ZNC [PING 1761244024258]
[2025-10-23 18:27:04.258497] (user1/network1) ZNC -> IRC [PING 1761244024258]
[2025-10-23 18:27:04.258566] (user1/network1) CLI -> ZNC [PING 1761244024258]
[2025-10-23 18:27:04.258598] (user1/network1) ZNC -> IRC [PING 1761244024258]
[2025-10-23 18:27:04.258607] (user1/network1) CLI -> ZNC [PING 1761244024258]
[2025-10-23 18:27:04.258634] (user1/network1) ZNC -> IRC [PING 1761244024258]
[2025-10-23 18:27:04.258642] (user1/network1) CLI -> ZNC [PING 1761244024258]
[2025-10-23 18:27:04.258670] (user1/network1) ZNC -> IRC [PING 1761244024258]
[2025-10-23 18:27:04.258678] (user1/network1) CLI -> ZNC [PING 1761244024258]
[2025-10-23 18:27:04.258703] (user1/network1) ZNC -> IRC [PING 1761244024258]
[2025-10-23 18:27:04.362136] (user2/network2) CLI -> ZNC [PING 1761244024361]
[2025-10-23 18:27:04.362209] (user2/network2) ZNC -> IRC [PING 1761244024361]
[2025-10-23 18:27:04.362338] (user2/network2) CLI -> ZNC [PING 1761244024361]
[2025-10-23 18:27:04.362431] (user2/network2) ZNC -> IRC [PING 1761244024361]
[2025-10-23 18:27:04.362440] (user2/network2) CLI -> ZNC [PING 1761244024361]
[2025-10-23 18:27:04.362465] (user2/network2) ZNC -> IRC [PING 1761244024361]
[2025-10-23 18:27:04.362472] (user2/network2) CLI -> ZNC [PING 1761244024361]
[2025-10-23 18:27:04.362493] (user2/network2) ZNC -> IRC [PING 1761244024361]
[2025-10-23 18:27:04.362501] (user2/network2) CLI -> ZNC [PING 1761244024361]
[2025-10-23 18:27:04.362527] (user2/network2) ZNC -> IRC [PING 1761244024361]
[2025-10-23 18:27:04.362535] (user2/network2) CLI -> ZNC [PING 1761244024361]
[2025-10-23 18:27:04.362562] (user2/network2) ZNC -> IRC [PING 1761244024361]
[2025-10-23 18:27:04.554049] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554109] (user3/network3) ZNC -> IRC [PING 1761244024553]
[2025-10-23 18:27:04.554150] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554174] (user3/network3) ZNC -> IRC [PING 1761244024553]
[2025-10-23 18:27:04.554180] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554197] (user3/network3) ZNC -> IRC [PING 1761244024553]
[2025-10-23 18:27:04.554202] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554219] (user3/network3) ZNC -> IRC [PING 1761244024553]
[2025-10-23 18:27:04.554224] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554242] (user3/network3) ZNC -> IRC [PING 1761244024553]
[2025-10-23 18:27:04.554247] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554263] (user3/network3) ZNC -> IRC [PING 1761244024553]
[2025-10-23 18:27:04.554268] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554285] (user3/network3) ZNC -> IRC [PING 1761244024553]
[2025-10-23 18:27:04.554290] (user3/network3) CLI -> ZNC [PING 1761244024553]
[2025-10-23 18:27:04.554306] (user3/network3) ZNC -> IRC [PING 1761244024553]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions