サーバー上のChunkの更新検知・再ダウンロードの挙動について

DLCのChunkを作成してサーバーからダウンロードさせる場合に、ダウンロード済みのChunkに対して、サーバー上で新しいバージョンが存在するかどうかのチェックはどのようにして行われていますでしょうか?

↑こちらの内容を拝見すると、「バージョン文字列違い」と「ハッシュ値の違い」のどちらかを検出すると再ダウンロードが行われる、と書かれているのですが、HTTPChunkInstall::ParseTitleFileManifest()の実装を確認すると、「バージョン文字列違い」しかチェックしていないように見えます。

実際に、ダウンロード済みのChunkを、内容を変更してビルドしなおしてアップロードしても、再ダウンロードが行われません。

ご確認いただけると助かります。

FBuildPatchServicesModuleの実装を参考に、FHttpChunkInstall::ParseTitleFileManifest()内のバージョンアップ検知部分を以下のようにすることでHash違いも検出できるようになりました。

//修正前
            if (InstalledVersion != RemoteVersion && bInstallIsPatch == bRemoteIsPatch)
            {
 
//修正後
            bool isHashMatch = true;
            TSet Tags;
            auto DonwloadSize = (double)RemoteManifest->GetDeltaDownloadSize(Tags, InstalledManifest.ToSharedRef());
            isHashMatch = DonwloadSize == 0;
 
            if (!isHashMatch || (InstalledVersion != RemoteVersion && bInstallIsPatch == bRemoteIsPatch))
            {

(おそらくもう少し効率の良い対応方法はあると思いますが、ManifestのHash値がPrivateメンバになってアクセスできないので、この方法で対応しています。)