1934dd31fce8bd9ab10b1517d00f99da636d6fc1
galt
  Mon Aug 25 12:06:12 2025 -0700
For a more user-friendly error message, tell users what to do and why for GEO download links. Fixes #36074 and #36071.

diff --git src/hg/lib/customFactory.c src/hg/lib/customFactory.c
index 2acb208f12c..ca3d34d79bb 100644
--- src/hg/lib/customFactory.c
+++ src/hg/lib/customFactory.c
@@ -4382,30 +4382,34 @@
 
 /* wrap a customPp object around it. */
 struct customPp *cpp = customPpNew(lf);
 lf = NULL;
 
 /* Loop through this once for each track. */
 while ((line = customPpNextReal(cpp)) != NULL)
     {
     /* Parse out track line and save it in track var.
      * First time through make up track var from thin air
      * if no track line. Find out explicit type setting if any.
      * Also make sure settingsHash is set up. */
     // NOTE: line is binary data if a file upload
     lf = cpp->fileStack;
     char *dataUrl = NULL;
+
+    if (startsWith("https://www.ncbi.nlm.nih.gov/geo/download/", lf->fileName))
+	errAbort("You are using the GEO download 'http' link, but it will not work. Please use the GEO link labelled 'ftp' for custom tracks.");
+
     if (lf->fileName && (
             startsWith("http://" , lf->fileName) ||
             startsWith("https://", lf->fileName) ||
             startsWith("ftp://"  , lf->fileName) ||
             udcIsResolvable(lf->fileName)
             ))
         dataUrl = cloneString(lf->fileName);
     if (startsWithWord("track", line))
         {
 	track = trackLineToTrack(genomeDb, line, cpp->fileStack->lineIx);
         }
     else if (trackList == NULL)
     /* In this case we handle simple files with a single track
      * and no track line. */
         {