diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-06-19 18:45:34 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-06-19 18:45:34 +0800 |
| commit | cad2569f10e6c0131e5e645ee76330c776b91547 (patch) | |
| tree | f246b6a9799644c735228c6c5df2ece65e0d028d /src/server/client.cpp | |
| parent | b3a3e73aaefa39e052e53f9f42c6d0e2f7e1bb9b (diff) | |
fix!: share pointer
for details: https://stackoverflow.com/a/5548314
Diffstat (limited to 'src/server/client.cpp')
| -rw-r--r-- | src/server/client.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/server/client.cpp b/src/server/client.cpp index cfc512a..01e4544 100644 --- a/src/server/client.cpp +++ b/src/server/client.cpp @@ -16,13 +16,16 @@ using namespace LibSock::Server; Client::Client(SP<Server> server, SP<Clients> clients, bool track, bool oneShot) : m_track(track) , m_oneShot(oneShot) { - if (!pServer || !pClients) - throw std::runtime_error("server:client: Server/ClientManager doesn't exist"); - m_sockfd = std::make_shared<LibSock::CFileDescriptor>( - accept(pServer->getSocket()->get(), reinterpret_cast<sockaddr *>(&m_addr), - &m_addrLen) - ); // if this is in the init list, it will run before - // m_addrLen, so it won't work :/ + pServer = std::move(server); + pClients = std::move(clients); + + if (!pClients) + throw std::runtime_error("server:client: ClientManager doesn't exist"); + if (!pServer) + throw std::runtime_error("server:client: Server doesn't exist"); + + m_sockfd = std::make_shared<LibSock::CFileDescriptor>(accept(pServer->getSocket()->get(), reinterpret_cast<sockaddr *>(&m_addr), &m_addrLen)); // if this is in the init list, it will run before + // m_addrLen, so it won't work :/ if (!m_sockfd->isValid()) throw std::runtime_error("server:client: Failed to create socket"); |
