Wait on failed hubs as well.
[doldaconnect.git] / lib / guile / hubmgr
index daa5482..ebcdcb3 100755 (executable)
@@ -68,6 +68,7 @@
                                            (begin (set-cdr! (assq hub connlist) (car ir))
                                                   (logf "~a state syn (~a)" (cadr hub) (car ir)))
                                            (begin (set! connlist (delq (assq hub connlist) connlist))
+                                                  (set! statelist (cons (list hub (current-time) 10) statelist))
                                                   (logf "~a failed (~a)" (cadr hub) (cdr (assq 'code er))))))))))))
            hublist))
 
@@ -82,7 +83,8 @@
     (dc-ecmd-assert 200 "notify" "fn:act" "on")
     (dc-handle-fn)
     (dc-fnproc-reg 'state (lambda (fn)
-                           (if (eq? (cdr (assq 'state fn)) 'dead)
+                           (if (and (eq? (cdr (assq 'state fn)) 'dead)
+                                    (assq (cdr (assq 'id fn)) (map (lambda (o) (cons (cdr o) (car o))) connlist)))
                                (begin (logf "~a died" (cdr (assq 'id fn)))
                                       (dc-qcmd (list "dcnct" (cdr (assq 'id fn))))))
                            (cklist)))