summaryrefslogtreecommitdiffstats
path: root/servers/auth_server_lin/src/auth_conn.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'servers/auth_server_lin/src/auth_conn.cpp')
-rw-r--r--servers/auth_server_lin/src/auth_conn.cpp30
1 files changed, 20 insertions, 10 deletions
diff --git a/servers/auth_server_lin/src/auth_conn.cpp b/servers/auth_server_lin/src/auth_conn.cpp
index 451b8d9..87eb314 100644
--- a/servers/auth_server_lin/src/auth_conn.cpp
+++ b/servers/auth_server_lin/src/auth_conn.cpp
@@ -125,6 +125,7 @@ void AuthSocket::servLoop() {
if (m_servActive) {
TQString command;
TQDataStream ds(this);
+ TDEKerberosClientSocket::KerberosStatus krbstat;
switch (m_servState) {
case 0:
@@ -153,14 +154,7 @@ void AuthSocket::servLoop() {
break;
case 1:
if (m_servClientSocket->state() == TQSocket::Connected) {
- if (m_servClientSocket->setUsingKerberos(true) != 0) {
- m_servClientSocket->close();
- ds << TQString("ERRNOTAVL");
- printf("[DEBUG] Connection failed to %s:%d for user %s@%s due to Kerberos failure\n\r", m_srvServiceHostName.ascii(), m_srvServicePort, m_authenticatedUserName.ascii(), m_authenticatedRealmName.ascii()); fflush(stdout);
- m_servActive = false;
- delete m_servClientTimeout;
- m_servClientTimeout = NULL;
- }
+ m_servClientSocket->setUsingKerberos(true);
m_servState = 2;
}
else {
@@ -173,6 +167,22 @@ void AuthSocket::servLoop() {
}
break;
case 2:
+ krbstat = m_servClientSocket->kerberosStatus();
+ if ((krbstat == TDEKerberosClientSocket::KerberosInitializing) || (krbstat == TDEKerberosClientSocket::KerberosInUse)) {
+ if (krbstat == TDEKerberosClientSocket::KerberosInUse) {
+ m_servState = 3;
+ }
+ }
+ else {
+ m_servClientSocket->close();
+ ds << TQString("ERRNOTAVL");
+ printf("[DEBUG] Connection failed to %s:%d for user %s@%s due to Kerberos failure\n\r", m_srvServiceHostName.ascii(), m_srvServicePort, m_authenticatedUserName.ascii(), m_authenticatedRealmName.ascii()); fflush(stdout);
+ m_servActive = false;
+ delete m_servClientTimeout;
+ m_servClientTimeout = NULL;
+ }
+ break;
+ case 3:
if (!m_servClientTimeout) {
m_servClientTimeout = new TQTimer();
m_servClientTimeout->start(5000, TRUE);
@@ -185,7 +195,7 @@ void AuthSocket::servLoop() {
clientDS >> server_reply;
if (server_reply == "OK") {
ds << TQString("OK");
- m_servState = 3;
+ m_servState = 4;
}
else {
m_servClientSocket->close();
@@ -217,7 +227,7 @@ void AuthSocket::servLoop() {
m_servClientTimeout = NULL;
}
break;
- case 3:
+ case 4:
if (m_servClientSocket->state() == TQSocket::Connected) {
TQByteArray ba(8192);
TQ_ULONG reclen;