GNU bug report logs -
#25349
25.1.90; erc join -vs- passwords
Previous Next
Reported by: Tom Tromey <tom <at> tromey.com>
Date: Wed, 4 Jan 2017 00:00:02 UTC
Severity: normal
Merged with 23438
Found in versions 24.5, 25.1.90
Done: Tom Tromey <tom <at> tromey.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 25349 in the body.
You can then email your comments to 25349 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Wed, 04 Jan 2017 00:00:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Tom Tromey <tom <at> tromey.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Wed, 04 Jan 2017 00:00:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
I'm using erc and joining a channel that has a channel password.
I've tried to put the password in my ~/.authinfo. However, there
are two erc bugs that prevent this from working.
1. In erc-join.el, various functions do:
(or erc-server-announced-name erc-session-server)
I think this is backward -- the announced name is the real name of
the host, but this can vary, so isn't useful as a .authinfo key.
e.g., for me, erc-server-announced-name is currently "belew.mozilla.org"
but erc-session-server is "irc.mozilla.org" -- which is what I used
to connect and is the name I'd want to use in .authinfo.
Changing the instances of this in erc-join.el makes auto-join work
for me.
2. erc-cmd-JOIN does not check authinfo at all. Maybe it should share
this code with erc-join.el.
In GNU Emacs 25.1.90.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.20.9)
of 2016-12-15 built on pokyo
Repository revision: 467768f64ee109fe127619e75fee7f3b5de1fec1
Windowing system distributor 'Fedora Project', version 11.0.11804000
System Description: Fedora release 24 (Twenty Four)
Configured using:
'configure --prefix=/home/tromey/Emacs/install
--with-file-notifications=no'
Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GCONF GSETTINGS NOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11
Important settings:
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=ibus
locale-coding-system: utf-8-unix
Major mode: JS
Minor modes in effect:
erc-spelling-mode: t
erc-truncate-mode: t
diff-auto-refine-mode: t
shell-dirtrack-mode: t
flyspell-mode: t
which-function-mode: t
projectile-global-mode: t
projectile-mode: t
erc-notify-mode: t
erc-notifications-mode: t
erc-services-mode: t
erc-list-mode: t
erc-menu-mode: t
erc-autojoin-mode: t
erc-ring-mode: t
erc-networks-mode: t
erc-pcomplete-mode: t
erc-track-mode: t
erc-track-minor-mode: t
erc-match-mode: t
erc-netsplit-mode: t
erc-hl-nicks-mode: t
erc-button-mode: t
erc-fill-mode: t
erc-stamp-mode: t
erc-irccontrols-mode: t
erc-noncommands-mode: t
erc-move-to-prompt-mode: t
erc-readonly-mode: t
flycheck-mode: t
savehist-mode: t
tooltip-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
auto-fill-function: do-auto-fill
transient-mark-mode: t
Recent messages:
Expiring articles...done
Are you sure you want to quit reading news? (y or n) y
Saving Gnus registry (73035 entries) to ~/.gnus.registry.eieio...
Saving Gnus registry (size 73035) to ~/.gnus.registry.eieio...done
Saving file /home/tromey/.newsrc...
Wrote /home/tromey/.newsrc
Saving /home/tromey/.newsrc.eld...
Saving file /home/tromey/.newsrc.eld...
Wrote /home/tromey/.newsrc.eld
Saving /home/tromey/.newsrc.eld...done
Load-path shadows:
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/25.1.90/lisp/play/bubbles
Features:
(shadow emacsbug debug ffap conf-mode css-mode descr-text gud eieio-opt
speedbar sb-image ezimage dframe vc-annotate macros dwarf-mode rust-mode
doctor gnus-fun find-dired dxr tabify man perl-mode sh-script smie
executable smerge-mode etags xref project git-commit-mode find-file js
sgml-mode iso-transl mailalias bbdb-sc supercite regi mail-hist nnir
idutils python tramp-sh tramp tramp-compat tramp-loaddefs trampver
ucs-normalize git-rebase-mode derived term/xterm xterm org-element
org-rmail org-mhe org-irc org-info org-gnus org-docview doc-view
jka-compr image-mode org-bibtex bibtex org-bbdb org-w3m org org-macro
org-footnote org-pcomplete org-list org-faces org-entities noutline
outline org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-src ob-keys ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs log-view gnus-html url-cache mm-url shr-color url-http url
url-proxy url-privacy url-history url-auth url-cookie url-domsuf url-gw
url-expand url-methods url-util url-parse url-vars shr dom browse-url
erc-spelling erc-truncate bbdb-gui bbdb-hooks bbdb-rmail rmailsum rmail
vc-mtn vc-hg sort smiley gnus-cite flow-fill mm-archive gnus-async
gnus-bcklg qp gnus-ml disp-table gnus-topic nndraft nnmh nnfolder utf-7
bbdb-gnus bbdb-snarf mail-extr bbdb-com network-stream nsm starttls
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp
gnus-cache gnus-registry registry eieio-compat eieio-base gnus-art mm-uu
mml2015 mm-view mml-smime smime dig mailcap gnus-sum gnus-group
gnus-undo smtpmail sendmail gnus-start gnus-cloud nnimap nnmail
mail-source tls gnutls utf7 netrc nnoo parse-time gnus-spec gnus-int
gnus-range gnus-win gnus gnus-ems nnheader dabbrev log-edit message idna
rfc822 mml mml-sec epg mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 ietf-drums mailabbrev mail-utils gmm-utils mailheader
pcvs-util copyright misearch multi-isearch add-log bug-reference vc-bzr
vc-src vc-sccs vc-svn vc-cvs vc-rcs vc-git diff-mode cc-mode cc-fonts
cc-guess cc-menus cc-cmds shell flyspell ispell diminish appt diary-lib
diary-loaddefs cal-menu calendar cal-loaddefs which-func imenu edmacro
kmacro projectile grep compile ibuf-ext ibuffer minimap autorevert
filenotify desktop frameset cus-start cus-load erc-notify
erc-desktop-notifications notifications dbus xml erc-services erc-list
erc-menu erc-join erc-ring erc-networks erc-pcomplete pcomplete
erc-track erc-match erc-netsplit erc-hl-nicks easy-mmode color
erc-button erc-fill erc-stamp wid-edit erc-goodies erc erc-backend
erc-compat format-spec auth-source cl-seq eieio gnus-util mm-util
help-fns mail-prsvr password-cache thingatpt pp status dired-aux dired-x
dired warnings advice vc-dir ewoc vc vc-dispatcher flycheck json map
find-func rx subr-x dash cc-styles cc-align cc-engine cc-vars cc-defs
bbdb cl timezone ange-ftp comint ansi-color ring server savehist
finder-inf bbdb-autoloads dwarf-mode-autoloads eieio-core cl-macs
lisppaste-autoloads pydoc-info-autoloads info-look weblogger-autoloads
info package epg-config seq byte-opt gv bytecomp byte-compile cl-extra
help-mode easymenu cconv cl-loaddefs pcase cl-lib time-date mule-util
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode register
page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
font-lock syntax facemenu font-core frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese charscript case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote dbusbind inotify dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)
Memory information:
((conses 16 4956169 2764016)
(symbols 48 147899 536)
(miscs 40 49685 30197)
(strings 32 1374486 796506)
(string-bytes 1 59281313)
(vectors 16 171120)
(vector-slots 8 4046984 214559)
(floats 8 1121 2125)
(intervals 56 350578 9418)
(buffers 976 761)
(heap 1024 613853 395688))
Tom
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Wed, 04 Jan 2017 03:49:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 25349 <at> debbugs.gnu.org (full text, mbox):
Using authinfo.gpg works fine for me(and lots of other people). There's
probably a problem in your configuration.
Try setting auth-source-debug to a more verbose level and see what
messages you get.
--
Best Regards,
Nikolay Kudryavtsev
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Wed, 04 Jan 2017 11:08:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 25349 <at> debbugs.gnu.org (full text, mbox):
>>>>> "Nikolay" == Nikolay Kudryavtsev <nikolay.kudryavtsev <at> gmail.com> writes:
Nikolay> Using authinfo.gpg works fine for me(and lots of other
Nikolay> people). There's probably a problem in your configuration.
Nikolay> Try setting auth-source-debug to a more verbose level and see what
Nikolay> messages you get.
What I did is debug erc-server-join-channel and notice that it was
passing in the wrong server name. Are you specifically using authinfo
with erc and a channel password?
Tom
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Wed, 04 Jan 2017 15:16:02 GMT)
Full text and
rfc822 format available.
Message #14 received at submit <at> debbugs.gnu.org (full text, mbox):
>>>>> "Tom" == Tom Tromey <tom <at> tromey.com> writes:
Tom> I'm using erc and joining a channel that has a channel password.
Tom> I've tried to put the password in my ~/.authinfo. However, there
Tom> are two erc bugs that prevent this from working.
This patch seems to work for me.
Tom
diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el
index 151ea15..9474b11 100644
--- a/lisp/erc/erc-join.el
+++ b/lisp/erc/erc-join.el
@@ -129,7 +129,7 @@ erc-autojoin-after-ident
(setq erc--autojoin-timer
(erc-cancel-timer erc--autojoin-timer)))
(when (eq erc-autojoin-timing 'ident)
- (let ((server (or erc-server-announced-name erc-session-server))
+ (let ((server (or erc-session-server erc-server-announced-name))
(joined (mapcar (lambda (buf)
(with-current-buffer buf (erc-default-target)))
(erc-channel-list erc-server-process))))
@@ -166,27 +166,12 @@ erc-autojoin-channels
;; Return nil to avoid stomping on any other hook funcs.
nil)
-(defun erc-server-join-channel (server channel)
- (let* ((secret (plist-get (nth 0 (auth-source-search
- :max 1
- :host server
- :port "irc"
- :user channel))
- :secret))
- (password (if (functionp secret)
- (funcall secret)
- secret)))
- (erc-server-send (concat "JOIN " channel
- (if password
- (concat " " password)
- "")))))
-
(defun erc-autojoin-add (proc parsed)
"Add the channel being joined to `erc-autojoin-channels-alist'."
(let* ((chnl (erc-response.contents parsed))
(nick (car (erc-parse-user (erc-response.sender parsed))))
(server (with-current-buffer (process-buffer proc)
- (or erc-server-announced-name erc-session-server))))
+ (or erc-session-server erc-server-announced-name))))
(when (erc-current-nick-p nick)
(when (and erc-autojoin-domain-only
(string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server))
@@ -209,7 +194,7 @@ erc-autojoin-remove
(let* ((chnl (car (erc-response.command-args parsed)))
(nick (car (erc-parse-user (erc-response.sender parsed))))
(server (with-current-buffer (process-buffer proc)
- (or erc-server-announced-name erc-session-server))))
+ (or erc-session-server erc-server-announced-name))))
(when (erc-current-nick-p nick)
(when (and erc-autojoin-domain-only
(string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 3dcb7ef..3cc9f52 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -3022,6 +3022,23 @@ erc-cmd-HELP
(defalias 'erc-cmd-H 'erc-cmd-HELP)
(put 'erc-cmd-HELP 'process-not-needed t)
+(defun erc-server-join-channel (server channel &optional secret)
+ (let* ((secret (or secret
+ (plist-get (nth 0 (auth-source-search
+ :max 1
+ :host server
+ :port "irc"
+ :user channel))
+ :secret)))
+ (password (if (functionp secret)
+ (funcall secret)
+ secret)))
+ (erc-log (format "cmd: JOIN: %s" channel))
+ (erc-server-send (concat "JOIN " channel
+ (if password
+ (concat " " password)
+ "")))))
+
(defun erc-cmd-JOIN (channel &optional key)
"Join the channel given in CHANNEL, optionally with KEY.
If CHANNEL is specified as \"-invite\", join the channel to which you
@@ -3041,10 +3058,9 @@ erc-cmd-JOIN
(if (erc-member-ignore-case chnl joined-channels)
(switch-to-buffer (car (erc-member-ignore-case chnl
joined-channels)))
- (erc-log (format "cmd: JOIN: %s" chnl))
- (erc-server-send (if (and chnl key)
- (format "JOIN %s %s" chnl key)
- (format "JOIN %s" chnl)))))))
+ (let ((server (with-current-buffer (process-buffer erc-server-process)
+ (or erc-session-server erc-server-announced-name))))
+ (erc-server-join-channel server chnl key))))))
t)
(defalias 'erc-cmd-CHANNEL 'erc-cmd-JOIN)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Wed, 04 Jan 2017 15:16:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 25349 <at> debbugs.gnu.org (full text, mbox):
I'm not sure if my earlier patch made it through.
This seems to work for me.
Tom
diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el
index 151ea15..9474b11 100644
--- a/lisp/erc/erc-join.el
+++ b/lisp/erc/erc-join.el
@@ -129,7 +129,7 @@ erc-autojoin-after-ident
(setq erc--autojoin-timer
(erc-cancel-timer erc--autojoin-timer)))
(when (eq erc-autojoin-timing 'ident)
- (let ((server (or erc-server-announced-name erc-session-server))
+ (let ((server (or erc-session-server erc-server-announced-name))
(joined (mapcar (lambda (buf)
(with-current-buffer buf (erc-default-target)))
(erc-channel-list erc-server-process))))
@@ -166,27 +166,12 @@ erc-autojoin-channels
;; Return nil to avoid stomping on any other hook funcs.
nil)
-(defun erc-server-join-channel (server channel)
- (let* ((secret (plist-get (nth 0 (auth-source-search
- :max 1
- :host server
- :port "irc"
- :user channel))
- :secret))
- (password (if (functionp secret)
- (funcall secret)
- secret)))
- (erc-server-send (concat "JOIN " channel
- (if password
- (concat " " password)
- "")))))
-
(defun erc-autojoin-add (proc parsed)
"Add the channel being joined to `erc-autojoin-channels-alist'."
(let* ((chnl (erc-response.contents parsed))
(nick (car (erc-parse-user (erc-response.sender parsed))))
(server (with-current-buffer (process-buffer proc)
- (or erc-server-announced-name erc-session-server))))
+ (or erc-session-server erc-server-announced-name))))
(when (erc-current-nick-p nick)
(when (and erc-autojoin-domain-only
(string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server))
@@ -209,7 +194,7 @@ erc-autojoin-remove
(let* ((chnl (car (erc-response.command-args parsed)))
(nick (car (erc-parse-user (erc-response.sender parsed))))
(server (with-current-buffer (process-buffer proc)
- (or erc-server-announced-name erc-session-server))))
+ (or erc-session-server erc-server-announced-name))))
(when (erc-current-nick-p nick)
(when (and erc-autojoin-domain-only
(string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 3dcb7ef..3cc9f52 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -3022,6 +3022,23 @@ erc-cmd-HELP
(defalias 'erc-cmd-H 'erc-cmd-HELP)
(put 'erc-cmd-HELP 'process-not-needed t)
+(defun erc-server-join-channel (server channel &optional secret)
+ (let* ((secret (or secret
+ (plist-get (nth 0 (auth-source-search
+ :max 1
+ :host server
+ :port "irc"
+ :user channel))
+ :secret)))
+ (password (if (functionp secret)
+ (funcall secret)
+ secret)))
+ (erc-log (format "cmd: JOIN: %s" channel))
+ (erc-server-send (concat "JOIN " channel
+ (if password
+ (concat " " password)
+ "")))))
+
(defun erc-cmd-JOIN (channel &optional key)
"Join the channel given in CHANNEL, optionally with KEY.
If CHANNEL is specified as \"-invite\", join the channel to which you
@@ -3041,10 +3058,9 @@ erc-cmd-JOIN
(if (erc-member-ignore-case chnl joined-channels)
(switch-to-buffer (car (erc-member-ignore-case chnl
joined-channels)))
- (erc-log (format "cmd: JOIN: %s" chnl))
- (erc-server-send (if (and chnl key)
- (format "JOIN %s %s" chnl key)
- (format "JOIN %s" chnl)))))))
+ (let ((server (with-current-buffer (process-buffer erc-server-process)
+ (or erc-session-server erc-server-announced-name))))
+ (erc-server-join-channel server chnl key))))))
t)
(defalias 'erc-cmd-CHANNEL 'erc-cmd-JOIN)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Thu, 05 Jan 2017 02:21:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 25349 <at> debbugs.gnu.org (full text, mbox):
Oh, you're talking about password protected channels specifically. I
see. Yeah, this patch makes sense.
Though one thing - I'm not sure whether you even need to use "or" here.
Would there ever be a case where erc-session-server is nil, but there is
erc-server-announced-name?
--
Best Regards,
Nikolay Kudryavtsev
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Thu, 05 Jan 2017 04:44:01 GMT)
Full text and
rfc822 format available.
Message #23 received at 25349 <at> debbugs.gnu.org (full text, mbox):
>>>>> "Nikolay" == Nikolay Kudryavtsev <nikolay.kudryavtsev <at> gmail.com> writes:
Nikolay> Though one thing - I'm not sure whether you even need to use "or"
Nikolay> here. Would there ever be a case where erc-session-server is nil, but
Nikolay> there is erc-server-announced-name?
I don't actually know, so I just swapped them out of paranoia.
Tom
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Thu, 05 Jan 2017 22:44:01 GMT)
Full text and
rfc822 format available.
Message #26 received at 25349 <at> debbugs.gnu.org (full text, mbox):
Tom> I'm not sure if my earlier patch made it through.
Tom> This seems to work for me.
Well, it worked for an explicit /join, but didn't correctly autojoin.
I'll try to debug it some more.
Tom
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Fri, 06 Jan 2017 15:15:01 GMT)
Full text and
rfc822 format available.
Message #29 received at 25349 <at> debbugs.gnu.org (full text, mbox):
Tom> Well, it worked for an explicit /join, but didn't correctly autojoin.
Tom> I'll try to debug it some more.
erc-autojoin-channels was just using the server that was passed in, but
it should have been checking erc-session-server instead, like the other
code.
The appended works for me for both autojoin and explicit join. I want
to check it in, but it would probably be good if someone more familiar
with ERC took a look at it.
Tom
diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el
index 151ea15..aa83ffe 100644
--- a/lisp/erc/erc-join.el
+++ b/lisp/erc/erc-join.el
@@ -129,7 +129,7 @@ erc-autojoin-after-ident
(setq erc--autojoin-timer
(erc-cancel-timer erc--autojoin-timer)))
(when (eq erc-autojoin-timing 'ident)
- (let ((server (or erc-server-announced-name erc-session-server))
+ (let ((server (or erc-session-server erc-server-announced-name))
(joined (mapcar (lambda (buf)
(with-current-buffer buf (erc-default-target)))
(erc-channel-list erc-server-process))))
@@ -155,38 +155,24 @@ erc-autojoin-channels
;; `erc-autojoin-timing' is `connect':
(dolist (l erc-autojoin-channels-alist)
(when (string-match (car l) server)
- (dolist (chan (cdr l))
- (let ((buffer (erc-get-buffer chan)))
- ;; Only auto-join the channels that we aren't already in
- ;; using a different nick.
- (when (or (not buffer)
- (not (with-current-buffer buffer
- (erc-server-process-alive))))
- (erc-server-join-channel server chan)))))))
+ (let ((server (or erc-session-server erc-server-announced-name)))
+ (dolist (chan (cdr l))
+ (let ((buffer (erc-get-buffer chan)))
+ ;; Only auto-join the channels that we aren't already in
+ ;; using a different nick.
+ (when (or (not buffer)
+ (not (with-current-buffer buffer
+ (erc-server-process-alive))))
+ (erc-server-join-channel server chan))))))))
;; Return nil to avoid stomping on any other hook funcs.
nil)
-(defun erc-server-join-channel (server channel)
- (let* ((secret (plist-get (nth 0 (auth-source-search
- :max 1
- :host server
- :port "irc"
- :user channel))
- :secret))
- (password (if (functionp secret)
- (funcall secret)
- secret)))
- (erc-server-send (concat "JOIN " channel
- (if password
- (concat " " password)
- "")))))
-
(defun erc-autojoin-add (proc parsed)
"Add the channel being joined to `erc-autojoin-channels-alist'."
(let* ((chnl (erc-response.contents parsed))
(nick (car (erc-parse-user (erc-response.sender parsed))))
(server (with-current-buffer (process-buffer proc)
- (or erc-server-announced-name erc-session-server))))
+ (or erc-session-server erc-server-announced-name))))
(when (erc-current-nick-p nick)
(when (and erc-autojoin-domain-only
(string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server))
@@ -209,7 +195,7 @@ erc-autojoin-remove
(let* ((chnl (car (erc-response.command-args parsed)))
(nick (car (erc-parse-user (erc-response.sender parsed))))
(server (with-current-buffer (process-buffer proc)
- (or erc-server-announced-name erc-session-server))))
+ (or erc-session-server erc-server-announced-name))))
(when (erc-current-nick-p nick)
(when (and erc-autojoin-domain-only
(string-match "[^.\n]+\\.\\([^.\n]+\\.[^.\n]+\\)$" server))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 3dcb7ef..3cc9f52 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -3022,6 +3022,23 @@ erc-cmd-HELP
(defalias 'erc-cmd-H 'erc-cmd-HELP)
(put 'erc-cmd-HELP 'process-not-needed t)
+(defun erc-server-join-channel (server channel &optional secret)
+ (let* ((secret (or secret
+ (plist-get (nth 0 (auth-source-search
+ :max 1
+ :host server
+ :port "irc"
+ :user channel))
+ :secret)))
+ (password (if (functionp secret)
+ (funcall secret)
+ secret)))
+ (erc-log (format "cmd: JOIN: %s" channel))
+ (erc-server-send (concat "JOIN " channel
+ (if password
+ (concat " " password)
+ "")))))
+
(defun erc-cmd-JOIN (channel &optional key)
"Join the channel given in CHANNEL, optionally with KEY.
If CHANNEL is specified as \"-invite\", join the channel to which you
@@ -3041,10 +3058,9 @@ erc-cmd-JOIN
(if (erc-member-ignore-case chnl joined-channels)
(switch-to-buffer (car (erc-member-ignore-case chnl
joined-channels)))
- (erc-log (format "cmd: JOIN: %s" chnl))
- (erc-server-send (if (and chnl key)
- (format "JOIN %s %s" chnl key)
- (format "JOIN %s" chnl)))))))
+ (let ((server (with-current-buffer (process-buffer erc-server-process)
+ (or erc-session-server erc-server-announced-name))))
+ (erc-server-join-channel server chnl key))))))
t)
(defalias 'erc-cmd-CHANNEL 'erc-cmd-JOIN)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Tue, 10 Jan 2017 03:36:01 GMT)
Full text and
rfc822 format available.
Message #32 received at 25349 <at> debbugs.gnu.org (full text, mbox):
>>>>> "Tom" == Tom Tromey <tom <at> tromey.com> writes:
Tom> The appended works for me for both autojoin and explicit join. I want
Tom> to check it in, but it would probably be good if someone more familiar
Tom> with ERC took a look at it.
Further testing revealed a bug.
The other day, at the end of the day, I did a /gquit in ERC.
Then, this morning, I reconnected.
Normally this causes ERC to associate the various channel buffers with
the new connection to the server. However, with this patch in place,
this association did not occur and I was given a new buffer for each
channel (the old buffers being "closed").
I haven't tried debugging this any further yet.
Tom
Merged 23438 25349.
Request was from
npostavs <at> users.sourceforge.net
to
control <at> debbugs.gnu.org
.
(Thu, 12 Jan 2017 00:33:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25349
; Package
emacs
.
(Wed, 01 Feb 2017 03:02:01 GMT)
Full text and
rfc822 format available.
Message #37 received at 25349 <at> debbugs.gnu.org (full text, mbox):
>>>>> "Tom" == Tom Tromey <tom <at> tromey.com> writes:
Tom> Normally this causes ERC to associate the various channel buffers with
Tom> the new connection to the server. However, with this patch in place,
Tom> this association did not occur and I was given a new buffer for each
Tom> channel (the old buffers being "closed").
Subsequent reconnects haven't had this problem, so I haven't been able
to debug. Maybe I've just been lucky and haven't been connected to a
different server.
Tom
Reply sent
to
Tom Tromey <tom <at> tromey.com>
:
You have taken responsibility.
(Sat, 06 May 2017 03:48:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
Tom Tromey <tom <at> tromey.com>
:
bug acknowledged by developer.
(Sat, 06 May 2017 03:48:01 GMT)
Full text and
rfc822 format available.
Message #42 received at 25349-done <at> debbugs.gnu.org (full text, mbox):
I've checked in the patch.
Tom
Reply sent
to
Tom Tromey <tom <at> tromey.com>
:
You have taken responsibility.
(Sat, 06 May 2017 03:48:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Jim Crossley <jim <at> crossleys.org>
:
bug acknowledged by developer.
(Sat, 06 May 2017 03:48:02 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sat, 03 Jun 2017 11:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 8 years and 20 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.