(defun add-private-log-entry (logger fmt &rest args)
(apply #'add-log-entry
- (if (get-private-log-stream logger)
+ (if (and logger (get-private-log-stream logger))
(get-private-log-stream logger)
- *standard-output*)
+ *standard-output*)
fmt args))
(defun privmsg-hook (msg)
*recon-channel-names* (channel-names logger))
(ignore-errors (remove-logger logger)))
- (let ((new-logger
- (ignore-errors
- (add-logger *recon-nick* *recon-server*
- :channels *recon-channel-names*
- :output *recon-user-output*
- :password *recon-password*
- :realname *recon-realname*
- :username *recon-username*
- :logging-stream *recon-logging-stream*
- :private-log *recon-private-log*
- :unknown-log *recon-unknown-log*
- :async *recon-async*
- :formats *recon-formats*))))
- (when new-logger
- (sleep 5)
- (when (is-connected new-logger)
- (log-reconnection new-logger)))))
+ (do ((new-logger nil))
+ (new-logger)
+ (setq new-logger
+ (ignore-errors
+ (add-logger *recon-nick* *recon-server*
+ :channels *recon-channel-names*
+ :output *recon-user-output*
+ :password *recon-password*
+ :realname *recon-realname*
+ :username *recon-username*
+ :logging-stream *recon-logging-stream*
+ :private-log *recon-private-log*
+ :unknown-log *recon-unknown-log*
+ :async *recon-async*
+ :formats *recon-formats*)))
+ (cond
+ (new-logger
+ (sleep 20)
+ (cond
+ ((is-connected new-logger)
+ (log-reconnection new-logger))
+ (t
+ (log-daemon-message new-logger "Newly added logger is not connected. Removing connection and will re-attempt.")
+ (ignore-errors (remove-logger new-logger))
+ (setq new-logger nil))))
+ (t
+ (log-daemon-message nil "Got NIL for new logger. Waiting and retrying.")
+ (sleep 20)))))
) ;; end closure
(defun daemon-monitor ()