aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_spanningtree/link.h1
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp2
-rw-r--r--src/modules/m_spanningtree/utils.cpp8
3 files changed, 10 insertions, 1 deletions
diff --git a/src/modules/m_spanningtree/link.h b/src/modules/m_spanningtree/link.h
index 49e86bf3e..4f15f829d 100644
--- a/src/modules/m_spanningtree/link.h
+++ b/src/modules/m_spanningtree/link.h
@@ -42,6 +42,7 @@ public:
unsigned long Timeout;
std::string Bind;
bool Hidden;
+ int Protocol = 0;
Link(const std::shared_ptr<ConfigTag>& Tag)
: tag(Tag)
{
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index 37de1adc8..2da154642 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -66,7 +66,7 @@ TreeSocket::TreeSocket(const std::shared_ptr<Link>& link, const std::shared_ptr<
}
}
- DoConnect(dest, bind, link->Timeout);
+ DoConnect(dest, bind, link->Timeout, link->Protocol);
Utils->timeoutlist[this] = std::pair<std::string, unsigned int>(linkID, link->Timeout);
SendCapabilities(1);
}
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index f05c587f6..42a331ab6 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -263,6 +263,14 @@ void SpanningTreeUtilities::ReadConfiguration()
{
L->IPAddr = tag->getString("ipaddr");
L->Port = static_cast<in_port_t>(tag->getUInt("port", 0, 0, 65535));
+ if (tag->getBool("sctp"))
+ {
+#ifdef IPPROTO_SCTP
+ L->Protocol = IPPROTO_SCTP;
+#else
+ throw ModuleException((Module*)Creator, "Unable to use SCTP listener as this platform does not support SCTP!");
+#endif
+ }
}
else
{