bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#32723: [PATCH] Fix erc-autojoin for same channel names on multiple s


From: Martin Kletzander
Subject: bug#32723: [PATCH] Fix erc-autojoin for same channel names on multiple servers
Date: Tue, 19 May 2020 20:25:24 +0200

On Mon, May 11, 2020 at 05:06:54PM +0200, Martin Kletzander wrote:
On Sun, May 10, 2020 at 09:32:38PM +0200, Kevin Brubeck Unhammer wrote:
Martin Kletzander <nert.pinx@gmail.com> čálii:

When auto-joining channel with the same name on
multiple channels the auto-join will go over the
list of channels and for each one it checks if
there is a buffer and alive server process.
However it does not check if the server process
matches the server being currently processed for
auto-joining.

This happens since commit "Don't join erc channels
doubly"

Fix it by checking if the currently processed
server matches the erc process name of the already
joined channel.

That's not always going to match though. The car's of
erc-autojoin-channels contain the values of erc-server-announced-name or
erc-session-server, not the process-name of
erc-server-process. E.g. when I join my weechat relay,
erc-session-server is "example.com" and erc-server-announced-name is
"weechat.relay.irc" while (process-name erc-server-process) is
"erc-example.com-9001<1>".


Oh, I completely forgot what I was doing there, I just know that with this patch
it is fixed for me, even though it might be dependent on various quirks that
just happen on my client (be it joining servers with very different latency, not
using autojoin twice or something completely different).

Also, the check is against the current erc-server-process (for the
server being joined). Isn't the intention of the patch to check against
the candidate buffer's server-process?


So I just tried emacs-27.0.91 and with your approach it does not join any
channel on any server.  With my patch (which I just learned is in, I found out
that it could not be applied locally) it joins all channels, but there is only
one of those two that have the same name.  However if I try joining the other
one manually it joins, but does not create a buffer.  It only gets created once
someone posts to the channel.  I actually started writing that it does not get
joined while a message appeared out of nowhere, I thought it was a private query
because there was no header, nothing.  Only after that I realised it has a name
of the channel, but on the second server, so I deleted that part of the e-mail!

I think there is something wrong with some other part of erc-join (or erc), so
for a while I'm sticking to 26.* with my patch on top of it, but sooner or later
I'll have to figure that out (or someone else, maybe).  Unfortunately I'm
swamped with more important things lately.


As I said, I do not remember what exactly was the reason for this particular way
of dealing with it.  I definitely made some mistakes.

I would expect something like

              (when (or (not buffer)
                        ;; If the same channel is joined on another
                        ;; server the best-effort is to just join
                       (not (with-current-buffer buffer
                              (or (string-match-p (car l) erc-session-server)
                                  (string-match-p (car l) 
erc-session-announced-name))))
                        (not (with-current-buffer buffer
                               (erc-server-process-alive))))
                (erc-server-join-channel server chan))


If that works, then I'm fine with it. I can test it later on and let you know if
it works for me.

Thanks,
Martin





reply via email to

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