diff -u -r -x *.[^ch]|nmake|am ethereal-orig/packet-nfs.c ethereal/packet-nfs.c
--- ethereal-orig/packet-nfs.c	Sat Jan 12 11:12:15 2002
+++ ethereal/packet-nfs.c	Mon Jan 14 23:44:15 2002
@@ -1263,24 +1263,6 @@
 {
 	unsigned int fhtype = FHT_UNKNOWN;
 
-	if(nfs_file_name_snooping){
-		if(!pinfo->fd->flags.visited){
-			rpc_call_info_value *civ=pinfo->private_data;
-
-			/* MOUNT v1,v2 MNT replies might give us a filehandle*/
-			if( (civ->prog==100005)
-			  &&(civ->proc==1)
-			  &&((civ->vers==1)||(civ->vers==2))
-			  &&(!civ->request)
-			) {
-				nfs_name_snoop_add_fh(civ->xid, tvb, 
-					offset, fhlen);
-			}
-		}
-
-		nfs_name_snoop_fh(pinfo, tree, tvb, offset, fhlen);
-	}
-
 	/* filehandle too long */
 	if (fhlen>64) goto type_ready;
 	/* Not all bytes there. Any attempt to deduce the type would be
@@ -1298,6 +1280,9 @@
 		proto_tree_add_uint(tree, hf_nfs_fh_hash, tvb, offset, fhlen,
 			fhhash);
 	}
+	if(nfs_file_name_snooping){
+		nfs_name_snoop_fh(pinfo, tree, tvb, offset, fhlen);
+	}
 		
 	/* calculate (heuristically) fhtype */
 	switch (fhlen) {
@@ -1598,10 +1583,19 @@
 			nfs_name_snoop_add_fh(civ->xid, tvb, 
 				offset, 32);
 		}
+
+		/* MOUNT v1,v2 MNT replies might give us a filehandle*/
+		if( (civ->prog==100005)
+		  &&(civ->proc==1)
+		  &&((civ->vers==1)||(civ->vers==2))
+		  &&(!civ->request)
+		) {
+			nfs_name_snoop_add_fh(civ->xid, tvb, 
+				offset, 32);
+		}
 	}
 
-	if (ftree)
-		dissect_fhandle_data(tvb, offset, pinfo, ftree, FHSIZE);
+	dissect_fhandle_data(tvb, offset, pinfo, ftree, FHSIZE);
 
 	offset += FHSIZE;
 	return offset;
