Windows: cm_IsStatusValid
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 8 Nov 2012 15:39:43 +0000 (10:39 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Fri, 9 Nov 2012 04:38:50 +0000 (20:38 -0800)
Break out validity checking for AFSFetchStatus responses into
a new function.

Change-Id: I15d2ed12ed2d9ca9a24d6f717243d823db22d30c
Reviewed-on: http://gerrit.openafs.org/8403
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsd/cm_scache.c
src/WINNT/afsd/cm_scache.h

index c10de8b..de54cc0 100644 (file)
@@ -1610,6 +1610,17 @@ dv_diff(afs_uint64 dv1, afs_uint64 dv2)
         return (afs_uint32)(dv1 - dv2);
 }
 
+long
+cm_IsStatusValid(AFSFetchStatus *statusp)
+{
+    if (statusp->InterfaceVersion != 0x1 ||
+        !(statusp->FileType > 0 && statusp->FileType <= SymbolicLink)) {
+        return 0;
+    }
+
+    return 1;
+}
+
 /* merge in a response from an RPC.  The scp must be locked, and the callback
  * is optional.
  *
@@ -1674,9 +1685,8 @@ long cm_MergeStatus(cm_scache_t *dscp,
     }
 #endif /* AFS_FREELANCE_CLIENT */
 
-    if (statusp->InterfaceVersion != 0x1 ||
-        !(statusp->FileType > 0 && statusp->FileType <= SymbolicLink)) {
-        osi_Log3(afsd_logp, "Merge, Failure scp 0x%p Invalid InterfaceVersion %d FileType %d",
+    if (!cm_IsStatusValid(statusp)) {
+        osi_Log3(afsd_logp, "Merge: Bad Status scp 0x%p Invalid InterfaceVersion %d FileType %d",
                  scp, statusp->InterfaceVersion, statusp->FileType);
         return CM_ERROR_INVAL;
     }
index c933e53..fd7c7da 100644 (file)
@@ -392,6 +392,8 @@ extern long cm_SyncOp(cm_scache_t *, struct cm_buf *, struct cm_user *,
 
 extern void cm_SyncOpDone(cm_scache_t *, struct cm_buf *, afs_uint32);
 
+extern long cm_IsStatusValid(AFSFetchStatus *statusp);
+
 extern long cm_MergeStatus(cm_scache_t * dscp, cm_scache_t * scp,
                           struct AFSFetchStatus * statusp,
                           struct AFSVolSync * volsyncp,