Skip to content

Commit 517ca6e

Browse files
authored
zero-data fix (#92)
Signed-off-by: iceseer <[email protected]>
1 parent fa3e8d6 commit 517ca6e

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

include/libp2p/basic/message_read_writer.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ namespace libp2p::basic {
2020
*/
2121
class MessageReadWriter {
2222
public:
23-
using ReadCallback = outcome::result<std::shared_ptr<std::vector<uint8_t>>>;
23+
using ResultType = std::shared_ptr<std::vector<uint8_t>>;
24+
using ReadCallback = outcome::result<ResultType>;
2425
using ReadCallbackFunc = std::function<void(ReadCallback)>;
2526

2627
virtual ~MessageReadWriter() = default;

src/basic/message_read_writer_uvarint.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,23 @@ namespace libp2p::basic {
3030
}
3131

3232
auto msg_len = varint_opt->toUInt64();
33-
auto buffer = std::make_shared<std::vector<uint8_t>>(msg_len, 0);
34-
self->conn_->read(
35-
*buffer, msg_len,
36-
[self, buffer, cb = std::move(cb)](auto &&res) mutable {
37-
if (!res) {
38-
return cb(res.error());
39-
}
40-
cb(std::move(buffer));
41-
});
33+
if (0 != msg_len) {
34+
auto buffer = std::make_shared<std::vector<uint8_t>>(msg_len, 0);
35+
self->conn_->read(
36+
*buffer, msg_len,
37+
[self, buffer, cb = std::move(cb)](auto &&res) mutable {
38+
if (!res) {
39+
return cb(res.error());
40+
}
41+
cb(std::move(buffer));
42+
});
43+
} else
44+
cb(ResultType{});
4245
});
4346
}
4447

4548
void MessageReadWriterUvarint::write(gsl::span<const uint8_t> buffer,
4649
Writer::WriteCallbackFunc cb) {
47-
if (buffer.empty()) {
48-
return cb(MessageReadWriterError::BUFFER_IS_EMPTY);
49-
}
50-
5150
auto varint_len = multi::UVarint{static_cast<uint64_t>(buffer.size())};
5251

5352
auto msg_bytes = std::make_shared<std::vector<uint8_t>>();

0 commit comments

Comments
 (0)