Index: common.scm ================================================================== --- common.scm +++ common.scm @@ -48,10 +48,11 @@ (define *max-cache-size* 0) (define *logged-in-clients* (make-hash-table)) (define *client-non-blocking-mode* #f) (define *server-id* #f) (define *time-to-exit* #f) +(define *received-response* #f) (define *target* (make-hash-table)) ;; cache the target here; target is keyval1/keyval2/.../keyvalN (define *keys* (make-hash-table)) ;; cache the keys here (define *keyvals* (make-hash-table)) (define *toptest-paths* (make-hash-table)) ;; cache toptest path settings here Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -1183,16 +1183,16 @@ ;; params = 'target cached remparams (define (cdb:client-call zmq-socket . params) (debug:print-info 11 "cdb:client-call zmq-socket=" zmq-socket " params=" params) (let ((zdat (db:obj->string params)) ;; (with-output-to-string (lambda ()(serialize params)))) (res #f)) - ;; (signal-mask! signal/int) + (set! *received-response* #f) (send-message zmq-socket zdat) (set! res (db:string->obj (if *client-non-blocking-mode* (receive-message* zmq-socket) (receive-message zmq-socket)))) - ;; (signal-unmask! signal/int) + (set! *received-response* #t) (debug:print-info 11 "zmq-socket " (car params) " res=" res) res)) (define (cdb:set-verbosity zmq-socket val) (cdb:client-call zmq-socket 'set-verbosity #f val)) Index: server.scm ================================================================== --- server.scm +++ server.scm @@ -321,11 +321,12 @@ (define (server:client-signal-handler signum) (handle-exceptions exn (debug:print " ... exiting ...") (let ((th1 (make-thread (lambda () - (receive-message* *runremote*)) ;; flush out last call if applicable + (if (not *received-response*) + (receive-message* *runremote*))) ;; flush out last call if applicable "eat response")) (th2 (make-thread (lambda () (debug:print 0 "ERROR: Received ^C, attempting clean exit.") (thread-sleep! 3) ;; give the flush three seconds to do it's stuff (debug:print 0 " Done.")