]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-login.c
Xcode builds ("make xcode"): disable pam_fail_delay()
[ngircd-alex.git] / src / ngircd / irc-login.c
index 8ac5471ad488bfd36eaf1067969263ff6aa5778f..03fea99ad4e8f79ceb3a426d073f75444817933e 100644 (file)
@@ -789,7 +789,10 @@ Hello_User(CLIENT * Client)
                return DISCONNECTED;
        }
 
-       pid = Proc_Fork(Conn_GetProcStat(conn), pipefd, cb_Read_Auth_Result);
+       /* Fork child process for PAM authentication; and make sure that the
+        * process timeout is set higher than the login timeout! */
+       pid = Proc_Fork(Conn_GetProcStat(conn), pipefd,
+                       cb_Read_Auth_Result, Conf_PongTimeout + 1);
        if (pid > 0) {
                LogDebug("Authenticator for connection %d created (PID %d).",
                         conn, pid);
@@ -847,18 +850,16 @@ cb_Read_Auth_Result(int r_fd, UNUSED short events)
        if (len == 0)
                return;
 
-       /* Make sure authenticator sub-process is dead now ... */
-       Proc_Kill(proc);
-
        if (len != sizeof(result)) {
                Log(LOG_CRIT, "Auth: Got malformed result!");
                Reject_Client(client);
                return;
        }
 
-       if (result == true)
+       if (result == true) {
+               Client_SetUser(client, Client_OrigUser(client), true);
                (void)Hello_User_PostAuth(client);
-       else
+       else
                Reject_Client(client);
 }