638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
|
(same-host (or (not prime-host) ;; i.e. this is the first host
(equal? prime-host host)))
(keep-srv (and good-ping same-host)))
(if keep-srv
(loop (cdr servrs)
host
(cons servdat result))
(let* ((modtime (file-modification-time servinfofile)))
;; if the .servinfo hasn't been touched in five min
;; we can be pretty sure the server is truly dead
(if (> (- (current-seconds) modtime) 360)
(handle-exceptions
exn
(debug:print-info 0 *default-log-port*
"Error removing server info file: "servinfofile", "
(condition->list exn))
(delete-file* servinfofile))
(loop (cdr servrs) prime-host result))))))
(else
;; can't delete it as we don't have a filename. NOTE: Should never get here.
(debug:print-info 0 *default-log-port* "ERROR: bad servinfo record \""servdat"\"")
(loop (cdr servrs) prime-host result)) ;; drop
)))))
(home-host (if (null? good-srvrs)
#f
|
>
>
>
|
|
|
|
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
|
(same-host (or (not prime-host) ;; i.e. this is the first host
(equal? prime-host host)))
(keep-srv (and good-ping same-host)))
(if keep-srv
(loop (cdr servrs)
host
(cons servdat result))
(let* ((modtime (handle-exceptions
exn
9999 ;; file probably disappeared
(file-modification-time servinfofile))))
;; if the .servinfo hasn't been touched in five min
;; we can be pretty sure the server is truly dead
(if (> (- (current-seconds) modtime) 360)
(handle-exceptions
exn
(debug:print-info 0 *default-log-port*
"Error removing server info file: "servinfofile", "
(condition->list exn))
(delete-file* servinfofile)))
(loop (cdr servrs) prime-host result)))))
(else
;; can't delete it as we don't have a filename. NOTE: Should never get here.
(debug:print-info 0 *default-log-port* "ERROR: bad servinfo record \""servdat"\"")
(loop (cdr servrs) prime-host result)) ;; drop
)))))
(home-host (if (null? good-srvrs)
#f
|