Skip to content

Commit d374a7b

Browse files
committed
feat: catching PARSING_ERR for return/error type mismatch
1 parent becc113 commit d374a7b

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

src/client.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ class RPCClient {
6868
lastError.code = tmp_error.code;
6969
lastError.traceback = tmp_error.traceback;
7070
return true;
71+
} else if (tmp_error.code == PARSING_ERR) { // catches the parsing error
72+
lastError.code = tmp_error.code;
73+
lastError.traceback = tmp_error.traceback;
7174
}
7275
return false;
7376
}

src/decoder.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,17 @@ class RpcDecoder {
7676

7777
MsgPack::object::nil_t nil;
7878
if (unpacker.unpackable(nil)){ // No error
79-
if (!unpacker.deserialize(nil, result)) return false;
79+
if (!unpacker.deserialize(nil, result)) {
80+
error.code = PARSING_ERR;
81+
error.traceback = "Result not parsable (check type)";
82+
return false;
83+
}
8084
} else { // RPC returned an error
81-
if (!unpacker.deserialize(error, nil)) return false;
85+
if (!unpacker.deserialize(error, nil)) {
86+
error.code = PARSING_ERR;
87+
error.traceback = "RPC Error not parsable (check type)";
88+
return false;
89+
}
8290
}
8391

8492
reset_packet();

src/error.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "MsgPack.h"
1818

1919
#define NO_ERR 0x00
20+
#define PARSING_ERR 0xFC
2021
#define MALFORMED_CALL_ERR 0xFD
2122
#define FUNCTION_NOT_FOUND_ERR 0xFE
2223
#define GENERIC_ERR 0xFF

0 commit comments

Comments
 (0)