This is an automated email from the git hooks/post-receive script. apo pushed a commit to branch master in repository springlobby.
commit 9d460a8a5b2e345d54a495d6dd65a8ee88504939 Author: Markus Koschany <[email protected]> Date: Sun May 15 00:32:50 2016 +0200 Imported Upstream version 0.247+dfsg --- ChangeLog | 8 ++++++++ VERSION | 2 +- springlobby_config.h | 2 +- .../lib/src/Downloader/Http/HttpDownloader.cpp | 23 +++++++++++----------- .../lib/src/Downloader/Rapid/RapidDownloader.cpp | 9 ++++++++- src/downloader/lib/src/Downloader/Rapid/Sdp.cpp | 6 ++++++ src/downloader/lib/src/pr-downloader.cpp | 17 +++++++++++++--- src/downloader/prdownloader.cpp | 7 +++++++ src/gui/hosting/addbotdialog.cpp | 3 +++ src/gui/iconscollection.cpp | 10 +++++++--- src/gui/iconscollection.h | 2 +- 11 files changed, 67 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ebc102..d8d5b49 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ ChangeLog of Springlobby +## 0.247 + - fix crash + - fix rapid tags downloaded twice + +## 0.246 + - fix can't download more than one engine per session + - delete .sdp when rapid download failed + ## 0.245 - fix crash on battle close - fix springsettings always greyed out diff --git a/VERSION b/VERSION index 184d488..b5c7415 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.245 +0.247 diff --git a/springlobby_config.h b/springlobby_config.h index 4f9bfb6..b3c893d 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.245" +#define VERSION "0.247" #endif /* SPRINGLOBBY_HEADERGUARD_CONFIG_H */ diff --git a/src/downloader/lib/src/Downloader/Http/HttpDownloader.cpp b/src/downloader/lib/src/Downloader/Http/HttpDownloader.cpp index 0b7d935..fdde2fc 100644 --- a/src/downloader/lib/src/Downloader/Http/HttpDownloader.cpp +++ b/src/downloader/lib/src/Downloader/Http/HttpDownloader.cpp @@ -183,6 +183,7 @@ bool CHttpDownloader::ParseResult(const std::string& name, const std::string& js } res.push_back(dl); } + LOG_DEBUG("Parsed %d results", res.size()); return true; } @@ -337,7 +338,7 @@ bool CHttpDownloader::setupDownload(DownloadData* piece) CURL* curle = piece->curlw->GetHandle(); piece->mirror=piece->download->getFastestMirror(); if (piece->mirror==NULL) { - LOG_ERROR("No mirror found"); + LOG_ERROR("No mirror found for %s", piece->download->name.c_str()); return false; } @@ -368,9 +369,11 @@ bool CHttpDownloader::setupDownload(DownloadData* piece) //this sets the header If-Modified-Since -> downloads only when remote file is newer than local file const long timestamp = piece->download->file->GetTimestamp(); - curl_easy_setopt(curle, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); - curl_easy_setopt(curle, CURLOPT_TIMEVALUE, timestamp ); - curl_easy_setopt(curle, CURLOPT_FILETIME, 1); + if ((timestamp >= 0) && (piece->download->hash == nullptr)) { //timestamp known + hash not known -> only dl when changed + curl_easy_setopt(curle, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); + curl_easy_setopt(curle, CURLOPT_TIMEVALUE, timestamp ); + curl_easy_setopt(curle, CURLOPT_FILETIME, 1); + } } return true; } @@ -525,15 +528,11 @@ bool CHttpDownloader::download(std::list<IDownload*>& download, int max_parallel DownloadData* dlData=new DownloadData(); dlData->download=dl; if (!setupDownload(dlData)) { //no piece found (all pieces already downloaded), skip - delete dlData; - if (dl->state!=IDownload::STATE_FINISHED) { - LOG_ERROR("no piece found"); - return false; - } - } else { - downloads.push_back(dlData); - curl_multi_add_handle(curlm, dlData->curlw->GetHandle()); + LOG_ERROR("Failed to setup download %d/%d", i, count); + continue; } + downloads.push_back(dlData); + curl_multi_add_handle(curlm, dlData->curlw->GetHandle()); } } if (downloads.empty()) { diff --git a/src/downloader/lib/src/Downloader/Rapid/RapidDownloader.cpp b/src/downloader/lib/src/Downloader/Rapid/RapidDownloader.cpp index 293d509..2deead1 100644 --- a/src/downloader/lib/src/Downloader/Rapid/RapidDownloader.cpp +++ b/src/downloader/lib/src/Downloader/Rapid/RapidDownloader.cpp @@ -13,6 +13,7 @@ #include <list> #include <zlib.h> #include <algorithm> //std::min +#include <set> #ifndef WIN32 #include <regex.h> @@ -72,9 +73,15 @@ bool CRapidDownloader::download_name(IDownload* download, int reccounter, std::s if (reccounter>10) return false; LOG_DEBUG("Using rapid to download %s", download->name.c_str()); + std::set<std::string> downloaded; + for (CSdp& sdp: sdps) { - if (!match_download_name(sdp.getName(), name.length() == 0 ? download->name : name )) + if (!match_download_name(sdp.getName(), name.empty() ? download->name : name )) + continue; + + if (downloaded.find(sdp.getMD5()) != downloaded.end()) //already downloaded, skip (i.e. stable entries are twice in versions.gz) continue; + downloaded.insert(sdp.getMD5()); LOG_DOWNLOAD(sdp.getName().c_str() ); if (!sdp.download(download)) { diff --git a/src/downloader/lib/src/Downloader/Rapid/Sdp.cpp b/src/downloader/lib/src/Downloader/Rapid/Sdp.cpp index 5469ef4..3dbf84d 100644 --- a/src/downloader/lib/src/Downloader/Rapid/Sdp.cpp +++ b/src/downloader/lib/src/Downloader/Rapid/Sdp.cpp @@ -113,6 +113,12 @@ bool CSdp::download(IDownload* download) } if (count>0) { downloaded = downloadStream(this->url+"/streamer.cgi?"+this->md5,files); + if (!downloaded) { + LOG_ERROR("Couldn't download files for %s", this->md5.c_str()); + fileSystem->removeFile(tmpFile); + fileSystem->removeFile(filename); + return false; + } LOG_DEBUG("Sucessfully downloaded %d files: %s %s",count,shortname.c_str(),name.c_str()); } else { LOG_DEBUG("Already downloaded: %s", shortname.c_str()); diff --git a/src/downloader/lib/src/pr-downloader.cpp b/src/downloader/lib/src/pr-downloader.cpp index 7f4cc60..8076145 100644 --- a/src/downloader/lib/src/pr-downloader.cpp +++ b/src/downloader/lib/src/pr-downloader.cpp @@ -43,10 +43,21 @@ DownloadEnum::Category getPlatformEngineCat() bool download_engine(std::list<IDownload*>& dllist) { - httpDownload->download(dllist); bool res = true; - for (const IDownload* dl: dllist) { - if (isEngineDownload(dl->cat) && !fileSystem->extractEngine(dl->name, dl->version)) { + std::list<IDownload*> enginedls; + + + for (IDownload* dl: dllist) { + if (isEngineDownload(dl->cat)) { + enginedls.push_back(dl); + } + } + if (enginedls.empty()) + return res; + + httpDownload->download(enginedls); + for (const IDownload* dl: enginedls) { + if (!fileSystem->extractEngine(dl->name, dl->version)) { LOG_ERROR("Failed to extract engine %s", dl->version.c_str()); res = false; } diff --git a/src/downloader/prdownloader.cpp b/src/downloader/prdownloader.cpp index ea469b1..dac51bd 100644 --- a/src/downloader/prdownloader.cpp +++ b/src/downloader/prdownloader.cpp @@ -85,6 +85,7 @@ public: const bool hasdlinfo = DownloadGetInfo(0, info); //In case if something gone wrong if (!hasdlinfo) { + wxLogWarning("Download has no downloadinfo!"); GlobalEventManager::Instance()->Send(GlobalEventManager::OnDownloadFailed); return; } @@ -323,5 +324,11 @@ void PrDownloader::UpdateApplication(const std::string& updateurl) bool PrDownloader::DownloadUrl(const std::string& httpurl, std::string& res) { + { + boost::mutex::scoped_lock lock(dlProgressMutex); + if (m_progress == nullptr) + m_progress = new PrDownloader::DownloadProgress(); + m_progress->name = httpurl; + } return CHttpDownloader::DownloadUrl(httpurl, res); } diff --git a/src/gui/hosting/addbotdialog.cpp b/src/gui/hosting/addbotdialog.cpp index bd38862..7b933d0 100644 --- a/src/gui/hosting/addbotdialog.cpp +++ b/src/gui/hosting/addbotdialog.cpp @@ -215,6 +215,9 @@ void AddBotDialog::OnClose(wxCommandEvent& /*event*/) void AddBotDialog::OnAddBot(wxCommandEvent& /*event*/) { + if (m_nick->GetValue().empty()) { + return; + } sett().SetLastAI(m_ai->GetStringSelection()); EndModal(wxID_OK); } diff --git a/src/gui/iconscollection.cpp b/src/gui/iconscollection.cpp index d997ded..4790fa0 100644 --- a/src/gui/iconscollection.cpp +++ b/src/gui/iconscollection.cpp @@ -228,10 +228,10 @@ wxBitmap& IconsCollection::GetColourBmp(const LSL::lslColor& colour) } } -wxBitmap& IconsCollection::GetFractionBmp(const std::string& gameName, int fractionId) +wxBitmap& IconsCollection::GetFractionBmp(const std::string& gameName, size_t fractionId) { - if (gameName.empty() || !LSL::usync().GameExists(gameName) || fractionId < 0) { + if (gameName.empty() || !LSL::usync().GameExists(gameName)) { wxLogWarning("SideIcon %d for game %s not found!", fractionId, gameName.c_str()); // game doesn't exist, dl needed?! return BMP_EMPTY; @@ -244,7 +244,11 @@ wxBitmap& IconsCollection::GetFractionBmp(const std::string& gameName, int fract wxLogWarning("IconsCollection::GetFractionBmp(): sides.empty()"); return BMP_EMPTY; } - ASSERT_LOGIC(fractionId < static_cast<int>(sides.size()), "LSL::usync().GetSides() < fractionID!"); + + if (fractionId >= sides.size()) { + wxLogWarning("Invalid side requested: %s:%d", gameName.c_str(), fractionId); + return BMP_EMPTY; + } std::string sideName; diff --git a/src/gui/iconscollection.h b/src/gui/iconscollection.h index 761e321..7b988ea 100644 --- a/src/gui/iconscollection.h +++ b/src/gui/iconscollection.h @@ -111,7 +111,7 @@ public: wxBitmap& GetFlagBmp(const wxString& country); wxBitmap& GetRankBmp(unsigned int rank, bool showLowest = true); wxBitmap& GetColourBmp(const LSL::lslColor& colour); - wxBitmap& GetFractionBmp(const std::string& modName, int fractionId); + wxBitmap& GetFractionBmp(const std::string& modName, size_t fractionId); wxBitmap& GetUserBattleStateBmp(const UserStatus& us); wxBitmap& GetUserListStateBmp(const UserStatus& us, bool chanop, bool inbroom); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/springlobby.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

