From c332509c151497d5e18c7404224fe7e6f12eca62 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Tue, 21 Jul 2020 19:42:09 +0300
Subject: [PATCH] Some uri and stream fixes

---
 components/common/cpp/include/ftl/uri.hpp | 9 ++++++---
 components/streams/src/feed.cpp           | 5 +++--
 components/streams/src/netstream.cpp      | 1 +
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/components/common/cpp/include/ftl/uri.hpp b/components/common/cpp/include/ftl/uri.hpp
index 7f549f66a..65ac79a97 100644
--- a/components/common/cpp/include/ftl/uri.hpp
+++ b/components/common/cpp/include/ftl/uri.hpp
@@ -62,7 +62,8 @@ namespace ftl {
 
 		template <typename T>
 		T getAttribute(const std::string &key) {
-			return T(m_qmap[key]);
+			auto i = m_qmap.find(key);
+			return (i != m_qmap.end()) ? T(i->second) : T();
 		}
 
 		std::string to_string() const;
@@ -89,12 +90,14 @@ namespace ftl {
 
 	template <>
 	inline int URI::getAttribute<int>(const std::string &key) {
-		return std::stoi(m_qmap[key]);
+		auto i = m_qmap.find(key);
+		return (i != m_qmap.end()) ? std::stoi(i->second) : 0;
 	}
 
 	template <>
 	inline std::string URI::getAttribute<std::string>(const std::string &key) {
-		return m_qmap[key];
+		auto i = m_qmap.find(key);
+		return (i != m_qmap.end()) ? i->second : "";
 	}
 }
 
diff --git a/components/streams/src/feed.cpp b/components/streams/src/feed.cpp
index e2215e946..b74385fe9 100644
--- a/components/streams/src/feed.cpp
+++ b/components/streams/src/feed.cpp
@@ -396,8 +396,9 @@ ftl::operators::Graph* Feed::_addPipeline(uint32_t fsid) {
 }
 
 void Feed::_createPipeline(uint32_t fsid) {
-	// FIXME: Must not recreate if already exists
-	
+	// Don't recreate if already exists
+	if (pre_pipelines_.count(fsid)) return;
+
 	LOG(INFO) << "Creating pipeline";
 	auto *p = _addPipeline(fsid);
 
diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp
index fba498e1b..fe9b7f99f 100644
--- a/components/streams/src/netstream.cpp
+++ b/components/streams/src/netstream.cpp
@@ -252,6 +252,7 @@ bool Net::begin() {
 			set("name", std::string(hostname));
 		}
 
+		active_ = true;
 		net_->broadcast("add_stream", uri_);
 
 		return true;
-- 
GitLab