]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
windows-merge-eaccess-20070207
authorJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 7 Feb 2007 08:12:27 +0000 (08:12 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 7 Feb 2007 08:12:27 +0000 (08:12 +0000)
when merging status info that has an errorCode of EACCESS set,
merge the garbage we received.

When checking the access to the object return EACCESS if the
stat cache object has the EACCESS flag set.  This will be cleared
the next time a BulkStatus succeeds.

src/WINNT/afsd/cm_access.c
src/WINNT/afsd/cm_scache.c

index ba747a80869efcc2b7068dbd77e1fd0deb20b001..d9d141a9af18330baa104c440a88a7fe3725dafb 100644 (file)
@@ -38,7 +38,12 @@ int cm_HaveAccessRights(struct cm_scache *scp, struct cm_user *userp, afs_uint32
     cm_fid_t tfid;
     int didLock;
     long trights;
-       
+
+    if (scp->flags & CM_SCACHEFLAG_EACCESS) {
+       *outRightsp = aclScp->anyAccess;
+       return CM_ERROR_NOACCESS;
+    }
+
     didLock = 0;
     if (scp->fileType == CM_SCACHETYPE_DIRECTORY) {
         aclScp = scp;
index c643fc41bbec36a55a9b0c0717c5c31dd07251ef..8d32b4e72df904ece8eb9787d83c63c3a939afa6 100644 (file)
@@ -1313,7 +1313,6 @@ void cm_MergeStatus(cm_scache_t *scp, AFSFetchStatus *statusp, AFSVolSync *volp,
     if (statusp->errorCode != 0) {     
        scp->flags |= CM_SCACHEFLAG_EACCESS;
        osi_Log2(afsd_logp, "Merge, Failure scp %x code 0x%x", scp, statusp->errorCode);
-       return;
     } else {
        scp->flags &= ~CM_SCACHEFLAG_EACCESS;
     }