aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDima Kogan2015-12-27 21:19:13 +0100
committerLars Ingebrigtsen2015-12-27 21:19:13 +0100
commit2cd894dc348b4872d7beb10275387c30027c8f26 (patch)
tree0b2b1f6e761d204cc9300659a58111cf6ea63fe8
parent85c1843f65f0fd82ed6c1df92b6a9a5113e51b1e (diff)
downloademacs-2cd894dc348b4872d7beb10275387c30027c8f26.tar.gz
emacs-2cd894dc348b4872d7beb10275387c30027c8f26.zip
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).
-rw-r--r--lisp/erc/erc-backend.el16
1 files changed, 13 insertions, 3 deletions
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index b52c8f5454f..daaa1b0428a 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -493,9 +493,19 @@ The current buffer is given by BUFFER."
493 4 erc-server-send-ping-interval 493 4 erc-server-send-ping-interval
494 #'erc-server-send-ping 494 #'erc-server-send-ping
495 buffer)) 495 buffer))
496 (setq erc-server-ping-timer-alist (cons (cons buffer 496
497 erc-server-ping-handler) 497 ;; I check the timer alist for an existing timer. If one exists,
498 erc-server-ping-timer-alist))))) 498 ;; I get rid of it
499 (let ((timer-tuple (assq buffer erc-server-ping-timer-alist)))
500 (if timer-tuple
501 ;; this buffer already has a timer. Cancel it and set the new one
502 (progn
503 (erc-cancel-timer (cdr timer-tuple))
504 (setf (cdr (assq buffer erc-server-ping-timer-alist)) erc-server-ping-handler))
505
506 ;; no existing timer for this buffer. Add new one
507 (add-to-list 'erc-server-ping-timer-alist
508 (cons buffer erc-server-ping-handler)))))))
499 509
500(defun erc-server-process-alive (&optional buffer) 510(defun erc-server-process-alive (&optional buffer)
501 "Return non-nil when BUFFER has an `erc-server-process' open or running." 511 "Return non-nil when BUFFER has an `erc-server-process' open or running."