]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_sasl.cpp
Add whether the server split with an error to OnServerSplit.
[user/henk/code/inspircd.git] / src / modules / m_sasl.cpp
index cb52451111cd16e7767d405779c79cdaca78f6a7..9813ba6b52762351c948c0c702c2a1c3ec667ced 100644 (file)
@@ -37,7 +37,8 @@ enum
 
 static std::string sasl_target;
 
-class ServerTracker : public ServerEventListener
+class ServerTracker
+       : public ServerProtocol::LinkEventListener
 {
        bool online;
 
@@ -58,14 +59,14 @@ class ServerTracker : public ServerEventListener
                Update(server, true);
        }
 
-       void OnServerSplit(const Server* server) CXX11_OVERRIDE
+       void OnServerSplit(const Server* server, bool error) CXX11_OVERRIDE
        {
                Update(server, false);
        }
 
  public:
        ServerTracker(Module* mod)
-               : ServerEventListener(mod)
+               : ServerProtocol::LinkEventListener(mod)
        {
                Reset();
        }
@@ -103,16 +104,15 @@ class SASLCap : public Cap::Capability
 
        bool OnRequest(LocalUser* user, bool adding) CXX11_OVERRIDE
        {
-               // Requesting this cap is allowed anytime
-               if (adding)
-                       return true;
-
-               // But removing it can only be done when unregistered
-               return (user->registered != REG_ALL);
+               // Servers MUST NAK any sasl capability request if the authentication layer
+               // is unavailable.
+               return servertracker.IsOnline();
        }
 
        bool OnList(LocalUser* user) CXX11_OVERRIDE
        {
+               // Servers MUST NOT advertise the sasl capability if the authentication layer
+               // is unavailable.
                return servertracker.IsOnline();
        }
 
@@ -284,7 +284,7 @@ class SaslAuthenticator
                 case SASL_OK:
                        this->user->WriteNumeric(RPL_SASLSUCCESS, "SASL authentication successful");
                        break;
-                case SASL_ABORT:
+                case SASL_ABORT:
                        this->user->WriteNumeric(ERR_SASLABORTED, "SASL authentication aborted");
                        break;
                 case SASL_FAIL:
@@ -432,7 +432,7 @@ class ModuleSASL : public Module
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides support for IRC Authentication Layer (aka: SASL) via AUTHENTICATE.", VF_VENDOR);
+               return Version("Provides support for IRC Authentication Layer (aka: SASL) via AUTHENTICATE", VF_VENDOR);
        }
 };