2b6c6b0a93928d762a71612a7b2be14aba56c436
braney
  Thu Aug 19 14:53:02 2021 -0700
we need to replace /gbdb with hgdownload: addresses on gBiB.  refs #28109

diff --git src/hg/lib/hAnno.c src/hg/lib/hAnno.c
index a122492..022d32e 100644
--- src/hg/lib/hAnno.c
+++ src/hg/lib/hAnno.c
@@ -130,40 +130,40 @@
 if (columnsMatch(asObj, fieldList))
     return asObj;
 else
     {
     // Special case for pgSnp, which includes its bin column in autoSql...
     struct asObject *pgSnpAsO = pgSnpAsObj();
     if (columnsMatch(pgSnpAsO, fieldList))
         return pgSnpAsO;
     return asObjectFromFields(table, fieldList, skipBin);
     }
 }
 
 static char *getBigDataIndexName(struct trackDb *tdb)
 /* Get tbi/bai URL for a BAM/VCF from trackDb or custom track. */
 {
-char *bigIndexUrl = trackDbSetting(tdb, "bigDataIndex");
+char *bigIndexUrl = hReplaceGbdb(trackDbSetting(tdb, "bigDataIndex"));
 if (isNotEmpty(bigIndexUrl))
     return bigIndexUrl;
 return NULL;
 }
 
 static char *getBigDataFileName(char *db, struct trackDb *tdb, char *selTable, char *chrom)
 /* Get fileName from bigBed/bigWig/BAM/VCF database table, or bigDataUrl from custom track. */
 {
-char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl");
+char *bigDataUrl = hReplaceGbdb(trackDbSetting(tdb, "bigDataUrl"));
 if (isNotEmpty(bigDataUrl))
     {
     return bigDataUrl;
     }
 else
     {
     struct sqlConnection *conn = hAllocConn(db);
     char *fileOrUrl = bbiNameFromSettingOrTableChrom(tdb, conn, selTable, chrom);
     hFreeConn(&conn);
     return fileOrUrl;
     }
 }
 
 static boolean dbTableMatchesAutoSql(char *db, char *table, struct asObject *asObj)
 /* Return true if table exists and its fields match the columns of asObj. */
@@ -306,31 +306,31 @@
 }
 
 struct annoGrator *hAnnoGratorFromTrackDb(struct annoAssembly *assembly, char *selTable,
                                           struct trackDb *tdb, char *chrom, int maxOutRows,
                                           struct asObject *primaryAsObj,
                                           enum annoGratorOverlap overlapRule,
                                           struct jsonElement *config)
 /* Figure out the source and type of data, make an annoStreamer & wrap in annoGrator.
  * If not NULL, primaryAsObj is used to determine whether we can make an annoGratorGpVar. */
 {
 struct annoGrator *grator = NULL;
 boolean primaryIsVariants = (primaryAsObj != NULL &&
                              (asObjectsMatch(primaryAsObj, pgSnpAsObj()) ||
                               asObjectsMatch(primaryAsObj, pgSnpFileAsObj()) ||
                               asObjectsMatch(primaryAsObj, vcfAsObj())));
-char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl");
+char *bigDataUrl = hReplaceGbdb(trackDbSetting(tdb, "bigDataUrl"));
 char *indexUrl = getBigDataIndexName(tdb);
 if (bigDataUrl != NULL)
     {
     if (primaryIsVariants && sameString("bigGenePred", tdb->type))
         {
         struct annoStreamer *streamer = annoStreamBigBedNew(bigDataUrl, assembly, maxOutRows);
         grator = annoGratorGpVarNew(streamer);
         }
     else
         grator = hAnnoGratorFromBigFileUrl(bigDataUrl, indexUrl, assembly, maxOutRows, overlapRule);
     }
 else if (startsWithWord("wig", tdb->type))
     {
     char *dataDb = assembly->name;
     char *dbTable = selTable;