diff --git a/net/znc/Makefile b/net/znc/Makefile index 7836eee8c..64a7a4f86 100644 --- a/net/znc/Makefile +++ b/net/znc/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=znc -PKG_VERSION:=1.6.0 -PKG_RELEASE:=3 +PKG_VERSION:=1.6.1 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://znc.in/releases \ http://znc.in/releases/archive -PKG_MD5SUM:=674d8c1277752dcc627b96e33a63376e +PKG_MD5SUM:=8e29289e6229b6d2473de202170745ab PKG_MAINTAINER:=Jonas Gorski PKG_LICENSE:=Apache-2.0 diff --git a/net/znc/patches/001-fix-savebuff-timer-initialization.patch b/net/znc/patches/001-fix-savebuff-timer-initialization.patch deleted file mode 100644 index 5299ca859..000000000 --- a/net/znc/patches/001-fix-savebuff-timer-initialization.patch +++ /dev/null @@ -1,28 +0,0 @@ -From d6feb6f574933753371687ee42fa19d0b0d8d777 Mon Sep 17 00:00:00 2001 -From: Thomas Kriechbaumer -Date: Tue, 17 Feb 2015 10:08:30 +0000 -Subject: [PATCH] fix savebuff timer initialization - -closes #868 ---- - modules/savebuff.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/modules/savebuff.cpp -+++ b/modules/savebuff.cpp -@@ -93,13 +93,13 @@ public: - else - m_sPassword = CBlowfish::MD5(sArgs); - -+ AddTimer(new CSaveBuffJob(this, 60, 0, "SaveBuff", "Saves the current buffer to disk every 1 minute")); -+ - return( !m_bBootError ); - } - - virtual bool OnBoot() override - { -- AddTimer(new CSaveBuffJob(this, 60, 0, "SaveBuff", "Saves the current buffer to disk every 1 minute")); -- - CDir saveDir(GetSavePath()); - for (CFile* pFile : saveDir) { - CString sName; diff --git a/net/znc/patches/002-CThreadPool-Handle-spurious-wakeups.patch b/net/znc/patches/002-CThreadPool-Handle-spurious-wakeups.patch deleted file mode 100644 index 1377307a1..000000000 --- a/net/znc/patches/002-CThreadPool-Handle-spurious-wakeups.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2f4488c2a4f2d6b130ded560efa06680bfd8a185 Mon Sep 17 00:00:00 2001 -From: Uli Schlachter -Date: Sat, 14 Feb 2015 19:41:26 +0100 -Subject: [PATCH] ~CThreadPool(): Handle spurious wakeups - -From pthread_cond_wait()'s man page: - - When using condition variables there is always a boolean predicate involving - shared variables associated with each condition wait that is true if the - thread should proceed. Spurious wakeups from the pthread_cond_wait() or - pthread_cond_timedwait() functions may occur. Since the return from - pthread_cond_wait() or pthread_cond_timedwait() does not imply anything about - the value of this predicate, the predicate should be re-evaluated upon such - return. - -Fix ~CThreadPool() to account for this possibility. - -Signed-off-by: Uli Schlachter ---- - src/Threads.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/src/Threads.cpp -+++ b/src/Threads.cpp -@@ -87,7 +87,7 @@ CThreadPool::~CThreadPool() { - CMutexLocker guard(m_mutex); - m_done = true; - -- if (m_num_threads > 0) { -+ while (m_num_threads > 0) { - m_cond.broadcast(); - m_exit_cond.wait(m_mutex); - } diff --git a/net/znc/patches/003-Fix-CIRCNetwork-FindChans-and-FindQueries-to-be-case.patch b/net/znc/patches/003-Fix-CIRCNetwork-FindChans-and-FindQueries-to-be-case.patch deleted file mode 100644 index d5ad3df75..000000000 --- a/net/znc/patches/003-Fix-CIRCNetwork-FindChans-and-FindQueries-to-be-case.patch +++ /dev/null @@ -1,149 +0,0 @@ -From e10b53b87bb7ce87d1a31473e03a02ccafa78787 Mon Sep 17 00:00:00 2001 -From: J-P Nurmi -Date: Tue, 3 Feb 2015 10:11:47 +0100 -Subject: [PATCH] Fix CIRCNetwork::FindChans() and FindQueries() to be - case-insensitive - -The playback module failed to clear a buffer, because it tried to -clear "NickServ" whereas ZNC had internally stored it has "nickserv". ---- - Makefile.in | 2 +- - src/IRCNetwork.cpp | 6 ++-- - test/NetworkTest.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 101 insertions(+), 3 deletions(-) - create mode 100644 test/NetworkTest.cpp - ---- a/Makefile.in -+++ b/Makefile.in -@@ -48,7 +48,7 @@ LIB_SRCS := $(addprefix src/,$(LIB_SRCS - BIN_SRCS := src/main.cpp - LIB_OBJS := $(patsubst %cpp,%o,$(LIB_SRCS)) - BIN_OBJS := $(patsubst %cpp,%o,$(BIN_SRCS)) --TESTS := StringTest ConfigTest UtilsTest ThreadTest NickTest ClientTest -+TESTS := StringTest ConfigTest UtilsTest ThreadTest NickTest ClientTest NetworkTest - TESTS := $(addprefix test/,$(addsuffix .o,$(TESTS))) - CLEAN := znc src/*.o test/*.o core core.* .version_extra .depend modules/.depend unittest - DISTCLEAN := Makefile config.log config.status znc-buildmod \ ---- a/src/IRCNetwork.cpp -+++ b/src/IRCNetwork.cpp -@@ -787,8 +787,9 @@ CChan* CIRCNetwork::FindChan(CString sNa - std::vector CIRCNetwork::FindChans(const CString& sWild) const { - std::vector vChans; - vChans.reserve(m_vChans.size()); -+ const CString sLower = sWild.AsLower(); - for (std::vector::const_iterator it = m_vChans.begin(); it != m_vChans.end(); ++it) { -- if ((*it)->GetName().WildCmp(sWild)) -+ if ((*it)->GetName().AsLower().WildCmp(sLower)) - vChans.push_back(*it); - } - return vChans; -@@ -946,8 +947,9 @@ CQuery* CIRCNetwork::FindQuery(const CSt - std::vector CIRCNetwork::FindQueries(const CString& sWild) const { - std::vector vQueries; - vQueries.reserve(m_vQueries.size()); -+ const CString sLower = sWild.AsLower(); - for (std::vector::const_iterator it = m_vQueries.begin(); it != m_vQueries.end(); ++it) { -- if ((*it)->GetName().WildCmp(sWild)) -+ if ((*it)->GetName().AsLower().WildCmp(sLower)) - vQueries.push_back(*it); - } - return vQueries; ---- /dev/null -+++ b/test/NetworkTest.cpp -@@ -0,0 +1,96 @@ -+/* -+ * Copyright (C) 2004-2015 ZNC, see the NOTICE file for details. -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+#include -+#include -+#include -+#include -+ -+class NetworkTest : public ::testing::Test { -+protected: -+ void SetUp() { CZNC::CreateInstance(); } -+ void TearDown() { CZNC::DestroyInstance(); } -+}; -+ -+TEST_F(NetworkTest, FindChan) { -+ CUser user("user"); -+ CIRCNetwork network(&user, "network"); -+ -+ EXPECT_TRUE(network.AddChan("#foo", false)); -+ EXPECT_TRUE(network.AddChan("#Bar", false)); -+ EXPECT_TRUE(network.AddChan("#BAZ", false)); -+ -+ EXPECT_TRUE(network.FindChan("#foo")); -+ EXPECT_TRUE(network.FindChan("#Bar")); -+ EXPECT_TRUE(network.FindChan("#BAZ")); -+ -+ EXPECT_TRUE(network.FindChan("#Foo")); -+ EXPECT_TRUE(network.FindChan("#BAR")); -+ EXPECT_TRUE(network.FindChan("#baz")); -+ -+ EXPECT_FALSE(network.FindChan("#f")); -+ EXPECT_FALSE(network.FindChan("&foo")); -+ EXPECT_FALSE(network.FindChan("##foo")); -+} -+ -+TEST_F(NetworkTest, FindChans) { -+ CUser user("user"); -+ CIRCNetwork network(&user, "network"); -+ -+ EXPECT_TRUE(network.AddChan("#foo", false)); -+ EXPECT_TRUE(network.AddChan("#Bar", false)); -+ EXPECT_TRUE(network.AddChan("#BAZ", false)); -+ -+ EXPECT_EQ(network.FindChans("#f*").size(), 1); -+ EXPECT_EQ(network.FindChans("#b*").size(), 2); -+ EXPECT_EQ(network.FindChans("#?A*").size(), 2); -+ EXPECT_EQ(network.FindChans("*z").size(), 1); -+} -+ -+TEST_F(NetworkTest, FindQuery) { -+ CUser user("user"); -+ CIRCNetwork network(&user, "network"); -+ -+ EXPECT_TRUE(network.AddQuery("foo")); -+ EXPECT_TRUE(network.AddQuery("Bar")); -+ EXPECT_TRUE(network.AddQuery("BAZ")); -+ -+ EXPECT_TRUE(network.FindQuery("foo")); -+ EXPECT_TRUE(network.FindQuery("Bar")); -+ EXPECT_TRUE(network.FindQuery("BAZ")); -+ -+ EXPECT_TRUE(network.FindQuery("Foo")); -+ EXPECT_TRUE(network.FindQuery("BAR")); -+ EXPECT_TRUE(network.FindQuery("baz")); -+ -+ EXPECT_FALSE(network.FindQuery("f")); -+ EXPECT_FALSE(network.FindQuery("fo")); -+ EXPECT_FALSE(network.FindQuery("FF")); -+} -+ -+TEST_F(NetworkTest, FindQueries) { -+ CUser user("user"); -+ CIRCNetwork network(&user, "network"); -+ -+ EXPECT_TRUE(network.AddQuery("foo")); -+ EXPECT_TRUE(network.AddQuery("Bar")); -+ EXPECT_TRUE(network.AddQuery("BAZ")); -+ -+ EXPECT_EQ(network.FindQueries("f*").size(), 1); -+ EXPECT_EQ(network.FindQueries("b*").size(), 2); -+ EXPECT_EQ(network.FindQueries("?A*").size(), 2); -+ EXPECT_EQ(network.FindQueries("*z").size(), 1); -+} diff --git a/net/znc/patches/004-Fix-chansaver-loading.patch b/net/znc/patches/004-Fix-chansaver-loading.patch deleted file mode 100644 index b0f2690af..000000000 --- a/net/znc/patches/004-Fix-chansaver-loading.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 7e75018ba60a9f50ea9e936eb1b6eb6b44dbc668 Mon Sep 17 00:00:00 2001 -From: J-P Nurmi -Date: Sat, 28 Feb 2015 21:15:23 +0100 -Subject: [PATCH] Fix chansaver loading - -CModules::LoadModule() sets the module type _after_ construction. -The constructor cannot therefore do actions based on the module -type. Move loading to OnLoad(). ---- - modules/chansaver.cpp | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - ---- a/modules/chansaver.cpp -+++ b/modules/chansaver.cpp -@@ -21,6 +21,12 @@ - class CChanSaverMod : public CModule { - public: - MODCONSTRUCTOR(CChanSaverMod) { -+ } -+ -+ virtual ~CChanSaverMod() { -+ } -+ -+ bool OnLoad(const CString& sArgsi, CString& sMessage) override { - switch (GetType()) { - case CModInfo::GlobalModule: - LoadUsers(); -@@ -32,9 +38,7 @@ public: - LoadNetwork(GetNetwork()); - break; - } -- } -- -- virtual ~CChanSaverMod() { -+ return true; - } - - void LoadUsers() { diff --git a/net/znc/patches/005-Fix-rare-conflict-of-HTTP-Basic-auth-and-cookies.patch b/net/znc/patches/005-Fix-rare-conflict-of-HTTP-Basic-auth-and-cookies.patch deleted file mode 100644 index d635e78bb..000000000 --- a/net/znc/patches/005-Fix-rare-conflict-of-HTTP-Basic-auth-and-cookies.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 13c2dc126d8bb4c57273178fc455dab6f02e1efc Mon Sep 17 00:00:00 2001 -From: Alexey Sokolov -Date: Thu, 16 Apr 2015 01:21:57 +0100 -Subject: [PATCH] Fix rare conflict of HTTP-Basic auth and cookies. - -Fix #946 ---- - src/HTTPSock.cpp | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - ---- a/src/HTTPSock.cpp -+++ b/src/HTTPSock.cpp -@@ -122,7 +122,7 @@ void CHTTPSock::ReadLine(const CString& - sLine.Token(2).Base64Decode(sUnhashed); - m_sUser = sUnhashed.Token(0, false, ":"); - m_sPass = sUnhashed.Token(1, true, ":"); -- m_bLoggedIn = OnLogin(m_sUser, m_sPass, true); -+ // Postpone authorization attempt until end of headers, because cookies should be read before that, otherwise session id will be overwritten in GetSession() - } else if (sName.Equals("Content-Length:")) { - m_uPostLen = sLine.Token(1).ToULong(); - if (m_uPostLen > MAX_POST_SIZE) -@@ -170,6 +170,14 @@ void CHTTPSock::ReadLine(const CString& - } else if (sLine.empty()) { - m_bGotHeader = true; - -+ if (!m_sUser.empty()) { -+ m_bLoggedIn = OnLogin(m_sUser, m_sPass, true); -+ if (!m_bLoggedIn) { -+ // Error message already was sent -+ return; -+ } -+ } -+ - if (m_bPost) { - m_sPostData = GetInternalReadBuffer(); - CheckPost(); diff --git a/net/znc/patches/006-Fix-954-Startup-failure-when-simple_away-is-loaded-a.patch b/net/znc/patches/006-Fix-954-Startup-failure-when-simple_away-is-loaded-a.patch deleted file mode 100644 index ab0429357..000000000 --- a/net/znc/patches/006-Fix-954-Startup-failure-when-simple_away-is-loaded-a.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 703a244b9b8c1b4af02a6132c5c70a748d98e3f8 Mon Sep 17 00:00:00 2001 -From: J-P Nurmi -Date: Tue, 28 Apr 2015 10:00:55 +0200 -Subject: [PATCH] Fix #954: Startup failure when simple_away is loaded - after awaynick - ---- - src/User.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/src/User.cpp -+++ b/src/User.cpp -@@ -1101,6 +1101,11 @@ bool CUser::LoadModule(const CString& sM - CFile fNVFile = CFile(GetUserPath() + "/moddata/" + sModName + "/.registry"); - - for (vector::iterator it = m_vIRCNetworks.begin(); it != m_vIRCNetworks.end(); ++it) { -+ // Check whether the network already has this module loaded (#954) -+ if ((*it)->GetModules().FindModule(sModName)) { -+ continue; -+ } -+ - if (fNVFile.Exists()) { - CString sNetworkModPath = (*it)->GetNetworkPath() + "/moddata/" + sModName; - if (!CFile::Exists(sNetworkModPath)) { diff --git a/net/znc/patches/100-move_rootcheck_after_config.patch b/net/znc/patches/100-move_rootcheck_after_config.patch index 84ee6aa6f..6ef663038 100644 --- a/net/znc/patches/100-move_rootcheck_after_config.patch +++ b/net/znc/patches/100-move_rootcheck_after_config.patch @@ -9,7 +9,7 @@ Subject: [PATCH] Move the root check to after config parsing --- a/src/main.cpp +++ b/src/main.cpp -@@ -303,19 +303,6 @@ int main(int argc, char** argv) { +@@ -304,19 +304,6 @@ int main(int argc, char** argv) { CUtils::PrintStatus(true, ""); } @@ -29,7 +29,7 @@ Subject: [PATCH] Move the root check to after config parsing if (bMakeConf) { if (!pZNC->WriteNewConfig(sConfig)) { CZNC::DestroyInstance(); -@@ -337,6 +324,20 @@ int main(int argc, char** argv) { +@@ -338,6 +325,20 @@ int main(int argc, char** argv) { return 1; }