Added GPL notices to the Guile code.
[doldaconnect.git] / lib / guile / hubmgr
index daa5482..39b4f43 100755 (executable)
@@ -1,6 +1,23 @@
 #!/usr/bin/guile -s
 !#
 
+;  Dolda Connect - Modular multiuser Direct Connect-style client
+;  Copyright (C) 2007 Fredrik Tolf <fredrik@dolda2000.com>
+;  
+;  This program is free software; you can redistribute it and/or modify
+;  it under the terms of the GNU General Public License as published by
+;  the Free Software Foundation; either version 2 of the License, or
+;  (at your option) any later version.
+;  
+;  This program is distributed in the hope that it will be useful,
+;  but WITHOUT ANY WARRANTY; without even the implied warranty of
+;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;  GNU General Public License for more details.
+;  
+;  You should have received a copy of the GNU General Public License
+;  along with this program; if not, write to the Free Software
+;  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
 (use-modules (dolcon ui) (dolcon util))
 (use-modules (ice-9 format))
 
                                            (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))
 
 (define (hubmgr-main args)
   (let ((dc-server #f))
-    (if (not dc-server) (set! dc-server (getenv "DCSERVER")))
-    (if (not dc-server) (set! dc-server "localhost"))
-    
     (set! hublist (read-hl))
     (logf "read ~a hubs" (length hublist))
     (dc-c&l #t dc-server #t)
     (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)))