I have investigated this. The problem is that pygopherd interprets the 'URL:'
path as a relative path as specified in [1]. The resulting path
('/ramone/URL:..') is not a valid URL path as in [2] because it does not start
with 'URL:' or '/URL'.  So it looks like pygopherd is doing the right thing.
But the bucktooth FAQ has another entry ([3]) that explicitly mentions the
usage of relative URL's in gophermaps.

For the submitter: A workaround is prepending a '/' to the path. This will
always work. And note that the usage of port 80 in your example is incorrect:
The host and port of a menu line should point to the local gopher server, not
the remote URL server, so that it can render a redirection document for old
clients.

For the maintainer: Attached patch fixes this bug by explicitly checking for
this case.

[1]: <gopher://gopher.floodgap.com/0/buck/dbrowse%3Ffaquse%201>
[2]: 
<gopher://quux.org/0/Archives/Mailing%20Lists/gopher/gopher.2002-02?/MBOX-MESSAGE/34>
[3]: <gopher://gopher.floodgap.com/0/buck/dbrowse?faquse%205>

Regards,
-- 
Jeroen Schot
diff -ru pygopherd-2.0.18.3.orig/pygopherd/handlers/gophermap.py pygopherd-2.0.18.3/pygopherd/handlers/gophermap.py
--- pygopherd-2.0.18.3.orig/pygopherd/handlers/gophermap.py	2008-03-02 22:51:01.000000000 +0100
+++ pygopherd-2.0.18.3/pygopherd/handlers/gophermap.py	2009-08-18 10:16:49.000000000 +0200
@@ -71,7 +71,7 @@
                     args[1] = args[0][1:] # Copy display string to selector
 
                 selector = args[1]
-                if selector[0] != '/': # Relative link
+                if not selector.startswith('URL:') and selector[0] != '/': # Relative link
                     selector = selectorbase + '/' + selector
                 
                 entry = gopherentry.GopherEntry(selector, self.config)

Attachment: signature.asc
Description: Digital signature

Reply via email to