Fixed bug in IOConnection.cs: Errors when uploading data to http(s) were not handled correctly
Improved logging in CachingFileStorage
This commit is contained in:
@@ -511,6 +511,7 @@ namespace KeePassLib.Serialization
|
|||||||
req = CreateWebRequest(ioc, true);
|
req = CreateWebRequest(ioc, true);
|
||||||
f(req);
|
f(req);
|
||||||
}
|
}
|
||||||
|
else throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -146,10 +146,12 @@ namespace keepass2android.Io
|
|||||||
if (!IsCached(ioc)
|
if (!IsCached(ioc)
|
||||||
|| GetLocalVersionHash(ioc) == GetBaseVersionHash(ioc))
|
|| GetLocalVersionHash(ioc) == GetBaseVersionHash(ioc))
|
||||||
{
|
{
|
||||||
|
Kp2aLog.Log("CFS: OpenWhenNoLocalChanges");
|
||||||
return OpenFileForReadWhenNoLocalChanges(ioc, cachedFilePath);
|
return OpenFileForReadWhenNoLocalChanges(ioc, cachedFilePath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Kp2aLog.Log("CFS: OpenWhenLocalChanges");
|
||||||
return OpenFileForReadWhenLocalChanges(ioc, cachedFilePath);
|
return OpenFileForReadWhenLocalChanges(ioc, cachedFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -174,16 +176,21 @@ namespace keepass2android.Io
|
|||||||
|
|
||||||
if (File.ReadAllText(BaseVersionFilePath(ioc)) == hash)
|
if (File.ReadAllText(BaseVersionFilePath(ioc)) == hash)
|
||||||
{
|
{
|
||||||
|
Kp2aLog.Log("CFS: No changes in remote");
|
||||||
//no changes in remote file -> upload
|
//no changes in remote file -> upload
|
||||||
using (Stream localData = File.OpenRead(CachedFilePath(ioc)))
|
using (Stream localData = File.OpenRead(CachedFilePath(ioc)))
|
||||||
{
|
{
|
||||||
if (TryUpdateRemoteFile(localData, ioc, true, hash))
|
if (TryUpdateRemoteFile(localData, ioc, true, hash))
|
||||||
|
{
|
||||||
_cacheSupervisor.UpdatedRemoteFileOnLoad(ioc);
|
_cacheSupervisor.UpdatedRemoteFileOnLoad(ioc);
|
||||||
|
Kp2aLog.Log("CFS: Updated remote file");
|
||||||
|
}
|
||||||
return File.OpenRead(cachedFilePath);
|
return File.OpenRead(cachedFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Kp2aLog.Log("CFS: Files in conflict");
|
||||||
//conflict: both files changed.
|
//conflict: both files changed.
|
||||||
return OpenFileForReadWithConflict(ioc, cachedFilePath);
|
return OpenFileForReadWithConflict(ioc, cachedFilePath);
|
||||||
}
|
}
|
||||||
@@ -232,18 +239,25 @@ namespace keepass2android.Io
|
|||||||
string previousHash = null;
|
string previousHash = null;
|
||||||
string baseVersionFilePath = BaseVersionFilePath(ioc);
|
string baseVersionFilePath = BaseVersionFilePath(ioc);
|
||||||
if (File.Exists(baseVersionFilePath))
|
if (File.Exists(baseVersionFilePath))
|
||||||
|
{
|
||||||
|
Kp2aLog.Log("CFS: hashing cached version");
|
||||||
previousHash = File.ReadAllText(baseVersionFilePath);
|
previousHash = File.ReadAllText(baseVersionFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//copy to cache:
|
//copy to cache:
|
||||||
var fileHash = UpdateCacheFromRemote(ioc, cachedFilePath);
|
var fileHash = UpdateCacheFromRemote(ioc, cachedFilePath);
|
||||||
|
|
||||||
//notify supervisor what we did:
|
//notify supervisor what we did:
|
||||||
if (previousHash != fileHash)
|
if (previousHash != fileHash)
|
||||||
|
{
|
||||||
|
Kp2aLog.Log("CFS: Updated Cache");
|
||||||
_cacheSupervisor.UpdatedCachedFileOnLoad(ioc);
|
_cacheSupervisor.UpdatedCachedFileOnLoad(ioc);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
Kp2aLog.Log("CFS: Files in Sync");
|
||||||
_cacheSupervisor.LoadedFromRemoteInSync(ioc);
|
_cacheSupervisor.LoadedFromRemoteInSync(ioc);
|
||||||
|
}
|
||||||
|
|
||||||
return File.OpenRead(cachedFilePath);
|
return File.OpenRead(cachedFilePath);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user