[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1] Fix errors generated when multiple IRC clients talk to a sing
From: |
David Edmondson |
Subject: |
[PATCH v1] Fix errors generated when multiple IRC clients talk to a single IRC proxy. |
Date: |
Wed, 8 Oct 2014 15:03:17 +0100 |
User-agent: |
Notmuch/0.18.1 (http://notmuchmail.org) Emacs/24.3.1 (x86_64-pc-linux-gnu) |
If multiple IRC clients are connected to a single IRC proxy, an
instance of erc can receive the response to a NAMES request issued by
another client. Given that this instance of erc didn't initiate the
NAMES request, `erc-channel-begin-receiving-names' will not have been
called and `erc-channel-new-member-names' will be nil.
To avoid this causing problems, initialise
`erc-channel-new-member-names' by calling
`erc-channel-begin-receiving-names' if it is nil.
---
Michael Olson asked me to send this to emacs-devel after I had posted it
to erc-discuss. I'm not subscribed to the list - please include me
directly in any replies.
erc.el | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/erc.el b/erc.el
index 6e37f36..320cc02 100644
--- a/erc.el
+++ b/erc.el
@@ -4539,11 +4539,12 @@ received. Should be called with the current buffer set
to the
channel buffer.
See also `erc-channel-begin-receiving-names'."
- (maphash (lambda (nick user)
- (if (null (gethash nick erc-channel-new-member-names))
- (erc-remove-channel-user nick)))
- erc-channel-users)
- (setq erc-channel-new-member-names nil))
+ (when erc-channel-new-member-names
+ (maphash (lambda (nick user)
+ (if (null (gethash nick erc-channel-new-member-names))
+ (erc-remove-channel-user nick)))
+ erc-channel-users)
+ (setq erc-channel-new-member-names nil)))
(defun erc-parse-prefix ()
"Return an alist of valid prefix character types and their representations.
@@ -4600,6 +4601,11 @@ channel."
op 'off
voice 'off))
(when updatep
+ ;; If we didn't issue the NAMES request (consider two clients
+ ;; talking to an IRC proxy), `erc-channel-begin-receiving-names'
+ ;; will not have been called, so we have to do it here.
+ (unless erc-channel-new-member-names
+ (erc-channel-begin-receiving-names))
(puthash (erc-downcase name) t
erc-channel-new-member-names)
(erc-update-current-channel-member
--
2.1.0
- [PATCH v1] Fix errors generated when multiple IRC clients talk to a single IRC proxy.,
David Edmondson <=