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; return false;
// protocol version // protocol version
if(!bencode_write_version_entry(buf)) if(!bencode_write_uint64_entry(buf, "v", 1, LLARP_PROTO_VERSION))
return false; return false;
return bencode_end(buf); return bencode_end(buf);

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

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

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

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

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

@ -139,9 +139,12 @@ bencode_discard(llarp_buffer_t* buf)
} }
bool 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 bool

@ -29,8 +29,9 @@ bencode_write_bytestring(llarp_buffer_t* buff, const void* data, size_t sz);
bool bool
bencode_write_uint64(llarp_buffer_t* buff, uint64_t i); bencode_write_uint64(llarp_buffer_t* buff, uint64_t i);
/// Write a dictionary entry with a uint64_t value
bool 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 bool
bencode_start_list(llarp_buffer_t* buff); 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() / 2,
std::numeric_limits< uint64_t >::max() / 3), ); std::numeric_limits< uint64_t >::max() / 3), );
TEST(TestBencode, good_version) TEST(TestBencode, good_uint64_entry)
{ {
std::vector< byte_t > backingBuffer(100, 0); std::vector< byte_t > backingBuffer(100, 0);
llarp_buffer_t buffer(backingBuffer); 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"); 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); std::vector< byte_t > otherBuffer(1, 0);
llarp_buffer_t buffer(otherBuffer); llarp_buffer_t buffer(otherBuffer);
ASSERT_FALSE(bencode_write_version_entry(&buffer)); ASSERT_FALSE(bencode_write_uint64_entry(&buffer, "v", 1, 0));
} }
struct ValueData struct ValueData

Loading…
Cancel
Save