From ac09aff7f4db2e915cf9fb84d209f577530c09e2 Mon Sep 17 00:00:00 2001 From: Peter Powell Date: Sat, 27 Oct 2018 18:13:29 +0100 Subject: Improve CAPAB negotiation in the spanningtree module. - Remove the CHANMODES, USERMODES, and PREFIX tokens in the 1205 protocol. These have entirely been superceded by the CHANMODES and USERMODES CAPAB commands. - Only compare the 1202 PREFIX tokens if the remote server did not send CAPAB CHANMODES. This replicates the existing behaviour used for the CHANMODES token. - Fix checking whether the remote server has an appropriate case mapping. If it is not sent we assume it is the same as the local server as always. This should prevent issues with people using services packages that do not send this token yet. - Fix checking if the user modes are mismatched and then promptly overwriting the error message with mismatched channel modes. - Fix servers not being able to tell whether a mode on the remote server is a prefixless prefix mode. Requires the 1205 protocol. - Fix servers that receive CAPAB CHANMODES or CAPAB USERMODES not checking the type of those modes. Requires the 1205 protocol. --- src/modules/m_spanningtree/treesocket.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/modules/m_spanningtree/treesocket.h') diff --git a/src/modules/m_spanningtree/treesocket.h b/src/modules/m_spanningtree/treesocket.h index d99dc9104..e8dbfd7cf 100644 --- a/src/modules/m_spanningtree/treesocket.h +++ b/src/modules/m_spanningtree/treesocket.h @@ -238,6 +238,11 @@ class TreeSocket : public BufferedSocket */ std::string MyModules(int filter); + /** Returns mode list as a string, filtered by type. + * @param type The type of modes to return. + */ + std::string BuildModeList(ModeType type); + /** Send my capabilities to the remote side */ void SendCapabilities(int phase); -- cgit v1.3.1-10-gc9f91