diff --git a/Greenshot/Helpers/UpdateHelper.cs b/Greenshot/Helpers/UpdateHelper.cs index 6c8d2b178..3623c6c87 100644 --- a/Greenshot/Helpers/UpdateHelper.cs +++ b/Greenshot/Helpers/UpdateHelper.cs @@ -60,6 +60,10 @@ namespace Greenshot.Experimental { return false; } LOG.DebugFormat("Update check is due, last check was {0} check needs to be made after {1} (which is one {2} later)", conf.LastUpdateCheck, checkTime, conf.UpdateCheckInterval); + if (!SourceForgeHelper.isRSSModifiedAfter(conf.LastUpdateCheck)) { + LOG.DebugFormat("RSS feed has not been updated since after {0}", conf.LastUpdateCheck); + return false; + } } } return true; diff --git a/Greenshot/releases/additional_files/readme.txt.template b/Greenshot/releases/additional_files/readme.txt.template index 471a5bc84..d1a91f9a3 100644 --- a/Greenshot/releases/additional_files/readme.txt.template +++ b/Greenshot/releases/additional_files/readme.txt.template @@ -7,6 +7,16 @@ CHANGE LOG: @DETAILVERSION@ +Features: + +Changes: + +Bugs Resolved: + + + +1.2.2.43-380f581 RC2 + Features: * Added the possibility to select the region to capture by using the keyboard, use the cursor keys to move the cursor (ctrl-key speeds up the movement) and the enter key to mark the start and ending. * FEATURE-757: Greenshot will now store the last used region in the greenshot.ini, which makes it also available after a restart. diff --git a/GreenshotPlugin/Core/CoreConfiguration.cs b/GreenshotPlugin/Core/CoreConfiguration.cs index 535c581f3..81a958758 100644 --- a/GreenshotPlugin/Core/CoreConfiguration.cs +++ b/GreenshotPlugin/Core/CoreConfiguration.cs @@ -410,8 +410,12 @@ namespace GreenshotPlugin.Core { // CheckForUnstable = true; if (string.IsNullOrEmpty(LastSaveWithVersion)) { - // Store version, this can be used later to fix settings after an update - LastSaveWithVersion = Assembly.GetEntryAssembly().GetName().Version.ToString(); + try { + // Store version, this can be used later to fix settings after an update + LastSaveWithVersion = Assembly.GetEntryAssembly().GetName().Version.ToString(); + } catch { + + } // Disable the AutoReduceColors as it causes issues with Mozzila applications and some others OutputFileAutoReduceColors = false; } diff --git a/GreenshotPlugin/Core/NetworkHelper.cs b/GreenshotPlugin/Core/NetworkHelper.cs index 8599e66d3..101ca3582 100644 --- a/GreenshotPlugin/Core/NetworkHelper.cs +++ b/GreenshotPlugin/Core/NetworkHelper.cs @@ -336,6 +336,27 @@ namespace GreenshotPlugin.Core { return responseData; } + + /// + /// Get LastModified for a URI + /// + /// Uri + /// DateTime + public static DateTime GetLastModified(Uri uri) { + HttpWebRequest webRequest; + try { + webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest(uri); + webRequest.Method = "HEAD"; + HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); + LOG.DebugFormat("RSS feed was updated at {0}", webResponse.LastModified); + return webResponse.LastModified; + } catch (Exception wE) { + LOG.WarnFormat("Problem requesting HTTP - HEAD on uri {0}", uri); + LOG.Warn(wE.Message); + // Pretend it is old + return DateTime.MinValue; + } + } } /// diff --git a/GreenshotPlugin/Core/SourceForgeHelper.cs b/GreenshotPlugin/Core/SourceForgeHelper.cs index 49ca5041c..c3800d27e 100644 --- a/GreenshotPlugin/Core/SourceForgeHelper.cs +++ b/GreenshotPlugin/Core/SourceForgeHelper.cs @@ -98,6 +98,16 @@ namespace GreenshotPlugin.Core { private static ILog LOG = LogManager.GetLogger(typeof(SourceForgeHelper)); private const String RSSFEED = "http://getgreenshot.org/project-feed/"; + /// + /// This is using the HTTP HEAD Method to check if the RSS Feed is modified after the supplied date + /// + /// DateTime + /// true if the feed is newer + public static bool isRSSModifiedAfter(DateTime updateTime) { + DateTime lastModified = NetworkHelper.GetLastModified(new Uri(RSSFEED)); + return updateTime.CompareTo(lastModified) < 0; + } + /// /// Read the Greenshot RSS feed, so we can use this information to check for updates ///