From 776592863c5a4fb5744cff5610f8b129e0e61c14 Mon Sep 17 00:00:00 2001
From: Akira Tempaku <paku@skyizwhite.dev>
Date: Sun, 4 May 2025 22:48:33 +0900
Subject: [PATCH] Improve handling server

---
 src/main.lisp | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/main.lisp b/src/main.lisp
index 2c311c4..58b2a7b 100644
--- a/src/main.lisp
+++ b/src/main.lisp
@@ -9,22 +9,24 @@
            #:reload))
 (in-package #:website)
 
-(defparameter *handler* nil)
+(defparameter *server* nil)
 
 (defun start ()
-  (if *handler*
-      (format t "The server is already running.~%")
-      (setf *handler* (clack:clackup *app*
-                                     :server :hunchentoot
-                                     :address "localhost"
-                                     :port 3000))))
+  (when *server*
+    (restart-case (error "Server is already running.")
+      (restart-server ()
+        :report "Restart the server"
+        (stop))))
+  (setf *server* (clack:clackup *app*
+                                :server :hunchentoot
+                                :address "localhost"
+                                :port 3000)))
 
 (defun stop ()
-  (if *handler*
-      (progn
-        (clack:stop *handler*)
-        (setf *handler* nil))
-      (format t "The server is not running.~%")))
+  (when *server*
+    (clack:stop *server*)
+    (format t "Server stopped~%")
+    (setf *server* nil)))
 
 (defun reload ()
   (stop)