@@ -428,11 +428,17 @@ (res (make-hash-table))) (for-each (lambda (f) (let* ((hostport (pathname-strip-directory f)) (serverdat (server:logf-get-start-info f))) - (hash-table-set! res hostport serverdat))) + (match serverdat + ((host port start server-id pid) + (if (and host port start server-id pid) + (hash-table-set! res hostport serverdat) + (debug:print-info 0 *default-log-port* "bad server info for "f": "serverdat))) + (else + (debug:print-info 0 *default-log-port* "bad server info for "f": "serverdat))))) allfiles) res))) ;; oldest server alive determines host then choose random of youngest ;; five servers on that host @@ -464,16 +470,16 @@ (all-valid (filter (lambda (x) (equal? host (list-ref (hash-table-ref serversdat x) 0))) by-time-asc)) (best-five (lambda () (if (> (length all-valid) 5) - (map (lambda (x) - (hash-table-ref serversdat x)) - (take all-valid 5)) + (take all-valid 5) all-valid))) (names->dats (lambda (names) - (map (lambda (x)(hash-table-ref serversdat x)) names))) + (map (lambda (x) + (hash-table-ref serversdat x)) + names))) (am-home? (lambda () (let* ((currhost (get-host-name)) (bestadrs (server:get-best-guess-address currhost))) (or (equal? host currhost) (equal? host bestadrs)))))) @@ -486,11 +492,11 @@ ((home?) (am-home?)) ((best-five)(names->dats (best-five))) ((all-valid)(names->dats all-valid)) ((best) (let* ((best-five (best-five)) (len (length best-five))) - (list-ref best-five (random len)))) + (hash-table-ref serversdat (list-ref best-five (random len))))) (else (debug:print 0 *default-log-port* "ERROR: invalid command "mode) #f))) (begin