summaryrefslogtreecommitdiffstats
path: root/src/Net/Connection.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-08-27 22:43:37 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-08-27 22:43:37 +0200
commitbf56fa726e1d6ed228fde841e6312d61122174da (patch)
tree662195b887f69615571957cbaedd5c07aee7eef6 /src/Net/Connection.cpp
parent96b69222fa0c22d0eaefaae291e78913b2ae13e9 (diff)
downloadmad-bf56fa726e1d6ed228fde841e6312d61122174da.tar
mad-bf56fa726e1d6ed228fde841e6312d61122174da.zip
Connection: Noch eine Race Condition gefixt
Diffstat (limited to 'src/Net/Connection.cpp')
-rw-r--r--src/Net/Connection.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/Net/Connection.cpp b/src/Net/Connection.cpp
index fc917d4..94b5493 100644
--- a/src/Net/Connection.cpp
+++ b/src/Net/Connection.cpp
@@ -44,17 +44,20 @@ void Connection::handleHandshake(const boost::system::error_code& error) {
{
boost::lock_guard<boost::shared_mutex> lock(connectionLock);
- _setState(CONNECTED);
+ _setState(CONNECT);
receiving = false;
sending = 0;
received = 0;
- }
- connectedSignal.emit();
+ connectedSignal.emit();
- enterReceiveLoop();
+ if(dontStart)
+ return;
+ }
+
+ startReceive();
}
void Connection::handleShutdown(const boost::system::error_code& error) {
@@ -73,7 +76,7 @@ void Connection::enterReceiveLoop() {
{
boost::lock_guard<boost::shared_mutex> lock(connectionLock);
- if(!_isConnected() || _isDisconnecting())
+ if(state != CONNECTED)
return;
}