[springlobby] 01/13: New upstream version 0.260+dfsg

Markus Koschany apo at moszumanska.debian.org
Sat Jan 6 00:20:25 UTC 2018


This is an automated email from the git hooks/post-receive script.

apo pushed a commit to branch master
in repository springlobby.

commit 835d11162fade35c02b15543896d57756cc71293
Author: Markus Koschany <apo at debian.org>
Date:   Wed Nov 1 12:00:55 2017 +0100

    New upstream version 0.260+dfsg
---
 ChangeLog                                          |  6 +++
 VERSION                                            |  2 +-
 springlobby_config.h                               |  2 +-
 src/CMakeLists.txt                                 |  7 +++
 src/battle.cpp                                     | 21 ++++----
 src/channel.cpp                                    |  5 --
 src/channel.h                                      |  1 -
 .../lib/src/lsl/lslunitsync/unitsync.cpp           |  2 +-
 src/gui/chatpanelmenu.cpp                          | 19 -------
 src/gui/chatpanelmenu.h                            |  1 -
 src/gui/hosting/battleroomtab.cpp                  |  8 ++-
 src/iserver.h                                      |  4 --
 src/springlobbyapp.cpp                             |  2 +-
 src/tasserver.cpp                                  | 63 +++++++++++++++-------
 src/tasserver.h                                    |  6 +--
 15 files changed, 81 insertions(+), 68 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 899712d..6709ba6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 ChangeLog of Springlobby
 
+## 0.260
+ - reimplement channel history
+ - check if synced before game start / prompt for download
+ - don't send plain text PING when tls-handshaking
+ - increase default log verbosity
+
 ## 0.259
  - fix #791: cannot select last entry in engine list
  - use more robust TLS handshake on connect (should solve issues when registering new username)
diff --git a/VERSION b/VERSION
index 5d2af92..5f30be6 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.259
+0.260
diff --git a/springlobby_config.h b/springlobby_config.h
index 7866f62..a6d46ae 100644
--- a/springlobby_config.h
+++ b/springlobby_config.h
@@ -6,6 +6,6 @@
 #undef VERSION
 
 /* the git tag / commit we build from */
-#define VERSION "0.259"
+#define VERSION "0.260"
 
 #endif	/* SPRINGLOBBY_HEADERGUARD_CONFIG_H */
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8f540af..38b8f7a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -89,6 +89,13 @@ message(STATUS "Using WX_LD_FLAGS: ${WX_LD_FLAGS}")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WX_CXX_FLAGS}")
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WX_C_FLAGS}")
 
+
+include(CheckIncludeFileCXX)
+CHECK_INCLUDE_FILE_CXX(wx/config.h HAS_WXGTKHEADERS)
+if (NOT HAS_WXGTKHEADERS)
+	message(FATAL_ERROR "Couldn't find wx/config.h, is wxgtk-dev installed?")
+endif()
+
 #----------------------------------------------------------------------------------------------------
 # openAL libs dependency check
 #----------------------------------------------------------------------------------------------------
diff --git a/src/battle.cpp b/src/battle.cpp
index e758c06..8e1594f 100644
--- a/src/battle.cpp
+++ b/src/battle.cpp
@@ -611,15 +611,18 @@ void Battle::StartHostedBattle()
 
 void Battle::StartSpring()
 {
-	if (UserExists(GetMe().GetNick()) && !GetMe().Status().in_game) {
-		GetMe().BattleStatus().ready = false;
-		SendMyBattleStatus();
-		// set m_generating_script, this will make the script.txt writer realize we're just clients even if using a relayhost
-		m_generating_script = true;
-		GetMe().Status().in_game = spring().Run(*this);
-		m_generating_script = false;
-		GetMe().SendMyUserStatus();
-	}
+	User& me = GetMe();
+	if (!UserExists(me.GetNick()))
+		return;
+	if (me.Status().in_game)
+		return;
+	me.BattleStatus().ready = false;
+	SendMyBattleStatus();
+	// set m_generating_script, this will make the script.txt writer realize we're just clients even if using a relayhost
+	m_generating_script = true;
+	me.Status().in_game = spring().Run(*this);
+	m_generating_script = false;
+	me.SendMyUserStatus();
 }
 
 void Battle::OnTimer(wxTimerEvent&)
diff --git a/src/channel.cpp b/src/channel.cpp
index 914a426..c47bc89 100644
--- a/src/channel.cpp
+++ b/src/channel.cpp
@@ -288,8 +288,3 @@ void Channel::SetPassword(const std::string& pw)
 	m_password = pw;
 }
 
-bool Channel::IsSubscribed()
-{
-	const LSL::StringSet subscriptions = m_serv.GetSubscriptions();
-	return (subscriptions.find(m_name) != subscriptions.end());
-}
diff --git a/src/channel.h b/src/channel.h
index b7aaadb..feb7c4b 100644
--- a/src/channel.h
+++ b/src/channel.h
@@ -56,7 +56,6 @@ public:
 
 	std::string GetPassword() const;
 	void SetPassword(const std::string& pw);
-	bool IsSubscribed(); //subscribed to channel history?
 
 private:
 	IServer& m_serv;
diff --git a/src/downloader/lib/src/lsl/lslunitsync/unitsync.cpp b/src/downloader/lib/src/lsl/lslunitsync/unitsync.cpp
index 2df9380..70b3919 100644
--- a/src/downloader/lib/src/lsl/lslunitsync/unitsync.cpp
+++ b/src/downloader/lib/src/lsl/lslunitsync/unitsync.cpp
@@ -575,9 +575,9 @@ StringVector Unitsync::GetUnitsList(const std::string& gamename)
 {
 	assert(!gamename.empty());
 	StringVector cache;
-	GetGameHash(gamename);
 	if (!GameExists(gamename))
 		return cache;
+	GetGameHash(gamename);
 	const std::string cachefile = GetUnitsCacheFilePath(gamename);
 	TRY_LOCK(cache)
 
diff --git a/src/gui/chatpanelmenu.cpp b/src/gui/chatpanelmenu.cpp
index fb2f2a3..c505471 100644
--- a/src/gui/chatpanelmenu.cpp
+++ b/src/gui/chatpanelmenu.cpp
@@ -52,11 +52,6 @@ wxMenu* ChatPanelMenu::GetMenu()
 	if (m_chatpanel->m_type == CPT_Channel) {
 		wxLogMessage(_T( "channel" ));
 
-		m_subscribe = new wxMenuItem(m_menu_all, CHAT_MENU_CH_SUBSCRIBE, _("Subscribe to this channel"), wxEmptyString, wxITEM_CHECK);
-		m_menu_all->Append(m_subscribe);
-		m_subscribe->Check(m_chatpanel->m_channel->IsSubscribed());
-
-
 		wxMenuItem* leaveitem = new wxMenuItem(m_menu_all, CHAT_MENU_CH_LEAVE, _("Leave"), wxEmptyString, wxITEM_NORMAL);
 		m_menu_all->Append(leaveitem);
 	}
@@ -722,17 +717,6 @@ void ChatPanelMenu::OnUserMenuCreateGroup(wxCommandEvent& /*unused*/)
 	}
 }
 
-void ChatPanelMenu::OnChannelSubscribe(wxCommandEvent& /*unused*/)
-{
-	const std::string chan = m_chatpanel->m_channel->GetName();
-	IServer& serv = m_chatpanel->m_channel->GetServer();
-	if (!m_chatpanel->m_channel->IsSubscribed()) {
-		serv.SendCmd("SUBSCRIBE", "chanName=" + chan);
-	} else {
-		serv.SendCmd("UNSUBSCRIBE", "chanName=" + chan);
-	}
-}
-
 void ChatPanelMenu::OnMenuItem(wxCommandEvent& event)
 {
 	if (event.GetId() == CHAT_MENU_SHOW_MUTELIST)
@@ -839,9 +823,6 @@ void ChatPanelMenu::OnMenuItem(wxCommandEvent& event)
 		OnUserMenuDeleteFromGroup(event);
 	else if (event.GetId() == wxID_COPY)
 		m_chatpanel->m_chatlog_text->OnCopy(event);
-	else if (event.GetId() == CHAT_MENU_CH_SUBSCRIBE)
-		OnChannelSubscribe(event);
-
 	else
 		OnUserMenuAddToGroup(event);
 }
diff --git a/src/gui/chatpanelmenu.h b/src/gui/chatpanelmenu.h
index ef823ef..d9c3f33 100644
--- a/src/gui/chatpanelmenu.h
+++ b/src/gui/chatpanelmenu.h
@@ -103,7 +103,6 @@ static const long CHAT_MENU_DISABLE_APPEND = wxNewId();
 
 static const long CHAT_MENU_CH_LEAVE = wxNewId();
 static const long CHAT_MENU_CH_DISPLAYJOIN = wxNewId();
-static const long CHAT_MENU_CH_SUBSCRIBE = wxNewId();
 
 static const long CHAT_MENU_CH_TOPIC = wxNewId();
 static const long CHAT_MENU_CH_INFO = wxNewId();
diff --git a/src/gui/hosting/battleroomtab.cpp b/src/gui/hosting/battleroomtab.cpp
index 7233ad1..fc2f802 100644
--- a/src/gui/hosting/battleroomtab.cpp
+++ b/src/gui/hosting/battleroomtab.cpp
@@ -614,7 +614,8 @@ void BattleRoomTab::OnPromote(wxCommandEvent& /*unused*/)
 
 void BattleRoomTab::OnStart(wxCommandEvent& /*unused*/)
 {
-	if (!m_battle)
+	slLogDebugFunc("");
+	if (m_battle == nullptr)
 		return;
 	if (m_battle->IsFounderMe()) {
 		m_battle->GetMe().BattleStatus().ready = true;
@@ -628,6 +629,11 @@ void BattleRoomTab::OnStart(wxCommandEvent& /*unused*/)
 
 		m_battle->StartHostedBattle();
 	} else {
+		if (ui().NeedsDownload(m_battle)) {
+			wxLogWarning("Cannot start, need to download first!");
+			return;
+		}
+
 		if (m_battle->GetFounder().Status().in_game) {
 			if (!ui().IsSpringRunning())
 				m_battle->StartSpring();
diff --git a/src/iserver.h b/src/iserver.h
index 1e3ddcb..acabca4 100644
--- a/src/iserver.h
+++ b/src/iserver.h
@@ -230,10 +230,6 @@ public:
 	{
 		return LSL::StringVector();
 	}
-	virtual LSL::StringSet GetSubscriptions()
-	{
-		return LSL::StringSet();
-	}
 
 	void Reset();
 	virtual void SendCmd(const std::string& /*command*/, const std::string& /*param*/){};
diff --git a/src/springlobbyapp.cpp b/src/springlobbyapp.cpp
index b6686af..831390e 100644
--- a/src/springlobbyapp.cpp
+++ b/src/springlobbyapp.cpp
@@ -76,7 +76,7 @@ END_EVENT_TABLE()
 SpringLobbyApp::SpringLobbyApp()
     : quit_called(false)
     , m_translationhelper(NULL)
-    , m_log_verbosity(4)
+    , m_log_verbosity(6)
     , m_log_console(true)
     , m_log_window_show(false)
     , m_crash_handle_disable(false)
diff --git a/src/tasserver.cpp b/src/tasserver.cpp
index 68b09f6..a6ebd59 100644
--- a/src/tasserver.cpp
+++ b/src/tasserver.cpp
@@ -33,6 +33,9 @@ lsl/networking/tasserver.cpp
 #include "utils/conversion.h"
 #include "utils/slconfig.h"
 #include "utils/version.h"
+
+//FIXME: unhard-code
+#include "downloader/lib/src/lib/jsoncpp/include/json/reader.h"
 #include <lslutils/misc.h>
 
 SLCONFIG("/Server/ExitMessage", "Using http://springlobby.info/", "Message which is send when leaving server");
@@ -274,7 +277,6 @@ void TASServer::Connect(const ServerLoginInfo& server)
 
 	m_serverinfo = server;
 	m_buffer.clear();
-	m_subscriptions.clear();
 	if (m_sock != NULL) {
 		Disconnect();
 	}
@@ -503,7 +505,7 @@ void TASServer::ExecuteCommand(const std::string& in)
 	}
 }
 
-
+/*
 static LSL::StringMap parseKeyValue(const std::string& str)
 {
 	const LSL::StringVector params = LSL::Util::StringTokenize(str, "\t");
@@ -518,7 +520,7 @@ static LSL::StringMap parseKeyValue(const std::string& str)
 	}
 	return result;
 }
-
+*/
 
 void TASServer::ExecuteCommand(const std::string& cmd, const std::string& inparams, int replyid)
 {
@@ -533,6 +535,7 @@ void TASServer::ExecuteCommand(const std::string& cmd, const std::string& inpara
 	if (cmd == "TASSERVER") {
 #ifdef SSL_SUPPORT
 		if (!m_sock->IsTLS() && sett().IsServerTLS(GetServerName()) ) {
+			Stop(); //don't send ping until TLS handshake is complete
 			SendCmd("STLS", "");
 		} else {
 #endif
@@ -552,6 +555,7 @@ void TASServer::ExecuteCommand(const std::string& cmd, const std::string& inpara
 	} else if (cmd == "OK") {
 		if (!m_sock->IsTLS() && sett().IsServerTLS(GetServerName()) ) {
 			m_sock->StartTLS(sett().GetServerFingerprint(GetServerName()));
+			Start(); //restart ping as server + client have startet TLS
 		}
 	} else if (cmd == "ACCEPTED") {
 		SetUsername(params);
@@ -618,7 +622,6 @@ void TASServer::ExecuteCommand(const std::string& cmd, const std::string& inpara
 		m_online = true;
 		if (UserExists("RelayHostManagerList"))
 			SayPrivate("RelayHostManagerList", "!lm");
-		SendCmd("LISTSUBSCRIPTIONS", "");
 		m_se->OnLoginInfoComplete();
 	} else if (cmd == "REMOVEUSER") {
 		nick = GetWordParam(params);
@@ -643,15 +646,16 @@ void TASServer::ExecuteCommand(const std::string& cmd, const std::string& inpara
 		HandlePong(replyid);
 	} else if (cmd == "JOIN") {
 		channel = GetWordParam(params);
+		int lastid = 0;
+		cfg().Read(wxString::Format("/Channels/%s/lastid", channel.c_str()), &lastid);
 		m_se->OnJoinChannelResult(true, channel, "");
-	} else if (cmd == "JOIN") {
-		channel = GetWordParam(params);
-		error = GetSentenceParam(params);
-		m_se->OnJoinChannelResult(false, channel, error);
+		SendCmd("GETCHANNELMESSAGES", stdprintf("%s %d", channel.c_str(), lastid));
 	} else if (cmd == "SAID") {
 		channel = GetWordParam(params);
 		nick = GetWordParam(params);
 		m_se->OnChannelSaid(channel, nick, params);
+	} else if (cmd == "JSON") {
+		ParseJson(inparams);
 	} else if (cmd == "JOINED") {
 		channel = GetWordParam(params);
 		nick = GetWordParam(params);
@@ -954,22 +958,43 @@ void TASServer::ExecuteCommand(const std::string& cmd, const std::string& inpara
 		m_se->OnConnected(m_serverinfo.description, "", true, m_supported_spring_version, m_server_lanmode);
 	} else if (cmd == "REGISTRATIONDENIED") {
 		m_se->RegistrationDenied(params);
-	} else if (cmd == "LISTSUBSCRIPTION") {
-		const LSL::StringMap keyvals = parseKeyValue(GetWordParam(params));
-		const std::string keyname = "chanName";
-		if (keyvals.find(keyname) != keyvals.end()) {
-			m_subscriptions.insert(keyvals.at(keyname));
-		}
-	} else if (cmd == "STARTLISTSUBSCRIPTION") {
-		m_subscriptions.clear();
-	} else if (cmd == "ENDLISTSUBSCRIPTION") {
-		//m_se->OnSubscriptons();
 	} else {
-		wxLogWarning(wxString::Format(_T("??? Cmd: %s params: %s"), TowxString(cmd).c_str(), params.c_str()));
+		wxLogWarning(wxString::Format("??? Cmd: %s params: %s" , cmd.c_str(), params.c_str()));
 		m_se->OnUnknownCommand(cmd, params);
 	}
 }
 
+void TASServer::ParseJson(const std::string& jsonstr)
+{
+	wxLogMessage("JSON %s", jsonstr.c_str());
+
+        Json::Value js; // will contains the root value after parsing.
+        Json::Reader reader;
+        const bool parsingSuccessful = reader.parse(jsonstr, js);
+	if (!parsingSuccessful) {
+		wxLogWarning("Invalid json: %s", jsonstr.c_str());
+		return;
+	}
+
+	if (!js.isObject()) {
+		wxLogWarning("Invalid json, object excepted: %s", jsonstr.c_str());
+		return;
+	}
+
+	if (!js["SAID"].isObject()) {
+		wxLogWarning("Invalid json, object excepted: %s", jsonstr.c_str());
+		return;
+	}
+
+	Json::Value said = js["SAID"];
+	cfg().Write(wxString::Format("/Channels/%s/lastid", said["chanName"].asString()), said["id"].asInt());
+	m_se->OnChannelSaid(said["chanName"].asString(), said["userName"].asString(), said["msg"].asString());
+
+	//TODO: store last id for channel
+	//said["time"].asInt64();
+	//said["id"].asUInt64();
+}
+
 
 void TASServer::RelayCmd(const std::string& command, const std::string& param)
 {
diff --git a/src/tasserver.h b/src/tasserver.h
index fe8dd52..c5e31f1 100644
--- a/src/tasserver.h
+++ b/src/tasserver.h
@@ -128,10 +128,6 @@ private:
 	{
 		return m_se;
 	}
-	LSL::StringSet GetSubscriptions() override
-	{
-		return m_subscriptions;
-	}
 	// TASServer specific functions
 	void ExecuteCommand(const std::string& cmd, const std::string& inparams, int replyid = -1);
 
@@ -173,6 +169,7 @@ private:
 	void RelayCmd(const std::string& command, const std::string& param = "") override;
 	void Notify() override;
 	bool IsCurrentBattle(int battle_id);
+	void ParseJson(const std::string& jsonstr);
 
 	//! @brief Struct used internally by the TASServer class to calculate ping roundtimes.
 	struct TASPingListItem
@@ -188,7 +185,6 @@ private:
 
 	double m_ser_ver;
 	LSL::StringVector m_relay_host_manager_list;
-	LSL::StringSet m_subscriptions;
 
 	std::string m_last_denied;
 	bool m_connected;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/springlobby.git



More information about the Pkg-games-commits mailing list