This also alters PutClient such that the CMessage variant handles
sending messages, rather than the CString variant. As a side bonus, this
gives callers better information on whether the message was sent to the
client. Additionally, it eliminates the need for a hook to let modules
set the tags sent to a client, as that can now be done inside
OnSendToClientMessage.
Since the nick argument is missing, "MOTD File is missing" is taking the
nicks place and could lead to client confusion that the 422 command is
sent to "MOTD File is missing".
Calls to CIRCSock::Quit() eventually result in the object's destructor
being called, which itself calls CIRCSock::Quit() again. Avoid sending
multiple quit messages to the remote server by checking if the
underlying socket is already marked for closing.
When the module is loaded globally or per-user the
`m_bTemporaryAcceptMotd` would be used to store state on connecting to
an MOTD which could lead to timing issues of a full or partial MOTD
being incorrectly sent to another server while another user requested
motd via the module.
This commit will now track this state per IRCSock so if another
connected user requests an MOTD and another server sends an MOTD it will
not lead to MOTDs being incorrectly unblocked.
The output style of tables was recently changed. This broke the
ControlpanelModule integration test. Adapt some of the patterns used so
that they work again.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Previously, "more or less unrelated" things would fail. After this
change, also a message is printing that gives a hint on what went wrong.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Don't use a key which is a valid nickname, now changed to "@nick-prefix@" instead.
If you had loaded the crypt module before, the old settings will be converted.
Also check if the nick-prefix and status-prefix aren't the same or overlapping, "*" or "." are then used depending on either value. If they would be the same, you would be messaging a module instead of a user.
And if they'd overlap, depending on the nick, you could be messaging a module as well.