diff -ur globus_callout-0.7.orig/library/globus_callout.c globus_callout-0.7/library/globus_callout.c
--- globus_callout-0.7.orig/library/globus_callout.c	2009-05-09 23:08:13.000000000 +0200
+++ globus_callout-0.7/library/globus_callout.c	2009-05-13 07:06:42.000000000 +0200
@@ -649,6 +649,8 @@
     va_list                             ap;
     int                                 rc;
     char *                              dlerror;
+    char *                              flavor_start;
+    char *                              file;
     static char *                       _function_name_ =
         "globus_callout_handle_call_type";
     GLOBUS_I_CALLOUT_DEBUG_ENTER;
@@ -712,6 +714,22 @@
             
             if(*dlhandle == NULL)
             {
+                flavor_start = strrchr(current_datum->file, '_');
+                if (flavor_start) {
+                    file = strdup(current_datum->file);
+                    if(file == NULL)
+                        {
+                            GLOBUS_CALLOUT_MALLOC_ERROR(result);
+                            goto exit;
+                        }
+                    file[flavor_start - current_datum->file] = '\0';
+                    *dlhandle = lt_dlopenext(file);
+                    free(file);
+                }
+            }
+
+            if(*dlhandle == NULL)
+            {
                 GLOBUS_CALLOUT_ERROR_RESULT(
                     result,
                     GLOBUS_CALLOUT_ERROR_WITH_DL,
