Browse Source

Merge pull request #838 from majestrate/sam-crash-fix-2017-03-29

try fixing sam crashyness
pull/839/head
orignal 8 years ago committed by GitHub
parent
commit
3d1b6e29c6
  1. 7
      SAM.cpp
  2. 6
      SAM.h

7
SAM.cpp

@ -789,13 +789,14 @@ namespace client @@ -789,13 +789,14 @@ namespace client
void SAMSession::CloseStreams ()
{
std::vector<std::shared_ptr<SAMSocket> > socks;
{
std::lock_guard<std::mutex> lock(m_SocketsMutex);
for (auto& sock : m_Sockets) {
sock->CloseStream();
for (const auto& sock : m_Sockets) {
socks.push_back(sock);
}
}
// XXX: should this be done inside locked parts?
for (auto & sock : socks ) sock->Terminate();
m_Sockets.clear();
}

6
SAM.h

@ -87,9 +87,9 @@ namespace client @@ -87,9 +87,9 @@ namespace client
void SetSocketType (SAMSocketType socketType) { m_SocketType = socketType; };
SAMSocketType GetSocketType () const { return m_SocketType; };
void Terminate ();
private:
void Terminate ();
void HandleHandshakeReceived (const boost::system::error_code& ecode, std::size_t bytes_transferred);
void HandleHandshakeReplySent (const boost::system::error_code& ecode, std::size_t bytes_transferred);
void HandleMessage (const boost::system::error_code& ecode, std::size_t bytes_transferred);
@ -143,13 +143,13 @@ namespace client @@ -143,13 +143,13 @@ namespace client
std::mutex m_SocketsMutex;
/** safely add a socket to this session */
void AddSocket(std::shared_ptr<SAMSocket> sock) {
void AddSocket(const std::shared_ptr<SAMSocket> & sock) {
std::lock_guard<std::mutex> lock(m_SocketsMutex);
m_Sockets.push_back(sock);
}
/** safely remove a socket from this session */
void DelSocket(std::shared_ptr<SAMSocket> sock) {
void DelSocket(const std::shared_ptr<SAMSocket> & sock) {
std::lock_guard<std::mutex> lock(m_SocketsMutex);
m_Sockets.remove(sock);
}

Loading…
Cancel
Save