diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-08-27 22:43:37 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-08-27 22:43:37 +0200 |
commit | bf56fa726e1d6ed228fde841e6312d61122174da (patch) | |
tree | 662195b887f69615571957cbaedd5c07aee7eef6 /src/Net/Listener.cpp | |
parent | 96b69222fa0c22d0eaefaae291e78913b2ae13e9 (diff) | |
download | mad-bf56fa726e1d6ed228fde841e6312d61122174da.tar mad-bf56fa726e1d6ed228fde841e6312d61122174da.zip |
Connection: Noch eine Race Condition gefixt
Diffstat (limited to 'src/Net/Listener.cpp')
-rw-r--r-- | src/Net/Listener.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/Net/Listener.cpp b/src/Net/Listener.cpp index b3974d1..a67e608 100644 --- a/src/Net/Listener.cpp +++ b/src/Net/Listener.cpp @@ -29,6 +29,8 @@ namespace Net { void Listener::accept() { boost::shared_ptr<Connection> con(Connection::create(application, context)); + con->unsetStart(); + acceptor.async_accept(con->socket.lowest_layer(), boost::bind(&Listener::handleAccept, this, boost::asio::placeholders::error, con)); } @@ -41,7 +43,7 @@ void Listener::handleAccept(const boost::system::error_code &error, boost::share { boost::lock_guard<boost::shared_mutex> conLock(con->connectionLock); - con->_setState(Connection::CONNECT); + con->_setState(Connection::HANDSHAKE); Core::Signals::Connection con1 = con->connectSignalConnected(boost::bind(&Listener::handleConnect, this, con)); Core::Signals::Connection con2 = con->connectSignalDisconnected(boost::bind(&Listener::handleDisconnect, this, con)); |