summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0001-Add-unmerged-changes-for-http-retry-support.patch172
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0002-EventService-https-client-support.patch243
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0004-Add-Server-Sent-Events-support.patch14
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0005-Add-SSE-style-subscription-support-to-eventservice.patch70
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0006-Add-EventService-SSE-filter-support.patch24
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0007-EventService-Log-events-for-subscription-actions.patch21
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0008-Add-checks-on-Event-Subscription-input-parameters.patch33
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0009-Restructure-Redifsh-EventLog-Transmit-code-flow.patch18
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0010-Remove-Terminated-Event-Subscriptions.patch71
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0011-Fix-bmcweb-crash-while-deleting-terminated-subscriptions.patch12
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0012-Add-support-for-deleting-terminated-subscriptions.patch45
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0013-event-service-fix-added-Context-field-to-response.patch33
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/README10
13 files changed, 447 insertions, 319 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0001-Add-unmerged-changes-for-http-retry-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0001-Add-unmerged-changes-for-http-retry-support.patch
index 52135e255..7229f9aa7 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0001-Add-unmerged-changes-for-http-retry-support.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0001-Add-unmerged-changes-for-http-retry-support.patch
@@ -1,6 +1,6 @@
-From 6ff897d2b5513f15445f18aae16d8439ed94f377 Mon Sep 17 00:00:00 2001
+From 43b629c180e1b4350a9e9bd917d81a49acb57731 Mon Sep 17 00:00:00 2001
From: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
-Date: Mon, 11 Oct 2021 18:41:27 +0530
+Date: Mon, 6 Dec 2021 19:49:01 +0000
Subject: [PATCH] Add unmerged changes for http retry support
The http retry support added upstream as a single patch was slpit into
@@ -9,45 +9,19 @@ This commit pulls in the differentail changes required to complete the
entire http retry support. and also allow for other subsequent patches
to be appplied easily.
-Change-Id: Id8ccd991b7ffc505196b1a92b23e1cd51e00bc89
+Change-Id: I43e68eeffb8d69c289dd306c1c7cafc87ad766a0
Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
---
- http/http_client.hpp | 44 +++++++++++--------
- .../include/event_service_manager.hpp | 2 +-
- 2 files changed, 27 insertions(+), 19 deletions(-)
+ http/http_client.hpp | 32 ++++++++++++++++---
+ .../include/event_service_manager.hpp | 26 +++++++++------
+ redfish-core/lib/event_service.hpp | 1 +
+ 3 files changed, 45 insertions(+), 14 deletions(-)
diff --git a/http/http_client.hpp b/http/http_client.hpp
-index ab20eb0..aad1cce 100644
+index 0c9e387..0701d9e 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
-@@ -68,7 +68,6 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
- std::optional<
- boost::beast::http::response_parser<boost::beast::http::string_body>>
- parser;
-- std::vector<std::pair<std::string, std::string>> headers;
- boost::circular_buffer_space_optimized<std::string> requestDataQueue{};
-
- ConnState state;
-@@ -137,18 +136,6 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
-
- BMCWEB_LOG_DEBUG << __FUNCTION__ << "(): " << host << ":" << port;
-
-- req.version(static_cast<int>(11)); // HTTP 1.1
-- req.target(uri);
-- req.method(boost::beast::http::verb::post);
--
-- // Set headers
-- for (const auto& [key, value] : headers)
-- {
-- req.set(key, value);
-- }
-- req.set(boost::beast::http::field::host, host);
-- req.keep_alive(true);
--
- req.body() = data;
- req.prepare_payload();
-
-@@ -204,6 +191,17 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -189,6 +189,17 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
BMCWEB_LOG_DEBUG << "recvMessage() data: "
<< self->parser->get();
@@ -65,57 +39,125 @@ index ab20eb0..aad1cce 100644
unsigned int respCode = self->parser->get().result_int();
BMCWEB_LOG_DEBUG << "recvMessage() Header Response Code: "
<< respCode;
-@@ -398,11 +396,17 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -381,15 +392,17 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+ public:
+ explicit HttpClient(boost::asio::io_context& ioc, const std::string& id,
const std::string& destIP, const std::string& destPort,
- const std::string& destUri) :
+- const std::string& destUri,
+- const boost::beast::http::fields& httpHeader) :
++ const std::string& destUri) :
conn(ioc),
-- timer(ioc), subId(id), host(destIP), port(destPort), uri(destUri),
-- retryCount(0), maxRetryAttempts(5), retryIntervalSecs(0),
-+ timer(ioc), req(boost::beast::http::verb::post, destUri, 11),
-+ state(ConnState::initialized), subId(id), host(destIP), port(destPort),
-+ uri(destUri), retryCount(0), maxRetryAttempts(5), retryIntervalSecs(0),
- retryPolicyAction("TerminateAfterRetries"), runningTimer(false)
+- timer(ioc),
+- req(boost::beast::http::verb::post, destUri, 11, "", httpHeader),
+- subId(id), host(destIP), port(destPort)
++ timer(ioc), req(boost::beast::http::verb::post, destUri, 11), subId(id),
++ host(destIP), port(destPort)
{
-- state = ConnState::initialized;
+ // Set the request header
-+ req.set(boost::beast::http::field::host, host);
+ req.set(boost::beast::http::field::host, host);
+ req.set(boost::beast::http::field::content_type, "application/json");
-+ req.keep_alive(true);
+ req.keep_alive(true);
+
+ requestDataQueue.set_capacity(maxRequestQueueSize);
}
void sendData(const std::string& data)
-@@ -425,10 +429,14 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -412,6 +425,15 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
return;
}
-- void setHeaders(
-+ void addHeaders(
- const std::vector<std::pair<std::string, std::string>>& httpHeaders)
- {
-- headers = httpHeaders;
++ void setHeaders(const boost::beast::http::fields& httpHeaders)
++ {
+ // Set custom headers
-+ for (const auto& [key, value] : httpHeaders)
++ for (const auto& header : httpHeaders)
+ {
-+ req.set(key, value);
++ req.set(header.name(), header.value());
+ }
- }
-
++ }
++
void setRetryConfig(const uint32_t retryAttempts,
+ const uint32_t retryTimeoutInterval)
+ {
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index 8042803..0a63b8c 100644
+index e0f290c..7a2f096 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
-@@ -412,7 +412,7 @@ class Subscription : public persistent_data::UserSubscription
- reqHeaders.emplace_back(std::pair(key, val));
- }
- }
-- conn->setHeaders(reqHeaders);
-+ conn->addHeaders(reqHeaders);
- conn->sendData(msg);
- this->eventSeqNum++;
+@@ -384,7 +384,10 @@ class Subscription : public persistent_data::UserSubscription
+ eventSeqNum(1),
+ host(inHost), port(inPort), path(inPath), uriProto(inUriProto)
+ {
+- // Subscription constructor
++ // create the HttpClient connection
++ conn = std::make_shared<crow::HttpClient>(
++ crow::connections::systemBus->get_io_context(), id, host, port,
++ path);
+ }
+
+ Subscription(const std::shared_ptr<boost::beast::tcp_stream>& adaptor) :
+@@ -397,17 +400,12 @@ class Subscription : public persistent_data::UserSubscription
+
+ void sendEvent(const std::string& msg)
+ {
+- if (conn == nullptr)
++ if (conn != nullptr)
+ {
+- // create the HttpClient connection
+- conn = std::make_shared<crow::HttpClient>(
+- crow::connections::systemBus->get_io_context(), id, host, port,
+- path, httpHeaders);
++ conn->sendData(msg);
++ eventSeqNum++;
}
+
+- conn->sendData(msg);
+- eventSeqNum++;
+-
+ if (sseConn != nullptr)
+ {
+ sseConn->sendData(eventSeqNum, msg);
+@@ -551,6 +549,14 @@ class Subscription : public persistent_data::UserSubscription
+ }
+ }
+
++ void updatehttpHeaders()
++ {
++ if (conn != nullptr)
++ {
++ conn->setHeaders(httpHeaders);
++ }
++ }
++
+ uint64_t getEventSeqNum()
+ {
+ return eventSeqNum;
+@@ -664,6 +670,7 @@ class EventServiceManager
+ // Update retry configuration.
+ subValue->updateRetryConfig(retryAttempts, retryTimeoutInterval);
+ subValue->updateRetryPolicy();
++ subValue->updatehttpHeaders();
+ }
+ return;
+ }
+@@ -919,6 +926,7 @@ class EventServiceManager
+ // Update retry configuration.
+ subValue->updateRetryConfig(retryAttempts, retryTimeoutInterval);
+ subValue->updateRetryPolicy();
++ subValue->updatehttpHeaders();
+
+ return id;
+ }
+diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
+index d273aea..7739ad0 100644
+--- a/redfish-core/lib/event_service.hpp
++++ b/redfish-core/lib/event_service.hpp
+@@ -611,6 +611,7 @@ inline void requestRoutesEventDestination(App& app)
+ }
+ }
+ subValue->httpHeaders = fields;
++ subValue->updatehttpHeaders();
+ }
+
+ if (retryPolicy)
--
2.17.1
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0002-EventService-https-client-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0002-EventService-https-client-support.patch
index aeeafc421..2125fcc52 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0002-EventService-https-client-support.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0002-EventService-https-client-support.patch
@@ -1,6 +1,6 @@
-From 3f2ad28e6e124249cde3df50c9e18c283fbcbf3e Mon Sep 17 00:00:00 2001
+From b5e0024f33afc95751afe14e66c38bf9802645f6 Mon Sep 17 00:00:00 2001
From: AppaRao Puli <apparao.puli@linux.intel.com>
-Date: Mon, 22 Feb 2021 17:07:47 +0000
+Date: Mon, 6 Dec 2021 21:39:05 +0000
Subject: [PATCH] EventService: https client support
Add https client support for push style eventing. Using this BMC can
@@ -13,15 +13,16 @@ Tested:
listener.
- Validator passed.
-Change-Id: I44c3918b39baa2eb5fddda9d635f99aa280a422a
+Change-Id: I480085344ba7bed6ec0d94876eda1d252e51cb45
Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
+Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
---
http/http_client.hpp | 307 ++++++++++++------
.../include/event_service_manager.hpp | 2 +-
- 2 files changed, 202 insertions(+), 107 deletions(-)
+ 2 files changed, 204 insertions(+), 105 deletions(-)
diff --git a/http/http_client.hpp b/http/http_client.hpp
-index aad1cce..5e7ff47 100644
+index d3d3491..58b5402 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -20,6 +20,7 @@
@@ -30,9 +31,9 @@ index aad1cce..5e7ff47 100644
#include <boost/beast/http/message.hpp>
+#include <boost/beast/ssl/ssl_stream.hpp>
#include <boost/beast/version.hpp>
+ #include <boost/circular_buffer.hpp>
#include <include/async_resolve.hpp>
-
-@@ -43,6 +44,8 @@ enum class ConnState
+@@ -44,6 +45,8 @@ enum class ConnState
resolveFailed,
connectInProgress,
connectFailed,
@@ -41,7 +42,7 @@ index aad1cce..5e7ff47 100644
connected,
sendInProgress,
sendFailed,
-@@ -61,7 +64,9 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -62,7 +65,9 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
{
private:
crow::async_resolve::Resolver resolver;
@@ -51,7 +52,7 @@ index aad1cce..5e7ff47 100644
boost::asio::steady_timer timer;
boost::beast::flat_static_buffer<httpReadBodyLimit> buffer;
boost::beast::http::request<boost::beast::http::string_body> req;
-@@ -108,23 +113,52 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -110,23 +115,52 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
const std::vector<boost::asio::ip::tcp::endpoint>& endpointList)
{
state = ConnState::connectInProgress;
@@ -112,15 +113,7 @@ index aad1cce..5e7ff47 100644
self->state = ConnState::connected;
self->handleConnState();
});
-@@ -132,132 +166,187 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
-
- void sendMessage(const std::string& data)
- {
-- state = ConnState::sendInProgress;
--
- BMCWEB_LOG_DEBUG << __FUNCTION__ << "(): " << host << ":" << port;
-+ state = ConnState::sendInProgress;
-
+@@ -139,124 +173,182 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
req.body() = data;
req.prepare_payload();
@@ -173,23 +166,52 @@ index aad1cce..5e7ff47 100644
+ boost::beast::http::async_write(conn, req, std::move(respHandler));
+ }
}
--
+
void recvMessage()
{
state = ConnState::recvInProgress;
+- parser.emplace(std::piecewise_construct, std::make_tuple());
+- parser->body_limit(httpReadBodyLimit);
+ auto respHandler = [self(shared_from_this())](
+ const boost::beast::error_code ec,
+ const std::size_t& bytesTransferred) {
+ if (ec && ec != boost::asio::ssl::error::stream_truncated)
+ {
+ BMCWEB_LOG_ERROR << "recvMessage() failed: " << ec.message();
-+
+
+- // Receive the HTTP response
+- boost::beast::http::async_read(
+- conn, buffer, *parser,
+- [self(shared_from_this())](const boost::beast::error_code& ec,
+- const std::size_t& bytesTransferred) {
+- if (ec)
+- {
+- BMCWEB_LOG_ERROR << "recvMessage() failed: "
+- << ec.message();
+- self->state = ConnState::recvFailed;
+- self->handleConnState();
+- return;
+- }
+- BMCWEB_LOG_DEBUG << "recvMessage() bytes transferred: "
+- << bytesTransferred;
+- BMCWEB_LOG_DEBUG << "recvMessage() data: "
+- << self->parser->get();
+ self->state = ConnState::recvFailed;
+ self->handleConnState();
+ return;
+ }
-+
+
+- // Check if the response and header are received
+- if (!self->parser->is_done())
+- {
+- // The parser failed to receive the response
+- BMCWEB_LOG_ERROR
+- << "recvMessage() parser failed to receive response";
+- self->state = ConnState::recvFailed;
+- self->handleConnState();
+- return;
+- }
+ BMCWEB_LOG_DEBUG << "recvMessage() bytes transferred: "
+ << bytesTransferred;
+ boost::ignore_unused(bytesTransferred);
@@ -204,11 +226,26 @@ index aad1cce..5e7ff47 100644
+ self->handleConnState();
+ return;
+ }
-+
+
+- unsigned int respCode = self->parser->get().result_int();
+- BMCWEB_LOG_DEBUG << "recvMessage() Header Response Code: "
+- << respCode;
+ unsigned int respCode = self->parser->get().result_int();
+ BMCWEB_LOG_DEBUG << "recvMessage() Header Response Code: "
+ << respCode;
-+
+
+- // 2XX response is considered to be successful
+- if ((respCode < 200) || (respCode >= 300))
+- {
+- // The listener failed to receive the Sent-Event
+- BMCWEB_LOG_ERROR
+- << "recvMessage() Listener Failed to "
+- "receive Sent-Event. Header Response Code: "
+- << respCode;
+- self->state = ConnState::recvFailed;
+- self->handleConnState();
+- return;
+- }
+ // 2XX response is considered to be successful
+ if ((respCode < 200) || (respCode >= 300))
+ {
@@ -219,7 +256,14 @@ index aad1cce..5e7ff47 100644
+ self->handleConnState();
+ return;
+ }
-+
+
+- // Send is successful, Lets remove data from queue
+- // check for next request data in queue.
+- if (!self->requestDataQueue.empty())
+- {
+- self->requestDataQueue.pop_front();
+- }
+- self->state = ConnState::idle;
+ // Send is successful, Lets remove data from queue
+ // check for next request data in queue.
+ if (!self->requestDataQueue.empty())
@@ -236,17 +280,30 @@ index aad1cce..5e7ff47 100644
+ // Abort the connection since server is not keep-alive enabled
+ self->state = ConnState::abortConnection;
+ }
-+
+
+- // Keep the connection alive if server supports it
+- // Else close the connection
+- BMCWEB_LOG_DEBUG << "recvMessage() keepalive : "
+- << self->parser->keep_alive();
+- if (!self->parser->keep_alive())
+- {
+- // Abort the connection since server is not keep-alive
+- // enabled
+- self->state = ConnState::abortConnection;
+- }
+ // Returns ownership of the parsed message
+ self->parser->release();
-+
+
+- self->handleConnState();
+- });
+- }
+ self->handleConnState();
+ };
- parser.emplace(std::piecewise_construct, std::make_tuple());
- parser->body_limit(httpReadBodyLimit);
++ parser.emplace(std::piecewise_construct, std::make_tuple());
++ parser->body_limit(httpReadBodyLimit);
- // Check only for the response header
- parser->skip(true);
++ // Check only for the response header
++ parser->skip(true);
+ conn.expires_after(std::chrono::seconds(30));
+ if (sslConn)
+ {
@@ -259,28 +316,25 @@ index aad1cce..5e7ff47 100644
+ std::move(respHandler));
+ }
+ }
-+ void doClose()
-+ {
-+ state = ConnState::closeInProgress;
+ void doClose()
+ {
+ state = ConnState::closeInProgress;
+- boost::beast::error_code ec;
+- conn.socket().shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
+- conn.close();
-- // Receive the HTTP response
-- boost::beast::http::async_read(
-- conn, buffer, *parser,
-- [self(shared_from_this())](const boost::beast::error_code& ec,
-- const std::size_t& bytesTransferred) {
+- // not_connected happens sometimes so don't bother reporting it.
+- if (ec && ec != boost::beast::errc::not_connected)
+ // Set the timeout on the tcp stream socket for the async operation
+ conn.expires_after(std::chrono::seconds(30));
+ if (sslConn)
-+ {
+ {
+- BMCWEB_LOG_ERROR << "shutdown failed: " << ec.message();
+- return;
+ sslConn->async_shutdown([self = shared_from_this()](
+ const boost::system::error_code ec) {
- if (ec)
- {
-- BMCWEB_LOG_ERROR << "recvMessage() failed: "
-- << ec.message();
-- self->state = ConnState::recvFailed;
-- self->handleConnState();
-- return;
++ if (ec)
++ {
+ // Many https server closes connection abruptly
+ // i.e witnout close_notify. More details are at
+ // https://github.com/boostorg/beast/issues/824
@@ -294,79 +348,20 @@ index aad1cce..5e7ff47 100644
+ BMCWEB_LOG_ERROR << "doClose() failed: "
+ << ec.message();
+ }
- }
-- BMCWEB_LOG_DEBUG << "recvMessage() bytes transferred: "
-- << bytesTransferred;
-- BMCWEB_LOG_DEBUG << "recvMessage() data: "
-- << self->parser->get();
--
-- // Check if the response and header are received
-- if (!self->parser->is_done())
++ }
+ else
- {
-- // The parser failed to receive the response
-- BMCWEB_LOG_ERROR
-- << "recvMessage() parser failed to receive response";
-- self->state = ConnState::recvFailed;
-- self->handleConnState();
-- return;
++ {
+ BMCWEB_LOG_DEBUG << "Connection closed gracefully...";
- }
++ }
+ self->conn.close();
-
-- unsigned int respCode = self->parser->get().result_int();
-- BMCWEB_LOG_DEBUG << "recvMessage() Header Response Code: "
-- << respCode;
--
-- // 2XX response is considered to be successful
-- if ((respCode < 200) || (respCode >= 300))
++
+ if ((self->state != ConnState::suspended) &&
+ (self->state != ConnState::terminated))
- {
-- // The listener failed to receive the Sent-Event
-- BMCWEB_LOG_ERROR << "recvMessage() Listener Failed to "
-- "receive Sent-Event";
-- self->state = ConnState::recvFailed;
++ {
+ self->state = ConnState::closed;
- self->handleConnState();
-- return;
- }
--
-- // Send is successful, Lets remove data from queue
-- // check for next request data in queue.
-- if (!self->requestDataQueue.empty())
-- {
-- self->requestDataQueue.pop_front();
-- }
-- self->state = ConnState::idle;
--
-- // Keep the connection alive if server supports it
-- // Else close the connection
-- BMCWEB_LOG_DEBUG << "recvMessage() keepalive : "
-- << self->parser->keep_alive();
-- if (!self->parser->keep_alive())
-- {
-- // Abort the connection since server is not keep-alive
-- // enabled
-- self->state = ConnState::abortConnection;
-- }
--
-- self->handleConnState();
- });
-- }
--
-- void doClose()
-- {
-- state = ConnState::closeInProgress;
-- boost::beast::error_code ec;
-- conn.socket().shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
-- conn.close();
--
-- // not_connected happens sometimes so don't bother reporting it.
-- if (ec && ec != boost::beast::errc::not_connected)
-- {
-- BMCWEB_LOG_ERROR << "shutdown failed: " << ec.message();
-- return;
++ self->handleConnState();
++ }
++ });
}
- BMCWEB_LOG_DEBUG << "Connection closed gracefully";
- if ((state != ConnState::suspended) && (state != ConnState::terminated))
@@ -396,7 +391,7 @@ index aad1cce..5e7ff47 100644
}
}
-@@ -330,6 +419,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -329,6 +421,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
{
case ConnState::resolveInProgress:
case ConnState::connectInProgress:
@@ -404,7 +399,7 @@ index aad1cce..5e7ff47 100644
case ConnState::sendInProgress:
case ConnState::recvInProgress:
case ConnState::closeInProgress:
-@@ -356,6 +446,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -355,6 +448,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
}
case ConnState::resolveFailed:
case ConnState::connectFailed:
@@ -412,7 +407,7 @@ index aad1cce..5e7ff47 100644
case ConnState::sendFailed:
case ConnState::recvFailed:
case ConnState::retry:
-@@ -394,7 +485,8 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -391,7 +485,8 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
public:
explicit HttpClient(boost::asio::io_context& ioc, const std::string& id,
const std::string& destIP, const std::string& destPort,
@@ -420,9 +415,9 @@ index aad1cce..5e7ff47 100644
+ const std::string& destUri,
+ const std::string& uriProto) :
conn(ioc),
- timer(ioc), req(boost::beast::http::verb::post, destUri, 11),
- state(ConnState::initialized), subId(id), host(destIP), port(destPort),
-@@ -407,8 +499,11 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+ timer(ioc), req(boost::beast::http::verb::post, destUri, 11), subId(id),
+ host(destIP), port(destPort)
+@@ -402,6 +497,10 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
req.keep_alive(true);
requestDataQueue.set_capacity(maxRequestQueueSize);
@@ -431,16 +426,14 @@ index aad1cce..5e7ff47 100644
+ sslConn.emplace(conn, ctx);
+ }
}
--
+
void sendData(const std::string& data)
- {
- if ((state == ConnState::suspended) || (state == ConnState::terminated))
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index 08d0b98..f1ce0c0 100644
+index 317f900..f581b96 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
-@@ -385,7 +385,7 @@ class Subscription : public persistent_data::UserSubscription
- {
+@@ -383,7 +383,7 @@ class Subscription : public persistent_data::UserSubscription
+ // create the HttpClient connection
conn = std::make_shared<crow::HttpClient>(
crow::connections::systemBus->get_io_context(), id, host, port,
- path);
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0004-Add-Server-Sent-Events-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0004-Add-Server-Sent-Events-support.patch
index ea521a7e4..dfa67935c 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0004-Add-Server-Sent-Events-support.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0004-Add-Server-Sent-Events-support.patch
@@ -1,4 +1,4 @@
-From d7a2660f200c38e74bfcbfe55b8da1b8bed08833 Mon Sep 17 00:00:00 2001
+From ea7d0091545450721d8b9b901e2593401b50d24c Mon Sep 17 00:00:00 2001
From: AppaRao Puli <apparao.puli@linux.intel.com>
Date: Fri, 12 Mar 2021 18:53:25 +0000
Subject: [PATCH] Add Server-Sent-Events support
@@ -31,10 +31,10 @@ Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
create mode 100644 http/server_sent_event.hpp
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
-index 8e53afa..a1bbfce 100644
+index 0f20761..9cf603d 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
-@@ -378,11 +378,13 @@ class Connection :
+@@ -362,11 +362,13 @@ class Connection :
[self] { self->completeRequest(); });
});
@@ -83,10 +83,10 @@ index a983d4a..07b0265 100644
// In case of a JSON object, set the Content-Type header
void jsonMode()
diff --git a/http/routing.hpp b/http/routing.hpp
-index 5d9c8e3..bfff107 100644
+index fe9c7e9..c748580 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
-@@ -6,6 +6,7 @@
+@@ -7,6 +7,7 @@
#include "http_response.hpp"
#include "logging.hpp"
#include "privileges.hpp"
@@ -94,7 +94,7 @@ index 5d9c8e3..bfff107 100644
#include "sessions.hpp"
#include "utility.hpp"
#include "websocket.hpp"
-@@ -398,6 +399,68 @@ class WebSocketRule : public BaseRule
+@@ -397,6 +398,68 @@ class WebSocketRule : public BaseRule
std::function<void(crow::websocket::Connection&)> errorHandler;
};
@@ -163,7 +163,7 @@ index 5d9c8e3..bfff107 100644
template <typename T>
struct RuleParameterTraits
{
-@@ -410,6 +473,14 @@ struct RuleParameterTraits
+@@ -409,6 +472,14 @@ struct RuleParameterTraits
return *p;
}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0005-Add-SSE-style-subscription-support-to-eventservice.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0005-Add-SSE-style-subscription-support-to-eventservice.patch
index ee69081ef..525070d93 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0005-Add-SSE-style-subscription-support-to-eventservice.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0005-Add-SSE-style-subscription-support-to-eventservice.patch
@@ -1,4 +1,4 @@
-From 799e47842e179f7c752712004f0e96d3219eee11 Mon Sep 17 00:00:00 2001
+From 278ea5570d8a162774c3d84b0706e27539e714cc Mon Sep 17 00:00:00 2001
From: AppaRao Puli <apparao.puli@linux.intel.com>
Date: Tue, 16 Mar 2021 15:37:24 +0000
Subject: [PATCH] Add SSE style subscription support to eventservice
@@ -25,18 +25,18 @@ Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
http/http_connection.hpp | 2 +-
include/eventservice_sse.hpp | 75 +++++
.../include/event_service_manager.hpp | 109 +++++--
- redfish-core/include/server_sent_events.hpp | 290 ------------------
+ redfish-core/include/server_sent_events.hpp | 289 ------------------
redfish-core/lib/event_service.hpp | 8 +-
src/webserver_main.cpp | 2 +
- 6 files changed, 164 insertions(+), 322 deletions(-)
+ 6 files changed, 164 insertions(+), 321 deletions(-)
create mode 100644 include/eventservice_sse.hpp
delete mode 100644 redfish-core/include/server_sent_events.hpp
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
-index a1bbfce..2d08501 100644
+index 9cf603d..cf629ea 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
-@@ -382,7 +382,7 @@ class Connection :
+@@ -366,7 +366,7 @@ class Connection :
boost::iequals(
thisReq.getHeaderValue(boost::beast::http::field::upgrade),
"websocket")) ||
@@ -127,17 +127,18 @@ index 0000000..14daf00
+} // namespace eventservice_sse
+} // namespace redfish
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index 3f398d7..dd833ce 100644
+index f581b96..57a2ab8 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
-@@ -22,15 +22,17 @@
+@@ -23,6 +23,7 @@
#include <sys/inotify.h>
#include <boost/asio/io_context.hpp>
+#include <boost/beast/core/span.hpp>
#include <boost/container/flat_map.hpp>
+ #include <dbus_utility.hpp>
#include <error_messages.hpp>
- #include <event_service_store.hpp>
+@@ -30,9 +31,10 @@
#include <http_client.hpp>
#include <persistent_data.hpp>
#include <random.hpp>
@@ -149,7 +150,7 @@ index 3f398d7..dd833ce 100644
#include <cstdlib>
#include <ctime>
#include <fstream>
-@@ -46,9 +48,27 @@ using ReadingsObjType =
+@@ -48,9 +50,27 @@ using ReadingsObjType =
static constexpr const char* eventFormatType = "Event";
static constexpr const char* metricReportFormatType = "MetricReport";
@@ -176,10 +177,10 @@ index 3f398d7..dd833ce 100644
+
namespace message_registries
{
- inline boost::beast::span<const MessageEntry>
-@@ -68,24 +88,6 @@ inline boost::beast::span<const MessageEntry>
+ inline std::span<const MessageEntry>
+@@ -70,24 +90,6 @@ inline std::span<const MessageEntry>
}
- return boost::beast::span<const MessageEntry>(openbmc::registry);
+ return {openbmc::registry};
}
-} // namespace message_registries
-
@@ -201,8 +202,8 @@ index 3f398d7..dd833ce 100644
-{
static const Message*
getMsgFromRegistry(const std::string& messageKey,
- const boost::beast::span<const MessageEntry>& registry)
-@@ -388,11 +390,9 @@ class Subscription : public persistent_data::UserSubscription
+ const std::span<const MessageEntry>& registry)
+@@ -386,11 +388,9 @@ class Subscription : public persistent_data::UserSubscription
path, uriProto);
}
@@ -217,7 +218,7 @@ index 3f398d7..dd833ce 100644
~Subscription() = default;
-@@ -417,7 +417,7 @@ class Subscription : public persistent_data::UserSubscription
+@@ -404,7 +404,7 @@ class Subscription : public persistent_data::UserSubscription
if (sseConn != nullptr)
{
@@ -226,7 +227,7 @@ index 3f398d7..dd833ce 100644
}
}
-@@ -508,6 +508,7 @@ class Subscription : public persistent_data::UserSubscription
+@@ -495,6 +495,7 @@ class Subscription : public persistent_data::UserSubscription
this->sendEvent(
msg.dump(2, ' ', true, nlohmann::json::error_handler_t::replace));
@@ -234,7 +235,7 @@ index 3f398d7..dd833ce 100644
}
#endif
-@@ -578,14 +579,39 @@ class Subscription : public persistent_data::UserSubscription
+@@ -557,14 +558,39 @@ class Subscription : public persistent_data::UserSubscription
return eventSeqNum;
}
@@ -275,16 +276,16 @@ index 3f398d7..dd833ce 100644
};
class EventServiceManager
-@@ -942,6 +968,8 @@ class EventServiceManager
- subValue->updateRetryConfig(retryAttempts, retryTimeoutInterval);
+@@ -922,6 +948,8 @@ class EventServiceManager
subValue->updateRetryPolicy();
+ subValue->updatehttpHeaders();
+ // Set Subscription ID for back trace
+ subValue->setSubscriptionId(id);
return id;
}
-@@ -970,11 +998,40 @@ class EventServiceManager
+@@ -950,11 +978,40 @@ class EventServiceManager
}
}
@@ -327,10 +328,10 @@ index 3f398d7..dd833ce 100644
std::vector<std::string> idList;
diff --git a/redfish-core/include/server_sent_events.hpp b/redfish-core/include/server_sent_events.hpp
deleted file mode 100644
-index 7613d7b..0000000
+index dd3cd36..0000000
--- a/redfish-core/include/server_sent_events.hpp
+++ /dev/null
-@@ -1,290 +0,0 @@
+@@ -1,289 +0,0 @@
-
-/*
-// Copyright (c) 2020 Intel Corporation
@@ -350,7 +351,6 @@ index 7613d7b..0000000
-#pragma once
-
-#include <boost/asio/strand.hpp>
--#include <boost/beast/core/span.hpp>
-#include <boost/beast/http/buffer_body.hpp>
-#include <boost/beast/http/message.hpp>
-#include <boost/beast/version.hpp>
@@ -622,10 +622,10 @@ index 7613d7b..0000000
-
-} // namespace crow
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
-index 8609862..249e594 100644
+index 91a041e..9ad2bbd 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
-@@ -37,8 +37,6 @@ static constexpr const std::array<const char*, 1> supportedResourceTypes = {
+@@ -40,8 +40,6 @@ static constexpr const std::array<const char*, 1> supportedResourceTypes = {
"Task"};
#endif
@@ -634,16 +634,16 @@ index 8609862..249e594 100644
inline void requestRoutesEventService(App& app)
{
BMCWEB_ROUTE(app, "/redfish/v1/EventService/")
-@@ -50,6 +48,8 @@ inline void requestRoutesEventService(App& app)
- {"@odata.type", "#EventService.v1_5_0.EventService"},
- {"Id", "EventService"},
- {"Name", "Event Service"},
-+ {"ServerSentEventUri",
-+ "/redfish/v1/EventService/Subscriptions/SSE"},
- {"Subscriptions",
- {{"@odata.id", "/redfish/v1/EventService/Subscriptions"}}},
- {"Actions",
-@@ -90,9 +90,7 @@ inline void requestRoutesEventService(App& app)
+@@ -54,6 +52,8 @@ inline void requestRoutesEventService(App& app)
+ {"@odata.type", "#EventService.v1_5_0.EventService"},
+ {"Id", "EventService"},
+ {"Name", "Event Service"},
++ {"ServerSentEventUri",
++ "/redfish/v1/EventService/Subscriptions/SSE"},
+ {"Subscriptions",
+ {{"@odata.id", "/redfish/v1/EventService/Subscriptions"}}},
+ {"Actions",
+@@ -92,9 +92,7 @@ inline void requestRoutesEventService(App& app)
.privileges(redfish::privileges::patchEventService)
.methods(boost::beast::http::verb::patch)(
[](const crow::Request& req,
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0006-Add-EventService-SSE-filter-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0006-Add-EventService-SSE-filter-support.patch
index 3914cc81a..05018a47d 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0006-Add-EventService-SSE-filter-support.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0006-Add-EventService-SSE-filter-support.patch
@@ -1,4 +1,4 @@
-From 769f0e20d0a7e786d7091ffb7ee57d35204dfa28 Mon Sep 17 00:00:00 2001
+From 64a9d1826b7b4a66750f7ecaaff7bcf7e0d23932 Mon Sep 17 00:00:00 2001
From: AppaRao Puli <apparao.puli@linux.intel.com>
Date: Wed, 17 Mar 2021 01:16:50 +0000
Subject: [PATCH] Add EventService SSE filter support
@@ -59,7 +59,7 @@ index 14daf00..fed7fec 100644
+ std::string queryFilters;
+ if (req.urlParams.size())
+ {
-+ boost::urls::url_view::params_type::iterator it =
++ boost::urls::query_params_view::iterator it =
+ req.urlParams.find("$filter");
+ if (it == req.urlParams.end())
+ {
@@ -155,14 +155,14 @@ index 14daf00..fed7fec 100644
+ // Check for Message ID in each of the selected Registry
+ for (const std::string& it : registryPrefix)
+ {
-+ const boost::beast::span<
++ const std::span<
+ const redfish::message_registries::MessageEntry>
+ registry =
+ redfish::message_registries::getRegistryFromPrefix(
+ it);
+
+ if (std::any_of(
-+ registry.cbegin(), registry.cend(),
++ registry.begin(), registry.end(),
+ [&id](
+ const redfish::message_registries::MessageEntry&
+ messageEntry) {
@@ -203,10 +203,10 @@ index 14daf00..fed7fec 100644
std::string id =
redfish::EventServiceManager::getInstance().addSubscription(subValue,
diff --git a/redfish-core/include/error_messages.hpp b/redfish-core/include/error_messages.hpp
-index 3d11cc4..90084e3 100644
+index 7f53fa4..9c688b4 100644
--- a/redfish-core/include/error_messages.hpp
+++ b/redfish-core/include/error_messages.hpp
-@@ -971,6 +971,15 @@ nlohmann::json mutualExclusiveProperties(const std::string& arg1,
+@@ -985,6 +985,15 @@ nlohmann::json mutualExclusiveProperties(const std::string& arg1,
void mutualExclusiveProperties(crow::Response& res, const std::string& arg1,
const std::string& arg2);
@@ -223,10 +223,10 @@ index 3d11cc4..90084e3 100644
} // namespace redfish
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index dd833ce..861f4cb 100644
+index 57a2ab8..aae9f02 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
-@@ -55,6 +55,11 @@ static constexpr const char* eventServiceFile =
+@@ -57,6 +57,11 @@ static constexpr const char* eventServiceFile =
static constexpr const uint8_t maxNoOfSubscriptions = 20;
static constexpr const uint8_t maxNoOfSSESubscriptions = 10;
@@ -239,10 +239,10 @@ index dd833ce..861f4cb 100644
static std::optional<boost::asio::posix::stream_descriptor> inotifyConn;
static constexpr const char* redfishEventLogDir = "/var/log";
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
-index 249e594..6f01707 100644
+index 9ad2bbd..99c3bfd 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
-@@ -21,11 +21,6 @@
+@@ -24,11 +24,6 @@
namespace redfish
{
@@ -255,10 +255,10 @@ index 249e594..6f01707 100644
"TerminateAfterRetries", "SuspendRetries", "RetryForever"};
diff --git a/redfish-core/src/error_messages.cpp b/redfish-core/src/error_messages.cpp
-index 9c28e8f..2394398 100644
+index 2087a67..ecb3721 100644
--- a/redfish-core/src/error_messages.cpp
+++ b/redfish-core/src/error_messages.cpp
-@@ -2173,6 +2173,32 @@ void mutualExclusiveProperties(crow::Response& res, const std::string& arg1,
+@@ -2203,6 +2203,32 @@ void mutualExclusiveProperties(crow::Response& res, const std::string& arg1,
addMessageToErrorJson(res.jsonValue, mutualExclusiveProperties(arg1, arg2));
}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0007-EventService-Log-events-for-subscription-actions.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0007-EventService-Log-events-for-subscription-actions.patch
index 3be65ee2a..7cad022f3 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0007-EventService-Log-events-for-subscription-actions.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0007-EventService-Log-events-for-subscription-actions.patch
@@ -1,4 +1,4 @@
-From b8eb53886106e44e3668857b13f8642d2ad3cfbf Mon Sep 17 00:00:00 2001
+From b5020756ae3fbff6283c293c74b779d656429f3a Mon Sep 17 00:00:00 2001
From: AppaRao Puli <apparao.puli@linux.intel.com>
Date: Fri, 27 Aug 2021 16:02:01 +0000
Subject: [PATCH] EventService: Log events for subscription actions
@@ -21,13 +21,14 @@ Tested:
Change-Id: I3745fa6357bd215379781a9818d9acc02a853d79
Signed-off-by: AppaRao Puli <apparao.puli@intel.com>
Signed-off-by: Ayushi Smriti <smriti.ayushi@intel.com>
+Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
---
.../include/event_service_manager.hpp | 35 ++++++++++++++++---
redfish-core/lib/event_service.hpp | 2 +-
2 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index c3e7f61..e9bdbfa 100644
+index aae9f02..69db652 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -21,6 +21,7 @@
@@ -38,7 +39,7 @@ index c3e7f61..e9bdbfa 100644
#include <boost/asio/io_context.hpp>
#include <boost/beast/core/span.hpp>
-@@ -788,7 +789,7 @@ class EventServiceManager
+@@ -780,7 +781,7 @@ class EventServiceManager
}
}
@@ -47,7 +48,7 @@ index c3e7f61..e9bdbfa 100644
{
persistent_data::EventServiceStore::getInstance()
.eventServiceConfig.enabled = serviceEnabled;
-@@ -835,7 +836,7 @@ class EventServiceManager
+@@ -827,7 +828,7 @@ class EventServiceManager
if (updateConfig)
{
@@ -56,7 +57,7 @@ index c3e7f61..e9bdbfa 100644
}
if (updateRetryCfg)
-@@ -947,7 +948,7 @@ class EventServiceManager
+@@ -939,7 +940,7 @@ class EventServiceManager
if (updateFile)
{
@@ -65,7 +66,7 @@ index c3e7f61..e9bdbfa 100644
}
#ifndef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES
-@@ -962,6 +963,13 @@ class EventServiceManager
+@@ -955,6 +956,13 @@ class EventServiceManager
// Set Subscription ID for back trace
subValue->setSubscriptionId(id);
@@ -79,7 +80,7 @@ index c3e7f61..e9bdbfa 100644
return id;
}
-@@ -986,7 +994,14 @@ class EventServiceManager
+@@ -979,7 +987,14 @@ class EventServiceManager
persistent_data::EventServiceStore::getInstance()
.subscriptionsConfigMap.erase(obj2);
updateNoOfSubscribersCount();
@@ -95,7 +96,7 @@ index c3e7f61..e9bdbfa 100644
}
}
-@@ -1008,6 +1023,18 @@ class EventServiceManager
+@@ -1001,6 +1016,18 @@ class EventServiceManager
}
}
@@ -115,10 +116,10 @@ index c3e7f61..e9bdbfa 100644
{
return subscriptionsMap.size();
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
-index 9def549..6a8421f 100644
+index 99c3bfd..15e45dc 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
-@@ -617,7 +617,7 @@ inline void requestRoutesEventDestination(App& app)
+@@ -624,7 +624,7 @@ inline void requestRoutesEventDestination(App& app)
subValue->updateRetryPolicy();
}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0008-Add-checks-on-Event-Subscription-input-parameters.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0008-Add-checks-on-Event-Subscription-input-parameters.patch
index 84ceb4ba8..a46708ee5 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0008-Add-checks-on-Event-Subscription-input-parameters.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0008-Add-checks-on-Event-Subscription-input-parameters.patch
@@ -1,4 +1,4 @@
-From 05fdea2bb8e486b058d137a067ce1f5c885d2a96 Mon Sep 17 00:00:00 2001
+From ee758f1f97890f51707e72b3c6b08c8c46c41595 Mon Sep 17 00:00:00 2001
From: Nitin Wankhade <nitinx.arunrao.wankhade@intel.com>
Date: Mon, 28 Jun 2021 19:59:57 +0000
Subject: [PATCH] Add checks on Event Subscription input parameters
@@ -16,17 +16,18 @@ Tested
Change-Id: Iec2cd766c0e137b72706fc2da468d4fefd8fbaae
Signed-off-by: Nitin Wankhade <nitinx.arunrao.wankhade@intel.com>
+Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
---
- redfish-core/lib/event_service.hpp | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
+ redfish-core/lib/event_service.hpp | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
-index 52b01e5..f8a1671 100644
+index 15e45dc..27dec86 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
-@@ -19,6 +19,10 @@
- #include <app.hpp>
- #include <registries/privilege_registry.hpp>
+@@ -22,6 +22,10 @@
+
+ #include <span>
+#define MAX_CONTEXT_SIZE 256
+#define MAX_DESTINATION_SIZE 1024
@@ -35,7 +36,7 @@ index 52b01e5..f8a1671 100644
namespace redfish
{
static constexpr const std::array<const char*, 3> supportedRetryPolicies = {
-@@ -220,6 +224,12 @@ inline void requestRoutesEventDestinationCollection(App& app)
+@@ -223,6 +227,12 @@ inline void requestRoutesEventDestinationCollection(App& app)
return;
}
@@ -48,7 +49,7 @@ index 52b01e5..f8a1671 100644
if (regPrefixes && msgIds)
{
if (regPrefixes->size() && msgIds->size())
-@@ -330,11 +340,31 @@ inline void requestRoutesEventDestinationCollection(App& app)
+@@ -333,13 +343,29 @@ inline void requestRoutesEventDestinationCollection(App& app)
if (context)
{
@@ -64,22 +65,20 @@ index 52b01e5..f8a1671 100644
{
+ size_t cumulativeLen = 0;
+
-+ for (nlohmann::json& itr : *headers)
-+ {
-+ std::string hdr{itr.dump(
+ for (const nlohmann::json& headerChunk : *headers)
+ {
++ std::string hdr{headerChunk.dump(
+ -1, ' ', true, nlohmann::json::error_handler_t::replace)};
+ cumulativeLen += hdr.length();
-+
+ if (cumulativeLen > MAX_HEADER_SIZE)
+ {
+ messages::propertySizeExceeded(asyncResp->res,
+ "HttpHeaders");
+ return;
+ }
-+ }
- subValue->httpHeaders = *headers;
- }
-
+ for (const auto& item : headerChunk.items())
+ {
+ const std::string* value =
--
2.17.1
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0009-Restructure-Redifsh-EventLog-Transmit-code-flow.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0009-Restructure-Redifsh-EventLog-Transmit-code-flow.patch
index d1fe475f5..918560f4d 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0009-Restructure-Redifsh-EventLog-Transmit-code-flow.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0009-Restructure-Redifsh-EventLog-Transmit-code-flow.patch
@@ -1,5 +1,5 @@
-From 542505dff60e3921b00b51acae882e207d46f1a6 Mon Sep 17 00:00:00 2001
-From: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
+From d047619b7003882846b108f519b00cdd41265361 Mon Sep 17 00:00:00 2001
+From: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
Date: Wed, 14 Jul 2021 14:13:11 +0000
Subject: [PATCH] Restructure Redfish EventLog Transmit code flow
@@ -35,7 +35,7 @@ Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
1 file changed, 76 insertions(+), 32 deletions(-)
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index e9bdbfa..5c4de70 100644
+index 3208fb3..86c90fb 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -134,15 +134,10 @@ static const Message* formatMessage(const std::string_view& messageID)
@@ -55,7 +55,7 @@ index e9bdbfa..5c4de70 100644
// Get the entry timestamp
std::time_t curTs = 0;
-@@ -621,6 +616,7 @@ class EventServiceManager
+@@ -628,6 +623,7 @@ class EventServiceManager
}
std::string lastEventTStr;
@@ -63,7 +63,7 @@ index e9bdbfa..5c4de70 100644
size_t noOfEventLogSubscribers{0};
size_t noOfMetricReportSubscribers{0};
std::shared_ptr<sdbusplus::bus::match::match> matchTelemetryMonitor;
-@@ -1163,7 +1159,22 @@ class EventServiceManager
+@@ -1172,7 +1168,22 @@ class EventServiceManager
#ifndef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES
void cacheLastEventTimestamp()
{
@@ -87,7 +87,7 @@ index e9bdbfa..5c4de70 100644
std::ifstream logStream(redfishEventLogFile);
if (!logStream.good())
{
-@@ -1171,27 +1182,44 @@ class EventServiceManager
+@@ -1180,27 +1191,44 @@ class EventServiceManager
return;
}
std::string logEntry;
@@ -143,7 +143,7 @@ index e9bdbfa..5c4de70 100644
std::ifstream logStream(redfishEventLogFile);
if (!logStream.good())
{
-@@ -1201,27 +1229,21 @@ class EventServiceManager
+@@ -1210,27 +1238,21 @@ class EventServiceManager
std::vector<EventLogObjectsType> eventRecords;
@@ -178,7 +178,7 @@ index e9bdbfa..5c4de70 100644
std::string timestamp;
std::string messageID;
-@@ -1233,6 +1255,16 @@ class EventServiceManager
+@@ -1242,6 +1264,16 @@ class EventServiceManager
continue;
}
@@ -195,7 +195,7 @@ index e9bdbfa..5c4de70 100644
std::string registryName;
std::string messageKey;
event_log::getRegistryAndMessageKey(messageID, registryName,
-@@ -1242,11 +1274,23 @@ class EventServiceManager
+@@ -1251,11 +1283,23 @@ class EventServiceManager
continue;
}
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0010-Remove-Terminated-Event-Subscriptions.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0010-Remove-Terminated-Event-Subscriptions.patch
index 9af5a066b..f37bc241b 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0010-Remove-Terminated-Event-Subscriptions.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0010-Remove-Terminated-Event-Subscriptions.patch
@@ -1,5 +1,5 @@
-From f665ba085bb2310f008b7534f827fb401ad973c2 Mon Sep 17 00:00:00 2001
-From: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
+From 5d13aa636aba6c68ab5a74e589cac35f4e925129 Mon Sep 17 00:00:00 2001
+From: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
Date: Tue, 12 Oct 2021 08:19:51 +0000
Subject: [PATCH] Delete/Remove Terminated Event Subscription(s)
@@ -22,15 +22,15 @@ Tested:
Change-Id: If447acb2db74fb29a5d1cfe6194b77cda82bc8a1
Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
---
- http/http_client.hpp | 43 +++++++++++++++----
- .../include/event_service_manager.hpp | 36 ++++++++++++++++
- 2 files changed, 70 insertions(+), 9 deletions(-)
+ http/http_client.hpp | 48 +++++++++++++++----
+ .../include/event_service_manager.hpp | 36 ++++++++++++++
+ 2 files changed, 75 insertions(+), 9 deletions(-)
diff --git a/http/http_client.hpp b/http/http_client.hpp
-index 5e7ff47..54ae2c3 100644
+index 58b5402..745eeb6 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
-@@ -55,6 +55,8 @@ enum class ConnState
+@@ -56,6 +56,8 @@ enum class ConnState
closeInProgress,
closed,
suspended,
@@ -39,7 +39,7 @@ index 5e7ff47..54ae2c3 100644
terminated,
abortConnection,
retry
-@@ -288,7 +290,14 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -290,7 +292,14 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
}
void doClose()
{
@@ -55,7 +55,7 @@ index 5e7ff47..54ae2c3 100644
// Set the timeout on the tcp stream socket for the async operation
conn.expires_after(std::chrono::seconds(30));
-@@ -318,8 +327,11 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -320,8 +329,11 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
}
self->conn.close();
@@ -69,7 +69,7 @@ index 5e7ff47..54ae2c3 100644
{
self->state = ConnState::closed;
self->handleConnState();
-@@ -341,8 +353,11 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -343,8 +355,11 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
}
conn.close();
@@ -83,7 +83,7 @@ index 5e7ff47..54ae2c3 100644
{
state = ConnState::closed;
handleConnState();
-@@ -365,8 +380,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -367,8 +382,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
BMCWEB_LOG_DEBUG << "Retry policy: " << retryPolicyAction;
if (retryPolicyAction == "TerminateAfterRetries")
{
@@ -93,7 +93,7 @@ index 5e7ff47..54ae2c3 100644
}
if (retryPolicyAction == "SuspendRetries")
{
-@@ -423,6 +437,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -425,6 +439,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
case ConnState::sendInProgress:
case ConnState::recvInProgress:
case ConnState::closeInProgress:
@@ -101,7 +101,7 @@ index 5e7ff47..54ae2c3 100644
{
BMCWEB_LOG_DEBUG << "Async operation is already in progress";
break;
-@@ -439,7 +454,7 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -441,11 +456,16 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
break;
}
case ConnState::suspended:
@@ -110,8 +110,17 @@ index 5e7ff47..54ae2c3 100644
{
doClose();
break;
-@@ -506,7 +521,8 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
- }
+ }
++ case ConnState::terminated:
++ {
++ BMCWEB_LOG_DEBUG << "Connection Terminated";
++ break;
++ }
+ case ConnState::resolveFailed:
+ case ConnState::connectFailed:
+ case ConnState::handshakeFailed:
+@@ -505,7 +525,8 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+
void sendData(const std::string& data)
{
- if ((state == ConnState::suspended) || (state == ConnState::terminated))
@@ -120,7 +129,7 @@ index 5e7ff47..54ae2c3 100644
{
return;
}
-@@ -524,6 +540,15 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -523,6 +544,15 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
return;
}
@@ -133,14 +142,14 @@ index 5e7ff47..54ae2c3 100644
+ return false;
+ }
+
- void addHeaders(
- const std::vector<std::pair<std::string, std::string>>& httpHeaders)
+ void setHeaders(const boost::beast::http::fields& httpHeaders)
{
+ // Set custom headers
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index 6f60a31..363adb0 100644
+index 69db652..5d71c63 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
-@@ -591,6 +591,14 @@ class Subscription : public persistent_data::UserSubscription
+@@ -588,6 +588,14 @@ class Subscription : public persistent_data::UserSubscription
return std::nullopt;
}
@@ -155,7 +164,7 @@ index 6f60a31..363adb0 100644
private:
std::shared_ptr<crow::SseConnection> sseConn = nullptr;
uint64_t eventSeqNum;
-@@ -847,6 +855,22 @@ class EventServiceManager
+@@ -843,6 +851,22 @@ class EventServiceManager
}
}
@@ -178,7 +187,7 @@ index 6f60a31..363adb0 100644
void updateNoOfSubscribersCount()
{
size_t eventLogSubCount = 0;
-@@ -881,6 +905,7 @@ class EventServiceManager
+@@ -877,6 +901,7 @@ class EventServiceManager
std::shared_ptr<Subscription> getSubscription(const std::string& id)
{
@@ -186,7 +195,7 @@ index 6f60a31..363adb0 100644
auto obj = subscriptionsMap.find(id);
if (obj == subscriptionsMap.end())
{
-@@ -971,6 +996,7 @@ class EventServiceManager
+@@ -968,6 +993,7 @@ class EventServiceManager
bool isSubscriptionExist(const std::string& id)
{
@@ -194,7 +203,7 @@ index 6f60a31..363adb0 100644
auto obj = subscriptionsMap.find(id);
if (obj == subscriptionsMap.end())
{
-@@ -1033,6 +1059,7 @@ class EventServiceManager
+@@ -1030,6 +1056,7 @@ class EventServiceManager
size_t getNumberOfSubscriptions()
{
@@ -202,7 +211,7 @@ index 6f60a31..363adb0 100644
return subscriptionsMap.size();
}
-@@ -1049,6 +1076,7 @@ class EventServiceManager
+@@ -1046,6 +1073,7 @@ class EventServiceManager
std::vector<std::string> getAllIDs()
{
@@ -210,7 +219,7 @@ index 6f60a31..363adb0 100644
std::vector<std::string> idList;
for (const auto& it : subscriptionsMap)
{
-@@ -1059,6 +1087,7 @@ class EventServiceManager
+@@ -1056,6 +1084,7 @@ class EventServiceManager
bool isDestinationExist(const std::string& destUrl)
{
@@ -218,7 +227,7 @@ index 6f60a31..363adb0 100644
for (const auto& it : subscriptionsMap)
{
std::shared_ptr<Subscription> entry = it.second;
-@@ -1073,6 +1102,7 @@ class EventServiceManager
+@@ -1070,6 +1099,7 @@ class EventServiceManager
void sendTestEventLog()
{
@@ -226,7 +235,7 @@ index 6f60a31..363adb0 100644
for (const auto& it : this->subscriptionsMap)
{
std::shared_ptr<Subscription> entry = it.second;
-@@ -1100,6 +1130,8 @@ class EventServiceManager
+@@ -1097,6 +1127,8 @@ class EventServiceManager
}
eventRecord.push_back(eventMessage);
@@ -235,7 +244,7 @@ index 6f60a31..363adb0 100644
for (const auto& it : this->subscriptionsMap)
{
std::shared_ptr<Subscription> entry = it.second;
-@@ -1143,6 +1175,8 @@ class EventServiceManager
+@@ -1140,6 +1172,8 @@ class EventServiceManager
}
void sendBroadcastMsg(const std::string& broadcastMsg)
{
@@ -244,7 +253,7 @@ index 6f60a31..363adb0 100644
for (const auto& it : this->subscriptionsMap)
{
std::shared_ptr<Subscription> entry = it.second;
-@@ -1291,6 +1325,8 @@ class EventServiceManager
+@@ -1254,6 +1288,8 @@ class EventServiceManager
return;
}
@@ -254,5 +263,5 @@ index 6f60a31..363adb0 100644
{
std::shared_ptr<Subscription> entry = it.second;
--
-2.25.1
+2.17.1
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0011-Fix-bmcweb-crash-while-deleting-terminated-subscriptions.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0011-Fix-bmcweb-crash-while-deleting-terminated-subscriptions.patch
index 585f7bf09..87f0a4fd9 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0011-Fix-bmcweb-crash-while-deleting-terminated-subscriptions.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0011-Fix-bmcweb-crash-while-deleting-terminated-subscriptions.patch
@@ -1,4 +1,4 @@
-From 5b87bb61b58e92a8c5af37a7959347747409a65c Mon Sep 17 00:00:00 2001
+From ff562320d23e1c1e075689a636505f22eb4890d4 Mon Sep 17 00:00:00 2001
From: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
Date: Thu, 14 Oct 2021 02:56:11 +0530
Subject: [PATCH] Fix bmcweb crash while deleting terminated subscriptions
@@ -33,10 +33,10 @@ Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
2 files changed, 58 insertions(+), 12 deletions(-)
diff --git a/http/http_client.hpp b/http/http_client.hpp
-index 54ae2c3..162cb09 100644
+index 745eeb6..5575765 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
-@@ -367,6 +367,12 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -369,6 +369,12 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
void waitAndRetry()
{
@@ -49,7 +49,7 @@ index 54ae2c3..162cb09 100644
if (retryCount >= maxRetryAttempts)
{
BMCWEB_LOG_ERROR << "Maximum number of retries reached.";
-@@ -393,11 +399,6 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
+@@ -395,11 +401,6 @@ class HttpClient : public std::enable_shared_from_this<HttpClient>
return;
}
@@ -62,10 +62,10 @@ index 54ae2c3..162cb09 100644
retryCount++;
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
-index 363adb0..7af7a4d 100644
+index 5d71c63..f97909c 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
-@@ -857,18 +857,63 @@ class EventServiceManager
+@@ -853,18 +853,63 @@ class EventServiceManager
void deleteTerminatedSubcriptions()
{
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0012-Add-support-for-deleting-terminated-subscriptions.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0012-Add-support-for-deleting-terminated-subscriptions.patch
new file mode 100644
index 000000000..dd4827f27
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0012-Add-support-for-deleting-terminated-subscriptions.patch
@@ -0,0 +1,45 @@
+From e44cced4e8a50a6edf0ace0e00b5be4b61533190 Mon Sep 17 00:00:00 2001
+From: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
+Date: Tue, 7 Dec 2021 09:48:07 +0100
+Subject: [PATCH] Add support for deleting terminated subscriptions
+
+Added functionality to delete/remove event subscription(s) which are
+configured to Terminate after retries.
+
+Currently, when an Event is subscribed with Retry Policy as
+"TerminateAfterRetries", the state of the connection is set to
+"Terminated" after retrying, but the Subscription is not removed.
+This commit adds the functionality to detect terminated connection and
+remove the respective subscription.
+
+This commit adds this check for metric reports.
+
+Tested:
+ - Created a Subscription with
+ DeliveryRetryPolicy: "TerminateAfterRetries"
+ - Received Events successfully on Event listener
+ - Once the Event listener was stopped, the Subscription was
+ removed/deleted after retries.
+
+Change-Id: I3cb0af5bc24411cddcdb3d1d9de25e8e9144106c
+Signed-off-by: P Dheeraj Srujan Kumar <p.dheeraj.srujan.kumar@intel.com>
+---
+ redfish-core/include/event_service_manager.hpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
+index f97909c..881d2db 100644
+--- a/redfish-core/include/event_service_manager.hpp
++++ b/redfish-core/include/event_service_manager.hpp
+@@ -1514,6 +1514,8 @@ class EventServiceManager
+ return;
+ }
+
++ this->deleteTerminatedSubcriptions();
++
+ for (const auto& it :
+ EventServiceManager::getInstance().subscriptionsMap)
+ {
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0013-event-service-fix-added-Context-field-to-response.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0013-event-service-fix-added-Context-field-to-response.patch
new file mode 100644
index 000000000..019ccbe64
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/0013-event-service-fix-added-Context-field-to-response.patch
@@ -0,0 +1,33 @@
+From ce9b52791e76d73050f053f8fc607c6e1eb5d8c4 Mon Sep 17 00:00:00 2001
+From: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
+Date: Thu, 16 Dec 2021 10:46:55 +0100
+Subject: [PATCH] event service fix, added Context field to response
+
+Tested:
+ - Context field is present
+ - No regression detected
+
+Signed-off-by: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
+---
+ redfish-core/include/event_service_manager.hpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
+index 881d2db..1ba9f21 100644
+--- a/redfish-core/include/event_service_manager.hpp
++++ b/redfish-core/include/event_service_manager.hpp
+@@ -530,6 +530,11 @@ class Subscription : public persistent_data::UserSubscription
+ return;
+ }
+
++ if (!customText.empty())
++ {
++ msg["Context"] = customText;
++ }
++
+ this->sendEvent(
+ msg.dump(2, ' ', true, nlohmann::json::error_handler_t::replace));
+ }
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/README b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/README
index c09967456..22dae410d 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/README
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/eventservice/README
@@ -22,7 +22,7 @@ Upstream revision information:
file://eventservice/0007-EventService-Log-events-for-subscription-actions.patch
- Add checks on Event-Subscription input parameters (Downstream patch)
- file://eventservice//0008-Add-checks-on-Event-Subscription-input-parameters.patch
+ file://eventservice/0008-Add-checks-on-Event-Subscription-input-parameters.patch
- Restructure Redifsh EventLog Transmit code flow
https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/44449/3
@@ -31,4 +31,10 @@ Upstream revision information:
file://eventservice/0010-Remove-Terminated-Event-Subscriptions.patch
- Fix bmcweb crash while deleting terminated subscriptions (Downstream patch)
- file://eventservice/0011-Fix-bmcweb-crash-while-deleting-terminated-subscriptions.patch
+ file://eventservice/0011-Fix-bmcweb-crash-while-deleting-terminated-subscriptions.patch
+
+ - Add support for deleting terminated subscriptions
+ file://eventservice/0012-Add-support-for-deleting-terminated-subscriptions.patch
+
+ - event service fix added Context field to response
+ file://eventservice/0013-event-service-fix-added-Context-field-to-response.patch