mirror of
https://github.com/kernelkit/infix.git
synced 2026-08-02 22:03:01 +02:00
To be able to maintain our own set of patches on top rousette, a kkit branch have been set up with a reduced set of backported fixes. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
102 lines
4.0 KiB
Diff
102 lines
4.0 KiB
Diff
From e98e079d0fdedf48facbfcf187950946c1ffed7a Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jan.kundrat@cesnet.cz>
|
|
Date: Thu, 7 Aug 2025 12:14:02 +0200
|
|
Subject: [PATCH 08/13] refactor: a better convention for weak_from_this->lock
|
|
Organization: Wires
|
|
|
|
It is not a "client", so let's stop calling it a "client". My bad.
|
|
|
|
Change-Id: Id8dc4d92c3ade8d86697366d0102e84bd466f504
|
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
|
---
|
|
src/http/EventStream.cpp | 44 ++++++++++++++++++++--------------------
|
|
1 file changed, 22 insertions(+), 22 deletions(-)
|
|
|
|
diff --git a/src/http/EventStream.cpp b/src/http/EventStream.cpp
|
|
index 0893653..3bdd55e 100644
|
|
--- a/src/http/EventStream.cpp
|
|
+++ b/src/http/EventStream.cpp
|
|
@@ -47,11 +47,11 @@ EventStream::EventStream(const server::request& req,
|
|
}
|
|
|
|
state = WantToClose;
|
|
- boost::asio::post(this->res.io_service(), [maybeClient = std::weak_ptr<EventStream>{shared_from_this()}]() {
|
|
- if (auto client = maybeClient.lock()) {
|
|
- std::lock_guard lock{client->mtx};
|
|
- if (client->state == WantToClose) { // resume unless somebody closed it before this was picked up by the event loop
|
|
- client->res.resume();
|
|
+ boost::asio::post(this->res.io_service(), [weak = std::weak_ptr<EventStream>{shared_from_this()}]() {
|
|
+ if (auto myself = weak.lock()) {
|
|
+ std::lock_guard lock{myself->mtx};
|
|
+ if (myself->state == WantToClose) { // resume unless somebody closed it before this was picked up by the event loop
|
|
+ myself->res.resume();
|
|
}
|
|
}
|
|
});
|
|
@@ -67,23 +67,23 @@ void EventStream::activate()
|
|
{
|
|
start_ping();
|
|
|
|
- auto client = shared_from_this();
|
|
+ auto myself = shared_from_this();
|
|
res.write_head(200, {
|
|
{"content-type", {"text/event-stream", false}},
|
|
{"access-control-allow-origin", {"*", false}},
|
|
});
|
|
|
|
- res.on_close([client](const auto ec) {
|
|
- spdlog::debug("{}: closed ({})", client->peer, nghttp2_http2_strerror(ec));
|
|
- std::lock_guard lock{client->mtx};
|
|
- client->ping.cancel();
|
|
- client->eventSub.disconnect();
|
|
- client->terminateSub.disconnect();
|
|
- client->state = Closed;
|
|
+ res.on_close([myself](const auto ec) {
|
|
+ spdlog::debug("{}: closed ({})", myself->peer, nghttp2_http2_strerror(ec));
|
|
+ std::lock_guard lock{myself->mtx};
|
|
+ myself->ping.cancel();
|
|
+ myself->eventSub.disconnect();
|
|
+ myself->terminateSub.disconnect();
|
|
+ myself->state = Closed;
|
|
});
|
|
|
|
- res.end([client](uint8_t* destination, std::size_t len, uint32_t* data_flags) {
|
|
- return client->process(destination, len, data_flags);
|
|
+ res.end([myself](uint8_t* destination, std::size_t len, uint32_t* data_flags) {
|
|
+ return myself->process(destination, len, data_flags);
|
|
});
|
|
}
|
|
|
|
@@ -156,21 +156,21 @@ void EventStream::enqueue(const std::string& fieldName, const std::string& what)
|
|
void EventStream::start_ping()
|
|
{
|
|
ping.expires_from_now(boost::posix_time::seconds(m_keepAlivePingInterval.count()));
|
|
- ping.async_wait([maybeClient = weak_from_this()](const boost::system::error_code& ec) {
|
|
- auto client = maybeClient.lock();
|
|
- if (!client) {
|
|
+ ping.async_wait([weak = weak_from_this()](const boost::system::error_code& ec) {
|
|
+ auto myself = weak.lock();
|
|
+ if (!myself) {
|
|
spdlog::trace("ping: client already gone");
|
|
return;
|
|
}
|
|
|
|
if (ec == boost::asio::error::operation_aborted) {
|
|
- spdlog::trace("{}: ping scheduler cancelled", client->peer);
|
|
+ spdlog::trace("{}: ping scheduler cancelled", myself->peer);
|
|
return;
|
|
}
|
|
|
|
- client->enqueue("", "\n");
|
|
- spdlog::trace("{}: keep-alive ping enqueued", client->peer);
|
|
- client->start_ping();
|
|
+ myself->enqueue("", "\n");
|
|
+ spdlog::trace("{}: keep-alive ping enqueued", myself->peer);
|
|
+ myself->start_ping();
|
|
});
|
|
}
|
|
|
|
--
|
|
2.43.0
|
|
|