6afa9dd4343c3b66ff09f39735170ec8be5f282e
braney
  Wed Sep 18 17:33:15 2024 -0700
add ability to set a timeout on remote loads

diff --git src/lib/udc.c src/lib/udc.c
index 7ef70c0..a78441d 100644
--- src/lib/udc.c
+++ src/lib/udc.c
@@ -216,32 +216,43 @@
 {
 ioStats->numWrites++;
 ioStats->bytesWritten += size;
 mustWriteFd(fd, buf, size);
 }
 
 static size_t ourRead(struct ioStats *ioStats, int fd, void *buf, size_t size)
 {
 ioStats->numReads++;
 size_t bytesRead = read(fd, buf, size);
 ioStats->bytesRead += bytesRead;
 
 return bytesRead;
 }
 
+static char * udcStopReadsMessage;  // if not-NULL then udcRead errAborts with message
+
+void udcReadStopMessage(char *message)
+// set message for errAbort on udcRead.  If message is NULL, no abort is made
+{
+udcStopReadsMessage = cloneString(message);
+}
+
 static void ourMustRead(struct ioStats *ioStats, int fd, void *buf, size_t size)
 {
+if (udcStopReadsMessage != NULL)
+    errAbort("%s", udcStopReadsMessage);
+
 ioStats->numReads++;
 ioStats->bytesRead += size;
 mustReadFd(fd, buf, size);
 }
 
 static size_t ourFread(struct ioStats *ioStats, void *buf, size_t size, size_t nmemb, FILE *stream)
 {
 ioStats->numReads++;
 ioStats->bytesRead += size * nmemb;
 return fread(buf, size, nmemb, stream);
 }
 
 
 static void udcReadAndIgnore(struct ioStats *ioStats, int sd, bits64 size)
 /* Read size bytes from sd and return. */