c99b62d7865a828f8f41c6e82dd36cbd2dd26780
markd
  Wed Jul 1 21:45:43 2020 -0700
hgBlat mostly works

diff --git src/jkOwnLib/gfBlatLib.c src/jkOwnLib/gfBlatLib.c
index 8bfd8cf..0cd801d 100644
--- src/jkOwnLib/gfBlatLib.c
+++ src/jkOwnLib/gfBlatLib.c
@@ -96,42 +96,48 @@
        diff = 1;
     else
        diff = 0;
 #ifdef SOLARIS_WORKAROUND_COMPILER_BUG_BUT_FAILS_IN_64_BIT
     diff = (unsigned long)(a->t3) - (unsigned long)(b->t3);	/* Casts needed for Solaris.  Thanks Darren Platt! */
 #endif /* SOLARIS_WORKAROUND_COMPILER_BUG_BUT_FAILS_IN_64_BIT */
     }
 if (diff == 0)
     diff = a->tStart - b->tStart;
 return diff;
 }
 
 static void startSeqQuery(int conn, bioSeq *seq, char *type, char *dynGenome)
 /* Send a query that involves some sequence. */
 {
-char buf[256];
+char buf[1024]; // room for error message if we need it.
 safef(buf, sizeof(buf), "%s%s %d", gfSignature(), type, seq->size);
 if (dynGenome != NULL)
     {
     safecat(buf, sizeof(buf), " ");
     safecat(buf, sizeof(buf), dynGenome);
     }
 mustWriteFd(conn, buf, strlen(buf));
 if (read(conn, buf, 1) < 0)
     errAbort("startSeqQuery: read failed: %s", strerror(errno));
 if (buf[0] != 'Y')
-    errAbort("Expecting 'Y' from server, got %c", buf[0]);
+    {
+    // try to get read of message, might be an a useful error
+    int n = read(conn, buf+1, sizeof(buf)-2);
+    if (n >= 0)
+        buf[n+1] = '\0';
+    errAbort("Expecting 'Y' from server, got %s", buf);
+    }
 mustWriteFd(conn, seq->dna, seq->size);
 }
 
 static void gfServerWarn(bioSeq *seq, char *warning)
 /* Write out warning. */
 {
 warn("couldn't process %s: %s", seq->name, warning);
 }
 
 static struct gfRange *gfQuerySeq(int conn, struct dnaSeq *seq, char *dynGenome)
 /* Ask server for places sequence hits. */
 {
 struct gfRange *rangeList = NULL, *range;
 char buf[256], *row[6];
 int rowSize;