Away mode synchronization problem #1076

Open
opened 2026-10-05 05:02:12 +02:00 by adam · 2 comments
Owner

I've encountered a problem with the ZNC and AWAY mode. I'll describe the steps that create the "problem."

1. I start mIRC.
2. I connect to the ZNC, which is already connected to the IRC server.
3. I set it to AWAY mode (/AWAY blah blah blah...), and mIRC recognizes that it's now in AWAY mode.
4. I disconnect from the ZNC without removing my AWAY status.
5. I reconnect to the ZNC, but unfortunately, mIRC no longer recognizes AWAY mode.
6. This problem is confusing the automatic reply system to private messages when I should be in AWAY mode.

This is a simple script I use when I set AWAY mode:
on *:TEXT:*:?: if ($away) { msg $nick I'M AWAY - Try again later. If you need help with network services, join the #support channel. }

VERSION:

  • ZNC 1.9.1
  • mIRC 7.81

/msg *status listmods
<*status> User modules:
<*status> chansaver
<*status> webadmin
<*status> controlpanel
<*status> Network modules:
<*status> simple_away
<*status> sasl
<*status> perform
<*status> autocycle
<*status> autoop

I've encountered a problem with the ZNC and AWAY mode. I'll describe the steps that create the "problem." _1. I start mIRC. 2. I connect to the ZNC, which is already connected to the IRC server. 3. I set it to AWAY mode (/AWAY blah blah blah...), and mIRC recognizes that it's now in AWAY mode. 4. I disconnect from the ZNC without removing my AWAY status. 5. I reconnect to the ZNC, but unfortunately, mIRC no longer recognizes AWAY mode. 6. This problem is confusing the automatic reply system to private messages when I should be in AWAY mode._ This is a simple script I use when I set AWAY mode: `on *:TEXT:*:?: if ($away) { msg $nick I'M AWAY - Try again later. If you need help with network services, join the #support channel. }` VERSION: - ZNC 1.9.1 - mIRC 7.81 /msg *status listmods <*status> User modules: <*status> chansaver <*status> webadmin <*status> controlpanel <*status> Network modules: <*status> simple_away <*status> sasl <*status> perform <*status> autocycle <*status> autoop <!-- github-sync-id:3327555138 -->
Author
Owner

It looks like mIRC only stores the /away status for $away when you send it from mIRC. The $away status is lost when you disconnect from ZNC.

ZNC sending :irc.znc.in 306 KindOne :You have been marked as being away does nothing.

I attempted at patching znc, but that did not work.

diff --git a/src/IRCNetwork.cpp b/src/IRCNetwork.cpp
index 469f69bf..37e2f381 100644
--- a/src/IRCNetwork.cpp
+++ b/src/IRCNetwork.cpp
@@ -708,6 +708,12 @@ void CIRCNetwork::ClientConnected(CClient* pClient) {
     if (m_bIRCAway) {
         // If they want to know their away reason they'll have to whois
         // themselves. At least we can tell them their away status...
+
+        // This sends to client, but did not work.
+        pClient->PutClientRaw(":" + GetIRCNick().GetNickMask() + " AWAY :" + "NOT HERE! TEST 123 - PutClientRaw()");
+
+        // This does not send to client.
+        pClient->PutClient(":" + GetIRCNick().GetNickMask() + " AWAY :" + "NOT HERE! TEST 123 - PutClient()");
         pClient->PutClient(":irc.znc.in 306 " + GetIRCNick().GetNick() +
                            " :You have been marked as being away");
     }


[2025-08-30 08:07:46.645147] (KindOne/foobar) ZNC -> CLI [:kindone.foobar.net 376 KindOne :End of /MOTD command.]
[2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:KindOne!kindone@Clk-35EC1D3E MODE KindOne :+iostwx]
[2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:KindOne!kindone@Clk-35EC1D3E AWAY :NOT HERE! TEST 123 - PutClientRaw()]
[2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in 306 KindOne :You have been marked as being away]
[2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :account-notify]
[2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :account-tag]
[2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :away-notify]
[2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :extended-join]
[2025-08-30 08:07:46.648147] (KindOne/foobar) CLI -> ZNC [USERHOST KindOne]
[2025-08-30 08:07:46.649147] (KindOne/foobar) ZNC -> IRC [USERHOST KindOne]

As far as I can tell the only way to fix this issue is to use a mIRC script to set you /away when you connect. Example:

raw 306:*:{
  away Foobar
}
It looks like mIRC only stores the /away status for `$away` when you send it from mIRC. The `$away` status is lost when you disconnect from ZNC. ZNC sending `:irc.znc.in 306 KindOne :You have been marked as being away` does nothing. I attempted at patching znc, but that did not work. ``` diff --git a/src/IRCNetwork.cpp b/src/IRCNetwork.cpp index 469f69bf..37e2f381 100644 --- a/src/IRCNetwork.cpp +++ b/src/IRCNetwork.cpp @@ -708,6 +708,12 @@ void CIRCNetwork::ClientConnected(CClient* pClient) { if (m_bIRCAway) { // If they want to know their away reason they'll have to whois // themselves. At least we can tell them their away status... + + // This sends to client, but did not work. + pClient->PutClientRaw(":" + GetIRCNick().GetNickMask() + " AWAY :" + "NOT HERE! TEST 123 - PutClientRaw()"); + + // This does not send to client. + pClient->PutClient(":" + GetIRCNick().GetNickMask() + " AWAY :" + "NOT HERE! TEST 123 - PutClient()"); pClient->PutClient(":irc.znc.in 306 " + GetIRCNick().GetNick() + " :You have been marked as being away"); } ``` ``` [2025-08-30 08:07:46.645147] (KindOne/foobar) ZNC -> CLI [:kindone.foobar.net 376 KindOne :End of /MOTD command.] [2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:KindOne!kindone@Clk-35EC1D3E MODE KindOne :+iostwx] [2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:KindOne!kindone@Clk-35EC1D3E AWAY :NOT HERE! TEST 123 - PutClientRaw()] [2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in 306 KindOne :You have been marked as being away] [2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :account-notify] [2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :account-tag] [2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :away-notify] [2025-08-30 08:07:46.646147] (KindOne/foobar) ZNC -> CLI [:irc.znc.in CAP KindOne NEW :extended-join] [2025-08-30 08:07:46.648147] (KindOne/foobar) CLI -> ZNC [USERHOST KindOne] [2025-08-30 08:07:46.649147] (KindOne/foobar) ZNC -> IRC [USERHOST KindOne] ``` As far as I can tell the only way to fix this issue is to use a mIRC script to set you /away when you connect. Example: ``` raw 306:*:{ away Foobar } ``` <!-- github-comment-id:3239236733 -->
Author
Owner

mIRC beta 7.84.2042 now accepts the 306 when reconnecting to ZNC. The $away in mIRC is now accurate.

https://forums.mirc.com/ubbthreads.php/topics/225704/mirc-beta

mIRC beta 7.84.2042 now accepts the 306 when reconnecting to ZNC. The $away in mIRC is now accurate. https://forums.mirc.com/ubbthreads.php/topics/225704/mirc-beta <!-- github-comment-id:5462493604 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/znc#1076