1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-26 08:10:47 -07:00

Ensure that we don't have several timers in erc

* lisp/erc/erc-backend.el (erc-server-setup-periodical-ping): Checks
for existing timers in the alist before adding new ones.  If a
timer already exists, it is cancelled and
overwritten. (bug#19292).
This commit is contained in:
Dima Kogan 2015-12-27 21:19:13 +01:00 committed by Lars Ingebrigtsen
parent 85c1843f65
commit 2cd894dc34

View file

@ -493,9 +493,19 @@ The current buffer is given by BUFFER."
4 erc-server-send-ping-interval
#'erc-server-send-ping
buffer))
(setq erc-server-ping-timer-alist (cons (cons buffer
erc-server-ping-handler)
erc-server-ping-timer-alist)))))
;; I check the timer alist for an existing timer. If one exists,
;; I get rid of it
(let ((timer-tuple (assq buffer erc-server-ping-timer-alist)))
(if timer-tuple
;; this buffer already has a timer. Cancel it and set the new one
(progn
(erc-cancel-timer (cdr timer-tuple))
(setf (cdr (assq buffer erc-server-ping-timer-alist)) erc-server-ping-handler))
;; no existing timer for this buffer. Add new one
(add-to-list 'erc-server-ping-timer-alist
(cons buffer erc-server-ping-handler)))))))
(defun erc-server-process-alive (&optional buffer)
"Return non-nil when BUFFER has an `erc-server-process' open or running."