diff --git a/include/opendht/node.h b/include/opendht/node.h index 394b1156..e7845b4c 100644 --- a/include/opendht/node.h +++ b/include/opendht/node.h @@ -117,7 +117,7 @@ struct Node { */ Tid openSocket(SocketCb&& cb); - Socket* getSocket(Tid id); + Sp getSocket(Tid id); /** * Closes a socket so that no further data will be red on that socket. @@ -167,7 +167,7 @@ private: using TransactionDist = std::uniform_int_distribution; std::map> requests_ {}; - std::map sockets_; + std::map> sockets_; }; } diff --git a/src/node.cpp b/src/node.cpp index 8bd17a24..1f9c45e3 100644 --- a/src/node.cpp +++ b/src/node.cpp @@ -134,18 +134,18 @@ Node::openSocket(SocketCb&& cb) if (++transaction_id == 0) transaction_id = 1; - auto sock = Socket(std::move(cb)); + auto sock = std::make_shared(std::move(cb)); auto s = sockets_.emplace(transaction_id, std::move(sock)); if (not s.second) s.first->second = std::move(sock); return transaction_id; } -Socket* +Sp Node::getSocket(Tid id) { auto it = sockets_.find(id); - return it == sockets_.end() ? nullptr : &it->second; + return it == sockets_.end() ? nullptr : it->second; } void