]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/login.c
Always cloak client hostname, if needed
[ngircd-alex.git] / src / ngircd / login.c
index ad45219eca164aeb16cd3cf6f3ad485fe880439c..460fcd1e4c1954e80d946d6ac1a08a0ba9e7722e 100644 (file)
@@ -19,6 +19,7 @@
 #include "imp.h"
 #include <assert.h>
 #include <stdlib.h>
+#include <string.h>
 #include <strings.h>
 #include <unistd.h>
 
@@ -80,8 +81,11 @@ Login_User(CLIENT * Client)
 #endif
 
        /* Still waiting for "CAP END" command? */
-       if (Client_Cap(Client) & CLIENT_CAP_PENDING)
+       if (Client_Cap(Client) & CLIENT_CAP_PENDING) {
+               Client_SetType(Client, CLIENT_WAITCAPEND);
+               LogDebug("Connection %d: Waiting for CAP END ...", conn);
                return CONNECTED;
+       }
 
 #ifdef PAM
        if (!Conf_PAM) {
@@ -89,13 +93,14 @@ Login_User(CLIENT * Client)
                 * the beahiour of the daemon compiled without PAM support:
                 * because there can't be any "server password", all
                 * passwords supplied are classified as "wrong". */
-               if(Client_Password(Client)[0] == '\0')
+               if(Conn_Password(conn)[0] == '\0')
                        return Login_User_PostAuth(Client);
                Client_Reject(Client, "Non-empty password", false);
                return DISCONNECTED;
        }
 
-       if (Conf_PAMIsOptional && strcmp(Client_Password(Client), "") == 0) {
+       if (Conf_PAMIsOptional &&
+           strcmp(Conn_Password(conn), "") == 0) {
                /* Clients are not required to send a password and to be PAM-
                 * authenticated at all. If not, they won't become "identified"
                 * and keep the "~" in their supplied user name.
@@ -125,7 +130,7 @@ Login_User(CLIENT * Client)
        }
 #else
        /* Check global server password ... */
-       if (strcmp(Client_Password(Client), Conf_ServerPwd) != 0) {
+       if (strcmp(Conn_Password(conn), Conf_ServerPwd) != 0) {
                /* Bad password! */
                Client_Reject(Client, "Bad server password", false);
                return DISCONNECTED;