mirror of
https://github.com/transmission/transmission
synced 2025-02-22 06:00:41 +00:00
fix: put "private" and "source" inside the metadata "info" key (#4809)
This commit is contained in:
parent
065facc07c
commit
e0753fedb9
2 changed files with 31 additions and 10 deletions
|
@ -340,16 +340,6 @@ std::string tr_metainfo_builder::benc(tr_error** error) const
|
|||
|
||||
tr_variantDictAddStrView(&top, TR_KEY_encoding, "UTF-8");
|
||||
|
||||
if (is_private_)
|
||||
{
|
||||
tr_variantDictAddInt(&top, TR_KEY_private, 1);
|
||||
}
|
||||
|
||||
if (!std::empty(source))
|
||||
{
|
||||
tr_variantDictAddStr(&top, TR_KEY_source, source_);
|
||||
}
|
||||
|
||||
auto* const info_dict = tr_variantDictAddDict(&top, TR_KEY_info, 5);
|
||||
auto const base = tr_sys_path_basename(top_);
|
||||
|
||||
|
@ -392,6 +382,17 @@ std::string tr_metainfo_builder::benc(tr_error** error) const
|
|||
|
||||
tr_variantDictAddInt(info_dict, TR_KEY_piece_length, pieceSize());
|
||||
tr_variantDictAddRaw(info_dict, TR_KEY_pieces, std::data(piece_hashes_), std::size(piece_hashes_));
|
||||
|
||||
if (is_private_)
|
||||
{
|
||||
tr_variantDictAddInt(info_dict, TR_KEY_private, 1);
|
||||
}
|
||||
|
||||
if (!std::empty(source))
|
||||
{
|
||||
tr_variantDictAddStr(info_dict, TR_KEY_source, source_);
|
||||
}
|
||||
|
||||
auto ret = tr_variantToStr(&top, TR_VARIANT_FMT_BENC);
|
||||
tr_variantClear(&top);
|
||||
return ret;
|
||||
|
|
|
@ -216,4 +216,24 @@ TEST_F(MakemetaTest, singleFile)
|
|||
testBuilder(builder);
|
||||
}
|
||||
|
||||
TEST_F(MakemetaTest, privateAndSourceHasDifferentInfoHash)
|
||||
{
|
||||
auto const files = makeRandomFiles(sandboxDir(), 1);
|
||||
auto const [filename, payload] = files.front();
|
||||
auto builder = tr_metainfo_builder{ filename };
|
||||
auto trackers = tr_announce_list{};
|
||||
trackers.add("udp://tracker.openbittorrent.com:80"sv, trackers.nextTier());
|
||||
builder.setAnnounceList(std::move(trackers));
|
||||
auto baseMetainfo = testBuilder(builder);
|
||||
|
||||
builder.setPrivate(true);
|
||||
auto privateMetainfo = testBuilder(builder);
|
||||
EXPECT_NE(baseMetainfo.infoHash(), privateMetainfo.infoHash());
|
||||
|
||||
builder.setSource("FOO");
|
||||
auto privateSourceMetainfo = testBuilder(builder);
|
||||
EXPECT_NE(baseMetainfo.infoHash(), privateSourceMetainfo.infoHash());
|
||||
EXPECT_NE(privateMetainfo.infoHash(), privateSourceMetainfo.infoHash());
|
||||
}
|
||||
|
||||
} // namespace libtransmission::test
|
||||
|
|
Loading…
Reference in a new issue