Index: http-transport.scm ================================================================== --- http-transport.scm +++ http-transport.scm @@ -69,11 +69,13 @@ (ipaddrstr (let ((ipstr (if (string=? "-" hostn) ;; (string-intersperse (map number->string (u8vector->list (hostname->ip hostname))) ".") (server:get-best-guess-address hostname) #f))) (if ipstr ipstr hostn))) ;; hostname))) - (start-port (portlogger:open-run-close portlogger:find-port area-dat)) + (start-port (portlogger:open-run-close (lambda (db) + (portlogger:find-port db area-dat)) + area-dat)) (link-tree-path (configf:lookup configdat "setup" "linktree"))) ;; (set! db *inmemdb*) (debug:print-info 0 "portlogger recommended port: " start-port) (root-path (if link-tree-path link-tree-path @@ -132,18 +134,23 @@ (if (< portnum 64000) (begin (debug:print 0 "WARNING: attempt to start server failed. Trying again ...") (debug:print 0 " message: " ((condition-property-accessor 'exn 'message) exn)) (debug:print 0 "exn=" (condition->list exn)) - (portlogger:open-run-close portlogger:set-failed area-dat portnum) + (portlogger:open-run-close (lambda (db) + (portlogger:set-failed db area-dat)) + area-dat portnum) (debug:print 0 "WARNING: failed to start on portnum: " portnum ", trying next port") (thread-sleep! 0.1) ;; get_next_port goes here (http-transport:try-start-server run-id ipaddrstr - (portlogger:open-run-close portlogger:find-port area-dat) + (portlogger:open-run-close + (lambda (db) + (portlogger:find-port db area-dat)) + area-dat) server-id area-dat)) (begin (tasks:server-force-clean-run-record (db:delay-if-busy tdbdat area-dat) run-id ipaddrstr portnum " http-transport:try-start-server") (print "ERROR: Tried and tried but could not start the server")))) @@ -398,11 +405,11 @@ (equal? sdat last-sdat) sdat))))))) (iface (car server-info)) (port (cadr server-info)) (last-access 0) - (server-timeout (server:get-timeout))) + (server-timeout (server:get-timeout area-dat))) (let loop ((count 0) (server-state 'available) (bad-sync-count 0)) ;; Use this opportunity to sync the inmemdb to db @@ -499,11 +506,14 @@ (if *inmemdb* (db:sync-touched *inmemdb* *run-id* force-sync: #t)) ;; ;; start_shutdown ;; (tasks:server-set-state! (db:delay-if-busy tdbdat area-dat) server-id "shutting-down") - (portlogger:open-run-close portlogger:set-port area-dat port "released") + (portlogger:open-run-close + (lambda (db) + (portlogger:set-port db area-dat)) + area-dat port "released") (thread-sleep! 5) (debug:print-info 0 "Max cached queries was " *max-cache-size*) (debug:print-info 0 "Number of cached writes " *number-of-writes*) (debug:print-info 0 "Average cached write time " (if (eq? *number-of-writes* 0)