Replace bencode_write_version_entry with a more general-purpose function for writing bencoded dictionary entries

pull/921/head
Stephen Shelton 5 years ago
parent fd02e3e149
commit 1666498405

@ -55,7 +55,7 @@ namespace llarp
return false;
// protocol version
if(!bencode_write_version_entry(buf))
if(!bencode_write_uint64_entry(buf, "v", 1, LLARP_PROTO_VERSION))
return false;
return bencode_end(buf);

@ -87,7 +87,7 @@ namespace llarp
if(!rc.BEncode(buf))
return false;
if(!bencode_write_version_entry(buf))
if(!bencode_write_uint64_entry(buf, "v", 1, LLARP_PROTO_VERSION))
return false;
if(!bencode_write_bytestring(buf, "z", 1))

@ -52,7 +52,7 @@ namespace llarp
if(!BEncodeWriteDictArray("c", frames, buf))
return false;
// version
if(!bencode_write_version_entry(buf))
if(!bencode_write_uint64_entry(buf, "v", 1, LLARP_PROTO_VERSION))
return false;
return bencode_end(buf);
@ -101,7 +101,7 @@ namespace llarp
if(!BEncodeWriteDictEntry("u", *nextRC, buf))
return false;
}
if(!bencode_write_version_entry(buf))
if(!bencode_write_uint64_entry(buf, "v", 1, LLARP_PROTO_VERSION))
return false;
if(work && !BEncodeWriteDictEntry("w", *work, buf))
return false;

@ -111,7 +111,7 @@ namespace llarp
if(!BEncodeWriteDictInt("s", status, buf))
return false;
// version
if(!bencode_write_version_entry(buf))
if(!bencode_write_uint64_entry(buf, "v", 1, LLARP_PROTO_VERSION))
return false;
return bencode_end(buf);
@ -248,7 +248,8 @@ namespace llarp
LR_StatusRecord::BEncode(llarp_buffer_t* buf) const
{
return bencode_start_dict(buf) && BEncodeWriteDictInt("s", status, buf)
&& bencode_write_version_entry(buf) && bencode_end(buf);
&& bencode_write_uint64_entry(buf, "v", 1, LLARP_PROTO_VERSION)
&& bencode_end(buf);
}
bool

@ -142,7 +142,7 @@ namespace llarp
return false;
/** version */
if(!bencode_write_version_entry(buff))
if(!bencode_write_uint64_entry(buff, "v", 1, LLARP_PROTO_VERSION))
return false;
/** end */
return bencode_end(buff);

@ -132,8 +132,8 @@ namespace llarp
if(!bencode_write_uint64(buf, last_updated))
return false;
/* write version */
if(!bencode_write_version_entry(buf))
/* write versions */
if(!bencode_write_uint64_entry(buf, "v", 1, version))
return false;
/* write xi if they exist */

@ -139,9 +139,12 @@ bencode_discard(llarp_buffer_t* buf)
}
bool
bencode_write_version_entry(llarp_buffer_t* buff)
bencode_write_uint64_entry(llarp_buffer_t* buff, const void* name, size_t sz, uint64_t i)
{
return buff->writef("1:vi%de", LLARP_PROTO_VERSION);
if (! bencode_write_bytestring(buff, name, sz))
return false;
return bencode_write_uint64(buff, i);
}
bool

@ -29,8 +29,9 @@ bencode_write_bytestring(llarp_buffer_t* buff, const void* data, size_t sz);
bool
bencode_write_uint64(llarp_buffer_t* buff, uint64_t i);
/// Write a dictionary entry with a uint64_t value
bool
bencode_write_version_entry(llarp_buffer_t* buff);
bencode_write_uint64_entry(llarp_buffer_t* buff, const void* name, size_t sz, uint64_t i);
bool
bencode_start_list(llarp_buffer_t* buff);

@ -231,22 +231,22 @@ INSTANTIATE_TEST_CASE_P(
std::numeric_limits< uint64_t >::max() / 2,
std::numeric_limits< uint64_t >::max() / 3), );
TEST(TestBencode, good_version)
TEST(TestBencode, good_uint64_entry)
{
std::vector< byte_t > backingBuffer(100, 0);
llarp_buffer_t buffer(backingBuffer);
ASSERT_TRUE(bencode_write_version_entry(&buffer));
ASSERT_TRUE(bencode_write_uint64_entry(&buffer, "v", 1, 0));
ASSERT_EQ(std::string(buffer.base, buffer.cur), "1:vi0e");
}
TEST(TestBencode, bad_version)
TEST(TestBencode, bad_uint64_entry)
{
std::vector< byte_t > otherBuffer(1, 0);
llarp_buffer_t buffer(otherBuffer);
ASSERT_FALSE(bencode_write_version_entry(&buffer));
ASSERT_FALSE(bencode_write_uint64_entry(&buffer, "v", 1, 0));
}
struct ValueData

Loading…
Cancel
Save