;;;  -*- Mode:Lisp; Package:USER; Base:10; Lowercase:YES; Syntax: Common-lisp -*-

(DEFVAR **save-ip-tcp-server-list**)

(DEFVAR **save-chaos-server-alist**)

(DEFUN halt-mail ()
  "Shut down mail processing while running interactive benchmarks"
  
  (WHEN (FBOUNDP 'mail:reset-mail-daemon)
    (SETQ **save-ip-tcp-server-list** ip:*tcp-server-list*)          ;;; preserve old environment
    (SETQ **save-chaos-server-alist** chaos:server-alist)
    
    (mail:reset-mail-daemon)
    (SETF ip:*tcp-server-list* (REMOVE 25 ip:*tcp-server-list* :key #'CAR :test #'EQL))
    (SETF ip:*tcp-server-list* (REMOVE 23 ip:*tcp-server-list* :key #'CAR :test #'EQL))
    (SETF chaos:server-alist (REMOVE "MAIL" chaos:server-alist :key #'car :test #'STRING-EQUAL))
    (SETF chaos:server-alist (REMOVE "SMTP" chaos:server-alist :key #'car :test #'STRING-EQUAL))
    (FORMAT t "~%Mail service is halted")
    ))
  
  
(DEFUN restart-mail ()
  "Restart all servers halted by the function halt-mail"
  
  (WHEN (FBOUNDP 'mail:reset-mail-daemon)
    (SETF ip:*tcp-server-list* **save-ip-tcp-server-list**)
    (SETF chaos:server-alist **save-chaos-server-alist**)
    (mail:reset-mail-daemon t)
    ))
