             until (mural-response-complete mural-server-output)
             do (accept-process-output proc .05))
       (if (mural-response-complete mural-server-output)
-          (mural-parse-response mural-server-output)
-        (progn
-          (message "mural-server timeout")
-          '())
-        ))))
+          (mural-parse-response tagfile mural-server-output)
+        (error "mural-server timeout"))
+      )))
 
 (defun mural-query-save-tag (query)
   (let ((qresult (mural-query query mural-current-tagfile)))

(defun mural-query (query tagfile)
  (if (equal "" query)
      '()
    (let ((proc (mural-get-server tagfile)))
      (setq mural-server-output "")
      (process-send-string (process-name proc)
                           (concat query "\n"))



;;(mural-parse-response "MATCH foo bar 1\nMATCH hi bye 2\nDONE hi hi")
;; returns '((tag file row) ...)
(defun mural-parse-response (tagfile results)
  (delq nil
        (mapcar
         (lambda (x)
