dcabcf3e37e0b1e3c71b6a98358c1fb844ca3b8a
braney
  Tue Apr 22 12:26:11 2025 -0700
sessions save a copy of the quickLift hub.

diff --git src/hg/lib/hubConnect.c src/hg/lib/hubConnect.c
index 38a2f70c5c5..12c491c9c46 100644
--- src/hg/lib/hubConnect.c
+++ src/hg/lib/hubConnect.c
@@ -124,31 +124,31 @@
 	    if (firstOne)
 		firstOne = FALSE;
 	    else
 		dyStringAppendC(trackHubs, ' ');
 	    dyStringAppend(trackHubs, hubVar->name + prefixLength);
 	    }
 	}
     slPairFreeList(&hubVarList);
 
     // now see if we should quicklift any hubs
     struct sqlConnection *conn = hConnectCentral();
     char query[2048];
     hubVarList = cartVarsWithPrefix(cart, "quickLift");
     for (hubVar = hubVarList; hubVar != NULL; hubVar = hubVar->next)
         {
-        unsigned hubNumber = atoi(hubVar->name + sizeof("quickLift"));
+        unsigned hubNumber = atoi(hubVar->name + strlen("quickLift."));
         sqlSafef(query, sizeof(query), "select hubUrl from hubStatus where id='%d'", hubNumber);
         char *hubUrl = sqlQuickString(conn, query);
         char *errorMessage;
         unsigned hubId = hubFindOrAddUrlInStatusTable(cart, hubUrl, &errorMessage);
 
         if (firstOne)
             firstOne = FALSE;
         else
             dyStringAppendC(trackHubs, ' ');
         dyStringPrintf(trackHubs, "%d:%s", hubId,(char *)hubVar->val);
         }
     hDisconnectCentral(&conn);
 
     cartSetString(cart, hubConnectTrackHubsVarName, trackHubs->string);
     dyStringFree(&trackHubs);
@@ -330,31 +330,34 @@
         char query[4096];
         sqlSafef(query, sizeof(query), "select fromDb, toDb, path from %s where id = \"%s\"", "quickLiftChain", colon);
         struct sqlResult *sr = sqlGetResult(conn, query);
         char **row;
         char *replaceDb = NULL;
         char *quickLiftChain = NULL;
         char *toDb = NULL;
         while ((row = sqlNextRow(sr)) != NULL)
             {
             replaceDb = cloneString(row[0]);
             toDb = cloneString(row[1]);
             quickLiftChain = cloneString(row[2]);
             break; // there's only one
             }
         sqlFreeResult(&sr);
-        if (sameOk(toDb, hubConnectSkipHubPrefix(db)))
+
+//   this line needs to be reintroduced somehow to prevent quickLift hubs from
+//   being loaded on the wrong database, but it depends on db being set, which it isn't always at this point
+//        if (sameOk(toDb, hubConnectSkipHubPrefix(db)))
             hub = hubConnectStatusForIdExt(conn, id, replaceDb, toDb, quickLiftChain);
         }
     if (hub != NULL)
 	{
 	if (!isEmpty(hub->errorMessage) && (strstr(hub->hubUrl, "hgComposite") != NULL))
             {
             // custom collection hub has disappeared.   Remove it from cart
             cartSetString(cart, hgHubConnectRemakeTrackHub, "on");
             char buffer[1024];
             safef(buffer, sizeof buffer, "hgHubConnect.hub.%d", id);
             cartRemove(cart, buffer);
             }
         else
             slAddHead(&hubList, hub);
 	}