]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/extra/m_ssl_gnutls.cpp
Fix typo opermoth -> opermotd. Thanks Ankit.
[user/henk/code/inspircd.git] / src / modules / extra / m_ssl_gnutls.cpp
index cd0af7e8b3fa984f44a95089e2eac80a98df5aca..59397e000613b49860d68ff41619eb3d225b1bba 100644 (file)
@@ -71,9 +71,13 @@ class CommandStartTLS : public Command
 
        CmdResult Handle (const std::vector<std::string> &parameters, User *user)
        {
-               if (user->registered == REG_ALL)
+               /* changed from == REG_ALL to catch clients sending STARTTLS
+                * after NICK and USER but before OnUserConnect completes and
+                * give a proper error message (see bug #645) - dz
+                */
+               if (user->registered != REG_NONE)
                {
-                       ServerInstance->Users->QuitUser(user, "STARTTLS not allowed after client registration");
+                       ServerInstance->Users->QuitUser(user, "STARTTLS is not permitted after client registration has started");
                }
                else
                {
@@ -84,7 +88,7 @@ class CommandStartTLS : public Command
                                Caller->OnRawSocketAccept(user->GetFd(), user->GetIPString(), user->GetPort());
                        }
                        else
-                               user->WriteNumeric(671, "%s :STARTTLS failure", user->nick.c_str());
+                               user->WriteNumeric(691, "%s :STARTTLS failure", user->nick.c_str());
                }
 
                return CMD_FAILURE;
@@ -534,6 +538,9 @@ class ModuleSSLGnuTLS : public Module
                                }
                                else
                                {
+                                       ServerInstance->Logs->Log("m_ssl_gnutls", DEFAULT,
+                                                       "m_ssl_gnutls.so: Error while reading on fd %d: %s",
+                                                       session->fd, gnutls_strerror(ret));
                                        readresult = 0;
                                        CloseSession(session);
                                }
@@ -614,6 +621,9 @@ class ModuleSSLGnuTLS : public Module
                        {
                                if(ret != GNUTLS_E_AGAIN && ret != GNUTLS_E_INTERRUPTED)
                                {
+                                       ServerInstance->Logs->Log("m_ssl_gnutls", DEFAULT,
+                                                       "m_ssl_gnutls.so: Error while writing to fd %d: %s",
+                                                       session->fd, gnutls_strerror(ret));
                                        CloseSession(session);
                                }
                                else
@@ -702,6 +712,9 @@ class ModuleSSLGnuTLS : public Module
                        else
                        {
                                // Handshake failed.
+                               ServerInstance->Logs->Log("m_ssl_gnutls", DEFAULT,
+                                               "m_ssl_gnutls.so: Handshake failed on fd %d: %s",
+                                               session->fd, gnutls_strerror(ret));
                                CloseSession(session);
                                session->status = ISSL_CLOSING;
                        }