Index: htmlpurifier.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/htmlpurifier/htmlpurifier.install,v
retrieving revision 1.13
diff -u -p -r1.13 htmlpurifier.install
--- htmlpurifier.install	9 Jun 2010 17:07:14 -0000	1.13
+++ htmlpurifier.install	30 Jul 2010 09:20:24 -0000
@@ -96,8 +96,7 @@ function htmlpurifier_requirements($phas
   if ($phase=='runtime') {
     $current = variable_get('htmlpurifier_version_current', FALSE);
     if (!$current) {
-      htmlpurifier_cron();
-      $current = variable_get('htmlpurifier_version_current', FALSE);
+      $current = htmlpurifier_check_version();
     }
     $ours = variable_get('htmlpurifier_version_ours', FALSE);
     if (!$ours || version_compare($ours, $req_version, '<')) {
@@ -130,7 +129,18 @@ function htmlpurifier_requirements($phas
       }
     }
 
-    if (!$ours || version_compare($current, $ours, '>')) {
+    if (!$current) {
+      $requirements['htmlpurifier_check'] = array(
+        'title' => $t('HTML Purifier Library'),
+        'value' => $ours,
+        'description' => $t('Unable to check for the latest version of the
+        HTML Purifier library.  You will need to check manually at
+        <a href="http://htmlpurifier.org">htmlpurifier.org</a> to find out if
+        the version you are using is out of date.'),
+        'severity' => REQUIREMENT_WARNING,
+      );
+    }
+    elseif (!$ours || version_compare($current, $ours, '>')) {
       // Update our version number if it can't be found, or there's a
       // mismatch.  This won't do anything if _htmlpurifier_load() has
       // already been called.  An equivalent formulation would be
Index: htmlpurifier.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/htmlpurifier/htmlpurifier.module,v
retrieving revision 1.17
diff -u -p -r1.17 htmlpurifier.module
--- htmlpurifier.module	9 Jun 2010 17:07:14 -0000	1.17
+++ htmlpurifier.module	30 Jul 2010 09:20:24 -0000
@@ -32,16 +32,34 @@ function htmlpurifier_help($path, $arg) 
 
 /**
  * Implementation of hook_cron().
- * @note
- *    Checks for updates to the HTML Purifier library.
  */
 function htmlpurifier_cron() {
-  // Maybe this should be changed in the future:
-  $result  = drupal_http_request('http://htmlpurifier.org/live/VERSION');
-  $version = trim($result->data);
-  variable_set('htmlpurifier_version_current', $version);
+  // Force an attempt at checking for a new version; this is safe to do in
+  // hook_cron because a slow timeout will not degrade the user experience.
+  htmlpurifier_check_version(TRUE);
 }
 
+/**
+ * Checks for updates to the HTML Purifier library.
+ */
+function htmlpurifier_check_version($force = FALSE) {
+  if ($force || !variable_get('htmlpurifier_version_check_failed', FALSE)) {
+    // Maybe this should be changed in the future:
+    $result  = drupal_http_request('http://htmlpurifier.org/live/VERSION');
+    if ($result->code == 200) {
+      $version = trim($result->data);
+      variable_set('htmlpurifier_version_check_failed', FALSE);
+      variable_set('htmlpurifier_version_current', $version);
+      return $version;
+    }
+    else {
+      variable_set('htmlpurifier_version_check_failed', TRUE);
+      // Delete any previously known "latest" version so that people can be
+      // alerted if a problem appears on a previously working site.
+      variable_del('htmlpurifier_version_current');
+    }
+  }
+}
 
 /**
  * Implementation of hook_filter().
