socketio / socket.io-client-cpp

C++11 implementation of Socket.IO client
MIT License
2.26k stars 730 forks source link

Data race in sio_client_impl.cpp #394

Open dfaure-kdab opened 1 year ago

dfaure-kdab commented 1 year ago

The class client_impl creates a secondary thread called m_network_thread which runs run_loop(). From run_loop(), the callbacks such as on_close() are being called. on_close() has code such as m_con_state = con_closed; which is a data race with all the accesses to m_con_state from the main thread, such as if(m_con_state == con_closing||m_con_state == con_closed) in client_impl::connect. This needs mutex protection, or usage of an atomic.

This makes me wonder how many other member variables are victims of data races in this class....