[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