--- uc_ups/uc_ups.module	2009-11-18 15:55:13.000000000 -0500
+++ uc_ups/uc_ups.module	2010-07-09 15:57:01.000000000 -0400
@@ -803,7 +803,11 @@ function uc_ups_quote($products, $detail
   foreach ($packages as $key => $ship_packages) {
     $orig = (object)$addresses[$key];
     $orig->email = variable_get('uc_store_email', '');
-    foreach (array_keys(array_filter(variable_get('uc_ups_services', array()))) as $ups_service) {
+
+    // Construct an array containing only the services allowed by other modules
+    $module_services = module_invoke_all('ups_filter', $products, $details);
+  
+    foreach (array_keys($module_services['uc_product_quote']) as $ups_service) {
       $request = uc_ups_shipping_quote($ship_packages, $orig, $dest, $ups_service);
       $resp = drupal_http_request(variable_get('uc_ups_connection_address', 'https://wwwcie.ups.com/ups.app/xml/') .'Rate', array(), 'POST', $request);
       if (user_access('configure quotes') && variable_get('uc_quote_display_debug', FALSE)) {
@@ -851,7 +855,7 @@ function uc_ups_quote($products, $detail
       $quotes[$key]['option_label'] = theme('uc_ups_option_label', $method['ups']['quote']['accessorials'][$key]);
     }
   }
-
+  
   /**
    * Ugly hack to work around PHP bug, details here:
    *   http://bugs.php.net/bug.php?id=23220
