Index: trunk/pstamp/src/pstampfinish.c
===================================================================
--- trunk/pstamp/src/pstampfinish.c	(revision 16961)
+++ trunk/pstamp/src/pstampfinish.c	(revision 16978)
@@ -31,4 +31,5 @@
 
 #define RESULTS_FILE_NAME "results.fits"
+#define PARSE_ERROR_FILE_NAME "parse_error"
 
 
@@ -202,29 +203,55 @@
     psArray *stamps = psArrayAlloc(0);
 
-    long numJobs = psArrayLength(stoppedJobs);
     long numStamps = 0;
-    for (int i = 0; i < numJobs; i++) {
-        pstampJobRow *pJob = psArrayGet(stoppedJobs, i);
-
-        psMetadata *jobmd = psMetadataAlloc();
-        psArrayAdd(table, 1, jobmd);
-
-        psMetadataAddS32(jobmd, PS_LIST_TAIL, "RESULT", 0, "", pJob->result);
-
-        if (pJob->result == 0) {
-            ++numStamps;
-            // XXX: should we check for existence?
-            psString stampName = getBaseName(pJob->outputBase, true);
-            psString inputName = getBaseName(pJob->uri, false);
-            psArrayAdd(stamps, 1, stampName);
-            // add basename of stamp and output uri
-            psMetadataAddStr(jobmd, PS_LIST_TAIL, "STAMP_NAME", PS_DATA_STRING, "", stampName);
-            psMetadataAddStr(jobmd, PS_LIST_TAIL, "INPUT_NAME", PS_DATA_STRING, "", inputName);
-            psMetadataAddStr(jobmd, PS_LIST_TAIL, "COMMENT", PS_DATA_STRING, "",
-                "stamp made successfully");
-        } else {
-            // TODO: convert the result code into something useful to the user
-            psMetadataAddStr(jobmd, PS_LIST_TAIL, "COMMENT", PS_DATA_STRING, "",
-                "add description of what happened here");
+    if (stoppedJobs) {
+        long numJobs = psArrayLength(stoppedJobs);
+        for (int i = 0; i < numJobs; i++) {
+            pstampJobRow *pJob = psArrayGet(stoppedJobs, i);
+
+            psMetadata *jobmd = psMetadataAlloc();
+            psArrayAdd(table, 1, jobmd);
+
+            psMetadataAddS32(jobmd, PS_LIST_TAIL, "RESULT", 0, "", pJob->result);
+
+            if (pJob->result == 0) {
+                ++numStamps;
+                // XXX: should we check for existence?
+                psString stampName = getBaseName(pJob->outputBase, true);
+                psString inputName = getBaseName(pJob->uri, false);
+                psArrayAdd(stamps, 1, stampName);
+                // add basename of stamp and output uri
+                psMetadataAddStr(jobmd, PS_LIST_TAIL, "STAMP_NAME", PS_DATA_STRING, "", stampName);
+                psMetadataAddStr(jobmd, PS_LIST_TAIL, "INPUT_NAME", PS_DATA_STRING, "", inputName);
+                psMetadataAddStr(jobmd, PS_LIST_TAIL, "COMMENT", PS_DATA_STRING, "",
+                    "stamp made successfully");
+                } else {
+                // TODO: convert the result code into something useful to the user
+                psMetadataAddStr(jobmd, PS_LIST_TAIL, "COMMENT", PS_DATA_STRING, "",
+                    "add description of what happened here");
+            }
+        }
+    } else {
+        // request generated no jobs look for a parse error file
+        // and add its contents as an ERROR
+        bool    gotError = false;
+        psMetadata *errmd = psMetadataAlloc();
+        psArrayAdd(table, 1, errmd);
+
+        psString parseErrorFile = NULL;
+        psStringAppend(&parseErrorFile, "%s/%s", filesetDir, PARSE_ERROR_FILE_NAME);
+        FILE *f = fopen(parseErrorFile, "r");
+        if (f) {
+            char buf[2048];
+            bzero(buf, 2048);
+            size_t n = fread(buf, 1, 2048, f);
+            if (n > 0) {
+                psMetadataAddStr(errmd, PS_LIST_TAIL, "ERROR", PS_DATA_STRING, "", buf);
+                gotError = true;
+            }
+            fclose(f);
+        }
+        if (!gotError) {
+            psMetadataAddStr(errmd, PS_LIST_TAIL, "ERROR", PS_DATA_STRING, "",
+                "Request queued no jobs, reason unknown");
         }
     }
Index: trunk/pstamp/src/pstampparse.c
===================================================================
--- trunk/pstamp/src/pstampparse.c	(revision 16961)
+++ trunk/pstamp/src/pstampparse.c	(revision 16978)
@@ -778,5 +778,5 @@
         // or are there simply no images matching the request
         fprintf(stderr, "No matching images found.\n");
-        return true;
+        return false;
     }
 
