diff --git a/lib/api/api.go b/lib/api/api.go index 456123fdc..6f9451dcc 100644 --- a/lib/api/api.go +++ b/lib/api/api.go @@ -1828,6 +1828,7 @@ func fileIntfJSONMap(f protocol.FileIntf) map[string]interface{} { "localFlags": f.FileLocalFlags(), "platform": f.PlatformData(), "inodeChange": f.InodeChangeTime(), + "blocksHash": f.FileBlocksHash(), } if f.HasPermissionBits() { out["permissions"] = fmt.Sprintf("%#o", f.FilePermissions()) diff --git a/lib/db/structs.go b/lib/db/structs.go index daa514fab..8c3c1f39a 100644 --- a/lib/db/structs.go +++ b/lib/db/structs.go @@ -133,6 +133,10 @@ func (f FileInfoTruncated) InodeChangeTime() time.Time { return time.Unix(0, f.InodeChangeNs) } +func (f FileInfoTruncated) FileBlocksHash() []byte { + return f.BlocksHash +} + func (f FileInfoTruncated) ConvertToIgnoredFileInfo() protocol.FileInfo { file := f.copyToFileInfo() file.SetIgnored() diff --git a/lib/protocol/bep_extensions.go b/lib/protocol/bep_extensions.go index 2290f2cce..4ee23adc5 100644 --- a/lib/protocol/bep_extensions.go +++ b/lib/protocol/bep_extensions.go @@ -46,6 +46,7 @@ type FileIntf interface { ModTime() time.Time PlatformData() PlatformData InodeChangeTime() time.Time + FileBlocksHash() []byte } func (Hello) Magic() uint32 { @@ -170,6 +171,10 @@ func (f FileInfo) InodeChangeTime() time.Time { return time.Unix(0, f.InodeChangeNs) } +func (f FileInfo) FileBlocksHash() []byte { + return f.BlocksHash +} + // WinsConflict returns true if "f" is the one to choose when it is in // conflict with "other". func WinsConflict(f, other FileIntf) bool {