erc-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Erc-discuss] [PATCH v1] Fix errors generated when multiple IRC clie


From: Michael Olson
Subject: Re: [Erc-discuss] [PATCH v1] Fix errors generated when multiple IRC clients talk to a single IRC proxy.
Date: Wed, 8 Oct 2014 11:01:08 -0700

Looks good, feel free to send it to the emacs-devel list as well, so they can apply it to the version of ERC in Emacs.

On Wed, Oct 8, 2014 at 7:03 AM, David Edmondson <address@hidden> wrote:
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.
---

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


_______________________________________________
Erc-discuss mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/erc-discuss


reply via email to

[Prev in Thread] Current Thread [Next in Thread]