Fix SSE sockets

Redfish protocol validatator has SSE tests that expose some bad coding
practies in SSE handlers, namely, that there are several cases where we
don't check for nullptr.

Fix them.

This appears to have been introduced in:
https://gerrit.openbmc.org/c/openbmc/bmcweb/+/41319

Tested: Redfish service validator passes more tests.

Change-Id: Id980725f007d044b7d120dbe0f4b625865cab6ba
Signed-off-by: Ed Tanous <ed@tanous.net>
diff --git a/http/routing/sserule.hpp b/http/routing/sserule.hpp
index 1a422a8..c0a4e50 100644
--- a/http/routing/sserule.hpp
+++ b/http/routing/sserule.hpp
@@ -31,7 +31,7 @@
     }
 
 #ifndef BMCWEB_ENABLE_SSL
-    void handleUpgrade(const Request& req,
+    void handleUpgrade(const Request& /*req*/,
                        const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
                        boost::asio::ip::tcp::socket&& adaptor) override
     {
@@ -39,11 +39,11 @@
             crow::sse_socket::ConnectionImpl<boost::asio::ip::tcp::socket>>
             myConnection = std::make_shared<
                 crow::sse_socket::ConnectionImpl<boost::asio::ip::tcp::socket>>(
-                *req.ioService, std::move(adaptor), openHandler, closeHandler);
+                std::move(adaptor), openHandler, closeHandler);
         myConnection->start();
     }
 #else
-    void handleUpgrade(const Request& req,
+    void handleUpgrade(const Request& /*req*/,
                        const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
                        boost::beast::ssl_stream<boost::asio::ip::tcp::socket>&&
                            adaptor) override
@@ -52,7 +52,7 @@
             boost::beast::ssl_stream<boost::asio::ip::tcp::socket>>>
             myConnection = std::make_shared<crow::sse_socket::ConnectionImpl<
                 boost::beast::ssl_stream<boost::asio::ip::tcp::socket>>>(
-                *req.ioService, std::move(adaptor), openHandler, closeHandler);
+                std::move(adaptor), openHandler, closeHandler);
         myConnection->start();
     }
 #endif
diff --git a/http/server_sent_event.hpp b/http/server_sent_event.hpp
index a8bccdb..0e1cd62 100644
--- a/http/server_sent_event.hpp
+++ b/http/server_sent_event.hpp
@@ -18,7 +18,7 @@
 
 namespace sse_socket
 {
-struct Connection : std::enable_shared_from_this<Connection>
+struct Connection : public std::enable_shared_from_this<Connection>
 {
   public:
     Connection() = default;
@@ -38,11 +38,13 @@
 class ConnectionImpl : public Connection
 {
   public:
-    ConnectionImpl(boost::asio::io_context& ioIn, Adaptor&& adaptorIn,
+    ConnectionImpl(Adaptor&& adaptorIn,
                    std::function<void(Connection&)> openHandlerIn,
                    std::function<void(Connection&)> closeHandlerIn) :
         adaptor(std::move(adaptorIn)),
-        ioc(ioIn), timer(ioc), openHandler(std::move(openHandlerIn)),
+        timer(static_cast<boost::asio::io_context&>(
+            adaptor.get_executor().context())),
+        openHandler(std::move(openHandlerIn)),
         closeHandler(std::move(closeHandlerIn))
 
     {
@@ -276,7 +278,6 @@
     using BodyType = bmcweb::HttpBody;
     boost::beast::http::response<BodyType> res;
     std::optional<boost::beast::http::response_serializer<BodyType>> serializer;
-    boost::asio::io_context& ioc;
     boost::asio::steady_timer timer;
     bool doingWrite = false;
 
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index cac6b8b..679c4f6 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -532,6 +532,11 @@
     void updateRetryConfig(uint32_t retryAttempts,
                            uint32_t retryTimeoutInterval)
     {
+        if (policy == nullptr)
+        {
+            BMCWEB_LOG_DEBUG("Retry policy was nullptr, ignoring set");
+            return;
+        }
         policy->maxRetryAttempts = retryAttempts;
         policy->retryIntervalSecs = std::chrono::seconds(retryTimeoutInterval);
     }
diff --git a/test/http/server_sent_event_test.cpp b/test/http/server_sent_event_test.cpp
index 3e740cb..7400779 100644
--- a/test/http/server_sent_event_test.cpp
+++ b/test/http/server_sent_event_test.cpp
@@ -34,7 +34,7 @@
 
     std::shared_ptr<ConnectionImpl<boost::beast::test::stream>> conn =
         std::make_shared<ConnectionImpl<boost::beast::test::stream>>(
-            io, std::move(stream), openHandler, closeHandler);
+            std::move(stream), openHandler, closeHandler);
     conn->start();
     // Connect
     {