mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
wpiutil: Use scoped connections to ensure cleanup (#1474)
This commit is contained in:
@@ -31,7 +31,7 @@ HttpServerConnection::HttpServerConnection(std::shared_ptr<uv::Stream> stream)
|
||||
});
|
||||
|
||||
// pass incoming data to HTTP parser
|
||||
m_headerConn =
|
||||
m_dataConn =
|
||||
stream->data.connect_connection([this](uv::Buffer& buf, size_t size) {
|
||||
m_request.Execute(StringRef{buf.base, size});
|
||||
if (m_request.HasError()) {
|
||||
@@ -41,7 +41,8 @@ HttpServerConnection::HttpServerConnection(std::shared_ptr<uv::Stream> stream)
|
||||
});
|
||||
|
||||
// close when remote side closes
|
||||
stream->end.connect([h = stream.get()] { h->Close(); });
|
||||
m_endConn =
|
||||
stream->end.connect_connection([h = stream.get()] { h->Close(); });
|
||||
|
||||
// start reading
|
||||
stream->StartRead();
|
||||
|
||||
@@ -86,7 +86,7 @@ WebSocketServer::WebSocketServer(uv::Stream& stream,
|
||||
StringRef protocol = m_helper.MatchProtocol(protocols).second;
|
||||
|
||||
// Disconnect our header reader
|
||||
m_headerConn.disconnect();
|
||||
m_dataConn.disconnect();
|
||||
|
||||
// Accepting the stream may destroy this (as it replaces the stream user
|
||||
// data), so grab a shared pointer first.
|
||||
@@ -104,14 +104,15 @@ WebSocketServer::WebSocketServer(uv::Stream& stream,
|
||||
|
||||
// Set up stream
|
||||
stream.StartRead();
|
||||
m_headerConn =
|
||||
m_dataConn =
|
||||
stream.data.connect_connection([this](uv::Buffer& buf, size_t size) {
|
||||
if (m_aborted) return;
|
||||
m_req.Execute(StringRef{buf.base, size});
|
||||
if (m_req.HasError()) Abort(400, "Bad Request");
|
||||
});
|
||||
stream.error.connect([this](uv::Error) { m_stream.Close(); });
|
||||
stream.end.connect([this] { m_stream.Close(); });
|
||||
m_errorConn =
|
||||
stream.error.connect_connection([this](uv::Error) { m_stream.Close(); });
|
||||
m_endConn = stream.end.connect_connection([this] { m_stream.Close(); });
|
||||
}
|
||||
|
||||
std::shared_ptr<WebSocketServer> WebSocketServer::Create(
|
||||
|
||||
Reference in New Issue
Block a user