diff options
author | Alexander Blair <snipa@jagtech.io> | 2020-08-16 12:56:35 -0700 |
---|---|---|
committer | Alexander Blair <snipa@jagtech.io> | 2020-08-16 12:56:35 -0700 |
commit | 43a4fd9e16d43cf317c9bef159b1f8abf798168d (patch) | |
tree | a29851cc62cd3baad7c87dae3eb30a57a399ddf6 | |
parent | Merge pull request #6733 (diff) | |
parent | epee: further defending against exceptions in command handlers (diff) | |
download | monero-43a4fd9e16d43cf317c9bef159b1f8abf798168d.tar.xz |
Merge pull request #6736
05ad4fa39 epee: further defending against exceptions in command handlers (moneromooo-monero)
-rw-r--r-- | contrib/epee/include/storages/levin_abstract_invoke2.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/contrib/epee/include/storages/levin_abstract_invoke2.h b/contrib/epee/include/storages/levin_abstract_invoke2.h index 4633fa546..cf1262486 100644 --- a/contrib/epee/include/storages/levin_abstract_invoke2.h +++ b/contrib/epee/include/storages/levin_abstract_invoke2.h @@ -291,6 +291,7 @@ namespace epee #define BEGIN_INVOKE_MAP2(owner_type) \ template <class t_context> int handle_invoke_map(bool is_notify, int command, const epee::span<const uint8_t> in_buff, std::string& buff_out, t_context& context, bool& handled) \ { \ + try { \ typedef owner_type internal_owner_type_name; #define HANDLE_INVOKE2(command_id, func, type_name_in, typename_out) \ @@ -336,7 +337,13 @@ namespace epee LOG_ERROR("Unknown command:" << command); \ on_levin_traffic(context, false, false, true, in_buff.size(), "invalid-command"); \ return LEVIN_ERROR_CONNECTION_HANDLER_NOT_DEFINED; \ + } \ + catch (const std::exception &e) { \ + MERROR("Error in handle_invoke_map: " << e.what()); \ + return LEVIN_ERROR_CONNECTION_TIMEDOUT; /* seems kinda appropriate */ \ + } \ } + } } |