diff options
author | Ed Tanous <edtanous@google.com> | 2022-02-09 22:47:27 +0300 |
---|---|---|
committer | Ed Tanous <ed@tanous.net> | 2022-04-19 03:04:38 +0300 |
commit | eb1c47d3d98a186164ffb90214037c6062da7937 (patch) | |
tree | 82d0d458523645cb0640822b67fa16d4c981e09c /redfish-core/include/event_service_manager.hpp | |
parent | 357bb8f8034d2c4017062c4479244186fe6ea6a4 (diff) | |
download | bmcweb-eb1c47d3d98a186164ffb90214037c6062da7937.tar.xz |
Remove regex uses in event service and consolidate
As the patch at
https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/50994 can attest,
parsing urls with a regex is error prone. We should avoid it where
possible, and we have boost::urls that implements a full, correct, and
unit tested parser.
Ideally, eventually this helper function would devolve into just the
parse_uri, and setting defaults portion, and we could rely on the
boost::urls::url class to pass into things like http_client.
As a side note, because boost url implements port as a proper type-safe
uint16, some interfaces that previously accepted port by std::string&
needed to be modified, and is included in this patch.
Also, once moved, the branch on the ifdef for HTTP push support was
failing a clang-tidy validation. This is a known limitation of using
ifdefs for our code, and something we've solved with the header file, so
move the http push enabler to the header file.
Also note that given this reorganization, two EXPECT statements are
added to the unit tests for user input behaviors that the old code
previously did not handle properly.
Tested: Unit tests passing
Ran Redfish-Event-Listener, saw subscription create properly:
Subcription is successful for https://192.168.7.2, /redfish/v1/EventService/Subscriptions/2197426973
Signed-off-by: Ed Tanous <edtanous@google.com>
Change-Id: Ia4127c6cbcde6002fe8a50348792024d1d615e8f
Diffstat (limited to 'redfish-core/include/event_service_manager.hpp')
-rw-r--r-- | redfish-core/include/event_service_manager.hpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp index 2c1ebfb768..bc5af85060 100644 --- a/redfish-core/include/event_service_manager.hpp +++ b/redfish-core/include/event_service_manager.hpp @@ -27,6 +27,7 @@ #include <dbus_utility.hpp> #include <error_messages.hpp> #include <event_service_store.hpp> +#include <http/utility.hpp> #include <http_client.hpp> #include <persistent_data.hpp> #include <random.hpp> @@ -364,7 +365,7 @@ class Subscription : public persistent_data::UserSubscription Subscription(Subscription&&) = delete; Subscription& operator=(Subscription&&) = delete; - Subscription(const std::string& inHost, const std::string& inPort, + Subscription(const std::string& inHost, uint16_t inPort, const std::string& inPath, const std::string& inUriProto) : eventSeqNum(1), host(inHost), port(inPort), path(inPath), uriProto(inUriProto) @@ -557,7 +558,7 @@ class Subscription : public persistent_data::UserSubscription private: uint64_t eventSeqNum; std::string host; - std::string port; + uint16_t port = 0; std::string path; std::string uriProto; std::shared_ptr<crow::HttpClient> conn = nullptr; @@ -619,7 +620,7 @@ class EventServiceManager std::string host; std::string urlProto; - std::string port; + uint16_t port = 0; std::string path; bool status = crow::utility::validateAndSplitUrl( newSub->destinationUrl, urlProto, host, port, path); |