c74baf995ca1b7d3de1b1af4b125afa4c9d39b39 angie Wed Jun 22 08:55:07 2016 -0700 Yet another case of assuming a mysql db, which breaks track hubs. refs #17582 MLQ and probably a follow-up patch request. diff --git src/hg/lib/cartTrackDb.c src/hg/lib/cartTrackDb.c index 984fce9..3efab84 100644 --- src/hg/lib/cartTrackDb.c +++ src/hg/lib/cartTrackDb.c @@ -217,60 +217,63 @@ } else { struct accessControl *ac = hel->val; ac->isNoGenome = isNoGenome; accessControlAddHost(ac, host); } } static struct hash *accessControlInit(char *db) /* Return a hash associating restricted table/track names in the given db/conn * with virtual hosts -- hash is empty if there is no tableAccessControl table and no * accessControlTrackRefList (see getFullTrackList). */ { struct hash *acHash = hashNew(0); +if (! trackHubDatabase(db)) + { struct sqlConnection *conn = hAllocConn(db); if (sqlTableExists(conn, "tableAccessControl")) { struct sqlResult *sr = NULL; char **row = NULL; acHash = newHash(0); sr = sqlGetResult(conn, NOSQLINJ "select name,host from tableAccessControl"); while ((row = sqlNextRow(sr)) != NULL) acHashAddOneTable(acHash, row[0], chopAtFirstDot(row[1]), FALSE); sqlFreeResult(&sr); } + hFreeConn(&conn); + } struct slRef *tdbRef; for (tdbRef = accessControlTrackRefList; tdbRef != NULL; tdbRef = tdbRef->next) { struct trackDb *tdb = tdbRef->val; char *tbOff = cloneString(trackDbSetting(tdb, "tableBrowser")); if (isEmpty(tbOff)) errAbort("accessControlInit bug: tdb for %s does not have tableBrowser setting", tdb->track); // First word is "off" or "noGenome": char *type = nextWord(&tbOff); boolean isNoGenome = sameString(type, "noGenome"); // Add track table to acHash: acHashAddOneTable(acHash, tdb->table, NULL, isNoGenome); // Remaining words are additional table names to add: char *tbl; while ((tbl = nextWord(&tbOff)) != NULL) acHashAddOneTable(acHash, tbl, NULL, isNoGenome); } -hFreeConn(&conn); return acHash; } static struct hash *getCachedAcHash(char *db) /* Returns a hash that maps table names to accessControl, creating it if necessary. */ { static struct hash *dbToAcHash = NULL; if (dbToAcHash == NULL) dbToAcHash = hashNew(0); struct hash *acHash = hashFindVal(dbToAcHash, db); if (acHash == NULL) { acHash = accessControlInit(db); hashAdd(dbToAcHash, db, acHash); }