08eae47c7d2c37e18578b9c8f1c7569013041400
braney
  Sun Oct 9 11:08:25 2011 -0700
don't reopen the trackHub since it's already in the hubStatus
diff --git src/hg/hgTables/hgTables.c src/hg/hgTables/hgTables.c
index 5838b76..1084e69 100644
--- src/hg/hgTables/hgTables.c
+++ src/hg/hgTables/hgTables.c
@@ -261,49 +261,54 @@
     else
 	slAddHead(&newList, tdb);
     }
 slReverse(&newList);
 list = newList;
 
 /* add wikiTrack if enabled */
 if (wikiTrackEnabled(database, NULL))
     wikiTrackDb(&list);
 
 /* Add hub tracks. */
 struct hubConnectStatus *hubStatus;
 for (hubStatus = hubList; hubStatus != NULL; hubStatus = hubStatus->next)
     {
     /* Load trackDb.ra file and make it into proper trackDb tree */
-    char hubName[8];
+    char hubName[64];
     safef(hubName, sizeof(hubName), "hub_%d", hubStatus->id);
-    struct trackHub *hub = trackHubOpen(hubStatus->hubUrl, hubName);
+
+    struct trackHub *hub = hubStatus->trackHub;
     if (hub != NULL)
 	{
+	hub->name = cloneString(hubName);
 	struct trackHubGenome *hubGenome = trackHubFindGenome(hub, database);
 	if (hubGenome != NULL)
 	    {
 	    struct trackDb *tdbList = trackHubTracksForGenome(hub, hubGenome);
 	    tdbList = trackDbLinkUpGenerations(tdbList);
 	    tdbList = trackDbPolishAfterLinkup(tdbList, database);
 	    trackDbPrioritizeContainerItems(tdbList);
 	    if (tdbList != NULL)
 		{
 		list = slCat(list, tdbList);
 		struct grp *grp = grpFromHub(hubStatus);
 		slAddHead(pHubGroups, grp);
 		}
 	    }
+	
+	// clear this so it isn't free'd later
+	hubStatus->trackHub = NULL;
 	}
     }
 slReverse(pHubGroups);
 
 /* Create dummy group for custom tracks if any */
 ctList = getCustomTracks();
 for (ct = ctList; ct != NULL; ct = ct->next)
     {
     slAddHead(&list, ct->tdb);
     }
 
 return list;
 }
 
 boolean fullGenomeRegion()