]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
afslogon-20040720
authorJeffrey Altman <jaltman@mit.edu>
Wed, 21 Jul 2004 06:27:44 +0000 (06:27 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 21 Jul 2004 06:27:44 +0000 (06:27 +0000)
Do not release the AFS Tokens at logoff if the user's profile was loaded
from AFS.  In this case we must keep the AFS tokens because we have no
idea how long writing back the profile might take.

src/WINNT/afsd/NTMakefile
src/WINNT/afsd/afslogon.c
src/WINNT/afsd/smb.c

index 210c7a2981859eaaf0dde2130dd5768011b6db35..088162b8bfea263593fd381e6b3f4935c3b93629 100644 (file)
@@ -218,6 +218,7 @@ LOGON_DLLLIBS =\
        $(DESTDIR)\lib\libafsconf.lib \
     $(DESTDIR)\lib\afsrxkad.lib \
     $(DESTDIR)\lib\afsdes.lib \
+    $(DESTDIR)\lib\lanahelper.lib \
     $(AFSKFWLIB)
 
 LOGON_DLLSDKLIBS =\
@@ -228,7 +229,8 @@ LOGON_DLLSDKLIBS =\
        oleaut32.lib \
        ole32.lib \
        adsiid.lib \
-       activeds.lib
+       activeds.lib \
+    userenv.lib
 
 $(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS)
        $(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS)
index 2a7ee9e9987facf6c0e75bcf02f3bc5b6efcd4ff..709cf9dd99515c69fa45cc4bce402def74c42b5f 100644 (file)
@@ -767,18 +767,33 @@ DWORD APIENTRY NPPasswordChangeNotify(
        return 0;
 }
 
+#include <userenv.h>
 #include <Winwlx.h>
+#include "lanahelper.h"
 
-VOID AFS_Logoff_Event( 
-    PWLX_NOTIFICATION_INFO pInfo )
+VOID AFS_Logoff_Event( PWLX_NOTIFICATION_INFO pInfo )
 {
     DWORD code;
-    if (code = ktc_ForgetAllTokens())
-        DebugEvent(NULL,"AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens failed [%lX]",code);
-    else
-        DebugEvent0("AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens succeeded");
+    TCHAR profileDir[256] = TEXT("");
+    TCHAR uncprefix[64] = TEXT("\\\\");
+    DWORD  len;
+
+    len = 256;
+    lana_GetNetbiosName(&uncprefix[2], LANA_NETBIOS_NAME_FULL);
+
+    if ( GetUserProfileDirectory(pInfo->hToken, profileDir, &len) ) {
+        if (_tcsnicmp(uncprefix, profileDir, _tcslen(uncprefix))) {
+            if (code = ktc_ForgetAllTokens())
+                DebugEvent(NULL,"AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens failed [%lX]",code);
+            else
+                DebugEvent0("AFS AfsLogon - AFS_Logoff_Event - ForgetAllTokens succeeded");
+        } else {
+            DebugEvent0("AFS AfsLogon - AFS_Logoff_Event - Tokens left in place; profile in AFS");
+        }
+    }
 }   
 
 
 
 
+
index b2dfbd719348fd708facf6f1e6438ea4115594e4..1cd0645bf20dcb5e7fa0f6e4649d6a20b4e43a78 100644 (file)
@@ -1272,7 +1272,9 @@ int smb_FindShare(smb_vc_t *vcp, smb_user_t *uidp, char *shareName,
        char *var;
        char temp[1024];
        DWORD sizeTemp;
+#ifdef DJGPP
     char sbmtpath[MAX_PATH];
+#endif
     char *p, *q;
        HKEY parmKey;
        DWORD code;