Only keep looping while the actor is alive
[mudsync.git] / mudsync / networking.scm
index 4714556b4427595ec1e1b1ee2694880bd5be8bd2..f12a7e0c86578927bcfa53d18eef1afb6a532ffb 100644 (file)
@@ -17,7 +17,7 @@
 ;;; along with Mudsync.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (mudsync networking)
-  #:use-module (8sync systems actors)
+  #:use-module (8sync actors)
   #:use-module (8sync agenda)
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
@@ -49,7 +49,7 @@
   (actions
    #:allocation #:each-subclass
    #:init-value
-   (mhandlers
+   (build-actions
     (start-listening
      (lambda* (actor message
                      #:key (server %default-server)
         (begin
           (nm-handle-line nm client client-id
                           (string-trim-right line #\return))
-          (loop))))
+          (when (actor-am-i-alive? nm)
+            (loop)))))
   (loop))
 
 (define (nm-handle-port-closed nm client client-id)