Index: acquia_agent.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/acquia_connector/acquia_agent/acquia_agent.module,v
retrieving revision 1.26
diff -u -r1.26 acquia_agent.module
--- acquia_agent.module	11 Jan 2011 18:22:35 -0000	1.26
+++ acquia_agent.module	13 Jan 2011 15:31:16 -0000
@@ -117,9 +117,11 @@
  * This check also sends a heartbeat to the Acquia Network unless
  * $params['no_heartbeat'] == 1.
  */
-function acquia_agent_check_subscription($params = array()) {
+function acquia_agent_check_subscription($params = array(), $force_status_update = FALSE) {
   // Default return value is FALSE.
   $subscription = FALSE;
+
+  $was_active = acquia_agent_subscription_is_active();
   if (!acquia_agent_has_credentials()) {
     // If there is not an identifier or key, delete any old subscription data.
     variable_del('acquia_subscription_data');
@@ -144,7 +146,6 @@
         }
       }
     }
-    $old_status = acquia_agent_subscription_is_active();
     $data = acquia_agent_call('acquia.agent.subscription', $params);
     $subscription['timestamp'] = REQUEST_TIME;
     if ($errno = xmlrpc_errno()) {
@@ -152,27 +153,23 @@
         case SUBSCRIPTION_NOT_FOUND:
         case SUBSCRIPTION_EXPIRED:
           variable_del('acquia_subscription_data');
-          //notify everybody that the subscription status has changed
-          if ($old_status) {
-            module_invoke_all('acquia_subscription_status', FALSE);
-          }
           break;
       }
     }
     elseif (acquia_agent_valid_response($data)) {
       $subscription += $data['result']['body'];
       variable_set('acquia_subscription_data', $subscription);
-      // use: acquia_agent_settings('acquia_subscription_data');
-
-      // notify everybody that the subscription status has changed
-      if (!$old_status) {
-        module_invoke_all('acquia_subscription_status', TRUE);
-      }
     }
     else {
       watchdog('acquia agent', 'HMAC validation error: <pre>@data</pre>', array('@data' => print_r($data, TRUE)), WATCHDOG_ERROR);
     }
   }
+
+  // notify everybody that the subscription status has changed
+  if ($was_active != acquia_agent_subscription_is_active() || $force_status_update) {
+    module_invoke_all('acquia_subscription_status', acquia_agent_subscription_is_active() );  
+  }
+
   return $subscription;
 }
 
Index: acquia_agent.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/acquia_connector/acquia_agent/acquia_agent.pages.inc,v
retrieving revision 1.9
diff -u -r1.9 acquia_agent.pages.inc
--- acquia_agent.pages.inc	6 Jan 2011 15:33:35 -0000	1.9
+++ acquia_agent.pages.inc	7 Jan 2011 08:33:24 -0000
@@ -60,7 +60,7 @@
     drupal_set_message(t('The Acquia configuration options have been saved.'));
     // Check subscription and send a heartbeat to Acquia Network via XML-RPC.
     // Our status gets updated locally via the return data.
-    acquia_agent_check_subscription();
+    acquia_agent_check_subscription(array(), TRUE);
     cache_clear_all();
   }
   return $result;
@@ -605,7 +605,7 @@
   drupal_set_message(t('The Acquia configuration options have been saved.'));
   // Check subscription and send a heartbeat to Acquia Network via XML-RPC.
   // Our status gets updated locally via the return data.
-  $active = acquia_agent_check_subscription();
+  $active = acquia_agent_check_subscription(array(), TRUE);
   // Redirect to the path without the suffix.
   $form_state['redirect'] = 'admin/config/system/acquia-agent';
   cache_clear_all();

