From d289ec60467cae9601d4eb2f1b150037bf586fb9 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Fri, 13 Feb 2004 18:19:35 +0000 Subject: [PATCH] r8655: add timeouts for functions that did not return as well as a handler-case for log-entry output --- debian/changelog | 7 +++++++ logger.lisp | 26 +++++++++++++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index c85220d..617f72d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cl-irc-logger (0.8.1-1) unstable; urgency=low + + * Add timeouts to some functions which may not return when the logger + is disconnected. + + -- Kevin M. Rosenberg Fri, 13 Feb 2004 11:18:53 -0700 + cl-irc-logger (0.8.0-1) unstable; urgency=low * Extensive code cleanup diff --git a/logger.lisp b/logger.lisp index deb4ba5..3bb165f 100644 --- a/logger.lisp +++ b/logger.lisp @@ -360,11 +360,16 @@ *standard-output*)) (defun add-log-entry (stream fmt &rest args) - (format-date-time (get-universal-time) :stream stream) - (write-char #\space stream) - (apply #'format stream fmt args) - (write-char #\newline stream) - (force-output stream)) + (handler-case + (progn + (format-date-time (get-universal-time) :stream stream) + (write-char #\space stream) + (apply #'format stream fmt args) + (write-char #\newline stream) + (force-output stream)) + (error (e) + (warn "Error ~A when trying to add-log-entry '~A'." e + (apply #'format nil fmt args))))) (defun add-private-log-entry (logger fmt &rest args) (apply #'add-log-entry (get-private-log-stream logger) fmt args)) @@ -708,11 +713,18 @@ (defun is-connected (logger) (%is-connected logger)) +(defparameter *timeout* 60) + (defun is-connected (logger) #-allegro (%is-connected logger) - #+allegro (mp:with-timeout (60 nil) + #+allegro (mp:with-timeout (*timeout* nil) (%is-connected logger))) +(defun quit-maybe-timeout (connection msg) + #-allegro (quit connection msg) + #+allegro (mp:with-timeout (*timeout* nil) + (quit connection msg))) + (defun %is-connected (logger) (when (ignore-errors (ping (connection logger) (server logger))) (dotimes (i 20) @@ -736,7 +748,7 @@ (log-disconnection logger) (when (connection logger) - (ignore-errors (quit (connection logger) "Client terminated by server")) + (ignore-errors (quit-maybe-timeout (connection logger) "Client terminated by server")) (setf *recon-nick* (nickname logger) *recon-server* (server logger) *recon-username* (username logger) -- 2.34.1