diff --git a/nano/node/ipc/ipc_server.cpp b/nano/node/ipc/ipc_server.cpp index 669f527c4..b3181f105 100644 --- a/nano/node/ipc/ipc_server.cpp +++ b/nano/node/ipc/ipc_server.cpp @@ -511,23 +511,30 @@ public: // Prepare the next session auto new_session (std::make_shared> (server, context (), config_transport)); - acceptor->async_accept (new_session->get_socket (), [this, new_session] (boost::system::error_code const & ec) { + std::weak_ptr nano_weak = server.node.shared (); + acceptor->async_accept (new_session->get_socket (), [this, new_session, nano_weak] (boost::system::error_code const & ec) { + auto node = nano_weak.lock (); + if (!node) + { + return; + } + if (!ec) { new_session->read_next_request (); } else { - server.node.logger.always_log ("IPC: acceptor error: ", ec.message ()); + node->logger.always_log ("IPC: acceptor error: ", ec.message ()); } if (ec != boost::asio::error::operation_aborted && acceptor->is_open ()) { - this->accept (); + accept (); } else { - server.node.logger.always_log ("IPC: shutting down"); + node->logger.always_log ("IPC: shutting down"); } }); }