* bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly
@ 2024-07-06 12:22 Yikai Zhao
2024-07-06 15:02 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 7+ messages in thread
From: Yikai Zhao @ 2024-07-06 12:22 UTC (permalink / raw)
To: 71972
To reproduce:
(tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
Expected result: the result "port" should be "2202"
Current result: the result "port" is empty
In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.22.30, cairo version 1.15.10) of 2024-07-06 built on a40438a00efa
Repository revision: bd86a6c4fde1aa42ea9e8b5434f0cb63f8d52684
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101013
System Description: Gentoo Linux
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly
2024-07-06 12:22 bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly Yikai Zhao
@ 2024-07-06 15:02 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-06 17:00 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 7+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-06 15:02 UTC (permalink / raw)
To: Yikai Zhao; +Cc: 71972
Yikai Zhao <yikai@z1k.dev> writes:
Hi,
> To reproduce:
>
> (tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
>
> Expected result: the result "port" should be "2202"
>
> Current result: the result "port" is empty
Indeed.
--8<---------------cut here---------------start------------->8---
(tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
=> (tramp-file-name "ssh" nil nil "2001::abcd#2202" nil "/tmp/xxx" nil)
--8<---------------cut here---------------end--------------->8---
That is a structure, which has "2001::abcd#2202" as host name. Ouch.
Will see how I could fix it.
Best regards, Michael.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly
2024-07-06 15:02 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-06 17:00 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 6:31 ` Yikai Zhao
0 siblings, 1 reply; 7+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-06 17:00 UTC (permalink / raw)
To: Yikai Zhao; +Cc: 71972
[-- Attachment #1: Type: text/plain, Size: 393 bytes --]
Michael Albinus <michael.albinus@gmx.de> writes:
Hi,
> (tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
> => (tramp-file-name "ssh" nil nil "2001::abcd#2202" nil "/tmp/xxx" nil)
>
> That is a structure, which has "2001::abcd#2202" as host name. Ouch.
>
> Will see how I could fix it.
Could you please try the appended patch? It ought to fix the problem.
Best regards, Michael.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 573 bytes --]
diff --git a/lisp/tramp.el b/lisp/tramp.el
index f97ed66c..b35c2017 100644
--- a/lisp/tramp.el
+++ b/lisp/tramp.el
@@ -1061,7 +1061,10 @@ Derived from `tramp-prefix-port-format'.")
(defconst tramp-host-with-port-regexp
(rx
- (group (regexp tramp-host-regexp))
+ (group (| (regexp tramp-host-regexp)
+ (: (regexp tramp-prefix-ipv6-regexp)
+ (? (regexp tramp-ipv6-regexp))
+ (regexp tramp-postfix-ipv6-regexp))))
(regexp tramp-prefix-port-regexp)
(group (regexp tramp-port-regexp)))
"Regexp matching host names with port numbers.")
^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly
2024-07-06 17:00 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-07 6:31 ` Yikai Zhao
2024-07-07 10:28 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 7+ messages in thread
From: Yikai Zhao @ 2024-07-07 6:31 UTC (permalink / raw)
To: Michael Albinus; +Cc: 71972
Hi,
Thanks for the patch. However, with this patch applied to master, the result is:
(tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
=> (tramp-file-name "ssh" nil nil #("Oldtown" 0 7 (tramp-default t))
"2202" "/tmp/xxx" nil) [2 times]
("oldtown" is my local hostname). Although the port is correctly
parsed, the host is now incorrect.
Also note that in master, the correct file path for tramp.el is
lisp/net/tramp.el, so I had to manually edit your patch before
applying it. What version is your patch based on? Maybe the result is
different in different versions?
On Sun, Jul 7, 2024 at 1:00 AM Michael Albinus <michael.albinus@gmx.de> wrote:
>
> Michael Albinus <michael.albinus@gmx.de> writes:
>
> Hi,
>
> > (tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
> > => (tramp-file-name "ssh" nil nil "2001::abcd#2202" nil "/tmp/xxx" nil)
> >
> > That is a structure, which has "2001::abcd#2202" as host name. Ouch.
> >
> > Will see how I could fix it.
>
> Could you please try the appended patch? It ought to fix the problem.
>
> Best regards, Michael.
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly
2024-07-07 6:31 ` Yikai Zhao
@ 2024-07-07 10:28 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 15:56 ` Yikai Zhao
0 siblings, 1 reply; 7+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-07 10:28 UTC (permalink / raw)
To: Yikai Zhao; +Cc: 71972
[-- Attachment #1: Type: text/plain, Size: 975 bytes --]
Yikai Zhao <yikai@z1k.dev> writes:
> Hi,
Hi,
> Thanks for the patch. However, with this patch applied to master, the result is:
>
> (tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
> => (tramp-file-name "ssh" nil nil #("Oldtown" 0 7 (tramp-default t))
> "2202" "/tmp/xxx" nil) [2 times]
>
> ("oldtown" is my local hostname). Although the port is correctly
> parsed, the host is now incorrect.
Indeed, we have a race condition. tramp-host-with-port-regexp is defined
before tramp-set-syntax has run.
Could you, please, try the appended patch indeed?
> Also note that in master, the correct file path for tramp.el is
> lisp/net/tramp.el, so I had to manually edit your patch before
> applying it. What version is your patch based on? Maybe the result is
> different in different versions?
I develop in the Tramp git repo. The files are identical with the ones
in the Emacs git repo. However, there is a different directory structure.
Best regards, Michael.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1682 bytes --]
diff --git a/lisp/tramp.el b/lisp/tramp.el
index f97ed66c..f960b1a3 100644
--- a/lisp/tramp.el
+++ b/lisp/tramp.el
@@ -78,6 +78,7 @@
(defvar tramp-postfix-ipv6-regexp)
(defvar tramp-postfix-host-format)
(defvar tramp-postfix-host-regexp)
+(defvar tramp-host-with-port-regexp)
(defvar tramp-remote-file-name-spec-regexp)
(defvar tramp-file-name-structure)
(defvar tramp-file-name-regexp)
@@ -878,6 +879,7 @@ to be set, depending on VALUE."
tramp-postfix-ipv6-regexp (tramp-build-postfix-ipv6-regexp)
tramp-postfix-host-format (tramp-build-postfix-host-format)
tramp-postfix-host-regexp (tramp-build-postfix-host-regexp)
+ tramp-host-with-port-regexp (tramp-build-host-with-port-regexp)
tramp-remote-file-name-spec-regexp
(tramp-build-remote-file-name-spec-regexp)
tramp-file-name-structure (tramp-build-file-name-structure)
@@ -1059,11 +1061,18 @@ Derived from `tramp-prefix-port-format'.")
(defconst tramp-port-regexp (rx (+ digit))
"Regexp matching port numbers.")
-(defconst tramp-host-with-port-regexp
+(defun tramp-build-host-with-port-regexp ()
+ "Return `tramp-host-with-port-regexp'."
(rx
- (group (regexp tramp-host-regexp))
+ (group (| (regexp tramp-host-regexp)
+ (: (regexp (tramp-build-prefix-ipv6-regexp))
+ (? (regexp tramp-ipv6-regexp))
+ (regexp (tramp-build-postfix-ipv6-regexp)))))
(regexp tramp-prefix-port-regexp)
- (group (regexp tramp-port-regexp)))
+ (group (regexp tramp-port-regexp))))
+
+(defvar tramp-host-with-port-regexp
+ nil ; Initialized when defining `tramp-syntax'!
"Regexp matching host names with port numbers.")
(defconst tramp-postfix-hop-format "|"
^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly
2024-07-07 10:28 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-07 15:56 ` Yikai Zhao
2024-07-07 17:47 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 7+ messages in thread
From: Yikai Zhao @ 2024-07-07 15:56 UTC (permalink / raw)
To: Michael Albinus; +Cc: 71972
Thanks! I can confirm this patch fixes the issue for me.
BTW, is there any chance that this patch would make it into emacs 30 release?
Regards, Yikai
On Sun, Jul 7, 2024 at 6:28 PM Michael Albinus <michael.albinus@gmx.de> wrote:
>
> Yikai Zhao <yikai@z1k.dev> writes:
>
> > Hi,
>
> Hi,
>
> > Thanks for the patch. However, with this patch applied to master, the result is:
> >
> > (tramp-dissect-file-name "/ssh:[2001::abcd]#2202:/tmp/xxx")
> > => (tramp-file-name "ssh" nil nil #("Oldtown" 0 7 (tramp-default t))
> > "2202" "/tmp/xxx" nil) [2 times]
> >
> > ("oldtown" is my local hostname). Although the port is correctly
> > parsed, the host is now incorrect.
>
> Indeed, we have a race condition. tramp-host-with-port-regexp is defined
> before tramp-set-syntax has run.
>
> Could you, please, try the appended patch indeed?
>
> > Also note that in master, the correct file path for tramp.el is
> > lisp/net/tramp.el, so I had to manually edit your patch before
> > applying it. What version is your patch based on? Maybe the result is
> > different in different versions?
>
> I develop in the Tramp git repo. The files are identical with the ones
> in the Emacs git repo. However, there is a different directory structure.
>
> Best regards, Michael.
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly
2024-07-07 15:56 ` Yikai Zhao
@ 2024-07-07 17:47 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 7+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-07 17:47 UTC (permalink / raw)
To: Yikai Zhao; +Cc: 71972-done
Version: 30.1
Yikai Zhao <yikai@z1k.dev> writes:
Hi Yikai,
> Thanks! I can confirm this patch fixes the issue for me.
Thanks for the feedback.
> BTW, is there any chance that this patch would make it into emacs 30 release?
Yep. I've pushed the patch to the emacs-30 branch, closing this bug.
> Regards, Yikai
Best regards, Michael.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-07-07 17:47 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-06 12:22 bug#71972: 31.0.50; Tramp does not parse ipv6 address with port correctly Yikai Zhao
2024-07-06 15:02 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-06 17:00 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 6:31 ` Yikai Zhao
2024-07-07 10:28 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 15:56 ` Yikai Zhao
2024-07-07 17:47 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).