Skip to content

Commit dbfce71

Browse files
committed
Fix potential race in POCOClient::websocketConnect().
1 parent 90ce7e3 commit dbfce71

File tree

1 file changed

+5
-11
lines changed

1 file changed

+5
-11
lines changed

src/rws_poco_client.cpp

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -335,18 +335,12 @@ POCOClient::POCOResult POCOClient::webSocketConnect(const std::string uri,
335335
{
336336
result.addHTTPRequestInfo(request);
337337
{
338-
// We must have at least websocket_connect_mutext_,
339-
// but if a connection already exists, we must also have websocket_use_mutex_.
338+
// We must have at least websocket_connect_mutext_.
339+
// If a connection already exists, we must also have websocket_use_mutex_.
340+
// If not, nobody should have the mutex anyway, so we should get it immediately.
340341
ScopedLock<Mutex> connect_lock(websocket_connect_mutex_);
341-
if (webSocketExist())
342-
{
343-
ScopedLock<Mutex> use_lock(websocket_use_mutex_);
344-
p_websocket_ = new WebSocket(http_client_session_, request, response);
345-
}
346-
else
347-
{
348-
p_websocket_ = new WebSocket(http_client_session_, request, response);
349-
}
342+
ScopedLock<Mutex> use_lock(websocket_use_mutex_);
343+
p_websocket_ = new WebSocket(http_client_session_, request, response);
350344

351345
p_websocket_->setReceiveTimeout(Poco::Timespan(timeout));
352346
}

0 commit comments

Comments
 (0)