SFTP: possible fix for metadata times being shown as the epoch.
authordavid-sarah <david-sarah@jacaranda.org>
Wed, 2 Jun 2010 23:45:14 +0000 (16:45 -0700)
committerdavid-sarah <david-sarah@jacaranda.org>
Wed, 2 Jun 2010 23:45:14 +0000 (16:45 -0700)
src/allmydata/frontends/sftpd.py

index 8c2a38ad3210c8a7741c308d5a72327edea36acb..b10f9d14c77c9cdb8a8e8a27c67b52fa112be40c 100644 (file)
@@ -236,14 +236,13 @@ def _populate_attrs(childnode, metadata, size=None):
         if metadata.get('no-write', False):
             perms &= S_IFDIR | S_IFREG | 0555  # clear 'w' bits
 
-        # see webapi.txt for what these times mean
+        # See webapi.txt for what these times mean.
+        # We would prefer to omit atime, but SFTP version 3 can only
+        # accept mtime if atime is also set.
         if 'linkmotime' in metadata.get('tahoe', {}):
-            attrs['mtime'] = _to_sftp_time(metadata['tahoe']['linkmotime'])
+            attrs['mtime'] = attrs['atime'] = _to_sftp_time(metadata['tahoe']['linkmotime'])
         elif 'mtime' in metadata:
-            # We would prefer to omit atime, but SFTP version 3 can only
-            # accept mtime if atime is also set.
-            attrs['mtime'] = _to_sftp_time(metadata['mtime'])
-            attrs['atime'] = attrs['mtime']
+            attrs['mtime'] = attrs['atime'] = _to_sftp_time(metadata['mtime'])
 
         if 'linkcrtime' in metadata.get('tahoe', {}):
             attrs['createtime'] = _to_sftp_time(metadata['tahoe']['linkcrtime'])