Selective Sync fixes
[pithos-ms-client] / trunk / Pithos.Core / Agents / Uploader.cs
index db0735e..67e6db1 100644 (file)
@@ -47,14 +47,16 @@ namespace Pithos.Core.Agents
                         return;
                     }
 
+                    var latestState = action.FileState;
+
                     //Do not upload files in conflict
-                    if (action.FileState.FileStatus == FileStatus.Conflict)
+                    if (latestState.FileStatus == FileStatus.Conflict)
                     {
                         Log.InfoFormat("Skipping file in conflict [{0}]", fileInfo.FullName);
                         return;
                     }
                     //Do not upload files when we have no permission
-                    if (action.FileState.FileStatus == FileStatus.Forbidden)
+                    if (latestState.FileStatus == FileStatus.Forbidden)
                     {
                         Log.InfoFormat("Skipping forbidden file [{0}]", fileInfo.FullName);
                         return;
@@ -85,7 +87,7 @@ namespace Pithos.Core.Agents
                             var cloudInfo = client.GetObjectInfo(account, cloudFile.Container, cloudFile.Name);
 
                             //If this is a read-only file, do not upload changes
-                            if (cloudInfo.AllowedTo == "read")
+                            if (!cloudInfo.IsWritable(action.AccountInfo.UserName))
                                 return;
 
                             if (fileInfo is DirectoryInfo)
@@ -139,6 +141,7 @@ namespace Pithos.Core.Agents
                             if (response.StatusCode == HttpStatusCode.Forbidden)
                             {
                                 StatusKeeper.SetFileState(fileInfo.FullName, FileStatus.Forbidden, FileOverlayStatus.Conflict, "Forbidden");
+                                
                             }
                             else
                                 //In any other case, propagate the error