]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
m_ssl_gnutls Hold users in pre-registration state until the handshake is completed
authorAttila Molnar <attilamolnar@hush.com>
Sat, 9 May 2015 22:37:28 +0000 (00:37 +0200)
committerAttila Molnar <attilamolnar@hush.com>
Sat, 9 May 2015 22:37:28 +0000 (00:37 +0200)
src/modules/extra/m_ssl_gnutls.cpp

index 3b67a61802b51106ede6db1e20421340381bfa72..59ac1acb3bcd62295ba9ea5e531ef7479ed480e0 100644 (file)
@@ -316,7 +316,7 @@ class ModuleSSLGnuTLS : public Module
                ServerInstance->GenRandom = &randhandler;
 
                Implementation eventlist[] = { I_On005Numeric, I_OnRehash, I_OnModuleRehash, I_OnUserConnect,
-                       I_OnEvent, I_OnHookIO };
+                       I_OnEvent, I_OnHookIO, I_OnCheckReady };
                ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
 
                ServerInstance->Modules->AddService(iohook);
@@ -974,6 +974,13 @@ info_done_dealloc:
                if (starttls.enabled)
                        capHandler.HandleEvent(ev);
        }
+
+       ModResult OnCheckReady(LocalUser* user)
+       {
+               if ((user->eh.GetIOHook() == this) && (sessions[user->eh.GetFd()].status != ISSL_HANDSHAKEN))
+                       return MOD_RES_DENY;
+               return MOD_RES_PASSTHRU;
+       }
 };
 
 MODULE_INIT(ModuleSSLGnuTLS)