Skip to content

Commit 30d008d

Browse files
committed
fix: unpacker must be cleared before fed again. solves #4
1 parent fe7419e commit 30d008d

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/client.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class RPCClient {
5858
delay(1);
5959
}
6060

61-
if (raw_buffer_fill == 0){
61+
if (is_empty_buffer()){
6262
//Serial.println("Empty buffer... waiting response");
6363
continue;
6464
}

src/rpc.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ inline void flush_buffer(){
2323
raw_buffer_fill = 0;
2424
}
2525

26+
inline bool is_empty_buffer() {
27+
return raw_buffer_fill == 0;
28+
}
29+
2630
inline void send_msg(ITransport& transport, const MsgPack::bin_t<uint8_t>& buffer) {
2731
size_t size = buffer.size();
2832
transport.write(reinterpret_cast<const uint8_t*>(buffer.data()), size);
@@ -47,6 +51,7 @@ inline bool recv_msg(ITransport& transport, MsgPack::Unpacker& unpacker) {
4751
memcpy(raw_buffer + raw_buffer_fill, temp_buffer, bytes_read);
4852
raw_buffer_fill += bytes_read;
4953

54+
unpacker.clear();
5055
return unpacker.feed(raw_buffer, raw_buffer_fill);
5156

5257
}

0 commit comments

Comments
 (0)