5a6c13c718520069fb7f74c633ab7192aaf04231
braney
  Mon Oct 3 17:04:22 2022 -0700
default to using "public" if no curatedHubPrefix is set

diff --git src/hg/lib/hubConnect.c src/hg/lib/hubConnect.c
index 68e9e2e..791af27 100644
--- src/hg/lib/hubConnect.c
+++ src/hg/lib/hubConnect.c
@@ -960,73 +960,78 @@
                 // if our new database is an undecorated db, decorate it
                 if (*newDatabase && sameString(*newDatabase, name))
                     *newDatabase = cloneString(buffer);
                 }
 
             }
         }
     }
 
 hDisconnectCentral(&conn);
 return added;
 }
 
 char *dbOveride;  // communicate with the web front end if we load a hub to support db cgivar. */
 
-static char * lookForCuratedHubs(struct cart *cart, char *db,  char *curatedHubPrefix)
+static int lookForCuratedHubs(struct cart *cart, char *db,  char *curatedHubPrefix)
 /* Check to see if db is a curated hub which will require the hub to be attached. 
  * The variable curatedHubPrefix has the release to use (alpha, beta, public, or a user name ) */
 {
 struct sqlConnection *conn = hConnectCentral();
 char query[4096];
 sqlSafef(query, sizeof query, "SELECT nibPath from %s where name = '%s' AND nibPath like '%s%%'",
           dbDbTable(), db, hubCuratedPrefix);
 
 char *dir = sqlQuickString(conn, query);
 if (!isEmpty(dir))
     {
     char *path = &dir[sizeof hubCuratedPrefix - 1];
     char url[4096];
     safef(url, sizeof url, "%s/%s/hub.txt", path, curatedHubPrefix);
 
     struct hubConnectStatus *status = getAndSetHubStatus( cart, url, TRUE);
 
-    if (status)
+    if (status && isEmpty(status->errorMessage))
         {
         char buffer[4096];
         safef(buffer, sizeof buffer, "hub_%d_%s", status->id, db);
         dbOveride = cloneString(buffer);
 
-        return cloneString(buffer);
+        return status->id;
         }
+    else
+        errAbort("Cannot open hub %s.", url);
+
     }
-return NULL;
+return 0;
 }
 
 
 char *hubConnectLoadHubs(struct cart *cart)
 /* load the track data hubs.  Set a static global to remember them */
 {
-char *newCuratedHub = NULL;
+int newCuratedHubId = 0;
 char *dbSpec = cartOptionalString(cart, "db");
 char *curatedHubPrefix = cfgOption("curatedHubPrefix");
-if (curatedHubPrefix && (dbSpec != NULL) ) 
-    newCuratedHub = lookForCuratedHubs(cart, trackHubSkipHubName(dbSpec), curatedHubPrefix);
+if (isEmpty(curatedHubPrefix))
+    curatedHubPrefix = "public";
+if (dbSpec != NULL)
+    newCuratedHubId = lookForCuratedHubs(cart, trackHubSkipHubName(dbSpec), curatedHubPrefix);
 
 char *newDatabase = checkForNew( cart);
-if (newCuratedHub)
-    newDatabase = newCuratedHub;
+if (newCuratedHubId)
+    newDatabase = dbOveride;
 cartSetString(cart, hgHubConnectRemakeTrackHub, "on");
 struct hubConnectStatus  *hubList =  hubConnectStatusListFromCart(cart);
 
 char *genarkPrefix = cfgOption("genarkHubPrefix");
 if (genarkPrefix && lookForLonelyHubs(cart, hubList, &newDatabase, genarkPrefix))
     hubList = hubConnectStatusListFromCart(cart);
 
 globalHubList = hubList;
 
 return newDatabase;
 }
 
 char *hubNameFromUrl(char *hubUrl)
 /* Given the URL for a hub, return its hub_# name. */
 {