Re: Save link as... silent failure on gopher protocol

Diego <[email protected]> Sun, 12 Jul 2026 21:56:35 +0200
Newsgroups gmane.comp.web.dillo.devel
Message-ID <CAD0qOrTrFeSRXshpVf=YoDNzKdvHGEMsx4amVZZDjLhfO6-=Bg@mail.gmail.com>
--===============5786957469510144123==
Content-Type: multipart/alternative; boundary="000000000000da163906566f5fdf"

--000000000000da163906566f5fdf
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Very thanks.
I await.


Chers
Diego.

El dom, 12 jul 2026 a las 21:46, Rodrigo Arias (<[email protected]>)
escribi=C3=B3:

> Hi,
>
> On Thu, Jul 09, 2026 at 01:37:14AM +0200, Diego wrote:
> >=C2=BFCan i have some feedback? =C2=BFDo the patchs work for you? =C2=BF=
do it seem a
> >practical idea? =C2=BFetc?
>
> Thanks, I received the patches but I haven't had time to look at this
> yet, I have have it in my queue.
>
> Best,
> Rodrigo.
>
> >
> >cheers!
> >Diego.
> >
> >
> >El vie, 3 jul 2026 a las 14:17, Diego (<[email protected]>)
> escribi=C3=B3:
> >
> >> Hello, I'm sending two patches with an idea to solve this problem.
> >> It's a proof of concept that I'm offering to develop and complete,
> >> although I have very little free time.
> >>
> >> The first patch works with the latest dillo release (3.3.0) but also
> works
> >> with the current repository.
> >> It implements changes in dillo, download.dpi, and the file and data DP=
Is
> >> as examples.
> >> The second patch works with the latest gopher.dpi repository.
> >>
> >> The main idea is that the DPIs that handle protocols save the URL and
> >> write the file themselves, coordinating with download.dpi and dillo.
> >>
> >> To do this, they implement a new DPI command: `save_url`
> >> d_cmd =3D a_Dpip_build_cmd("cmd=3D%s url=3D%s destination=3D%s", "save=
_url",
> url,
> >> dl_dest);
> >>
> >> Dillo initiates a download, sending it to download.dpi as before. If
> it's
> >> HTTP* or FTP*, it downloads directly as it does now. Otherwise, it wil=
l
> >> send a `save_url` command to Dillo to coordinate. This allows Dillo to
> >> notify the user, verify the security of the change, etc.Currently, Dil=
lo
> >> only checks if there's a DPI that handles the requested protocol.
> >>
> >> (A new function (`a_Dpiapi_is_service_handled(server_str)`) queries
> `dpid`
> >> without executing the DPI. No code is modified in `dpid`. Modifying
> `dpid`
> >> or executing the DPI would allow querying the capabilities of the DPIs=
,
> but
> >> it doesn't seem necessary.)
> >>
> >> - If a DPI is present, it sends the `save_url` command to the DPI that
> >> coordinates with `download.dpi` via a secondary channel so that
> downloads
> >> can continue even if all Dillo windows are closed.
> >>
> >> - If the protocol isn't handled, it notifies download.dpi through the
> >> secondary channel (this reduces the amount of code).
> >>
> >> The next step would be to implement `save_url` in other protocol DPIs.
> >>
> >> A possible change to download.dpi once all is done is to leave
> >> download.dpi it as just a GUI for DPIs and extract the code to downloa=
d
> >> HTTP to a DPI. (There's already ftp.dpi)
> >>
> >> One last thing: can you recommend a simple Git manual?
> >>
> >>
> >> Saludos
> >> Diego.
> >>
> >> El lun, 25 may 2026 a las 21:23, Rodrigo Arias (<[email protected]>)
> >> escribi=C3=B3:
> >>
> >>> Hi,
> >>>
> >>> On Mon, May 25, 2026 at 09:25:58AM -0700, Ben Collver wrote:
> >>> >Good day,
> >>> >
> >>> >I am using dillo 3.3.0 on Slackware64 15.0.
> >>> >
> >>> >If I open a gopher directory, right-click on an item, and click
> >>> >Save link as..., this opens a file save dialog.  If i click OK, it
> >>> >dismisses the dialog.  I expected it to save something, but it
> >>> >creates no new files.
> >>> >
> >>> >Gopher URI:  gopher://gopher.pglaf.org/1/4/0/2/8/40282/
> >>> >Top item:    40282-0
> >>> >
> >>> >I found the following workaround:
> >>> >
> >>> >* Left click 40282-0
> >>> >* Click Save button in browser toolbar
> >>> >
> >>> >This creates a new file as expected.
> >>>
> >>> Yes, this is a known limitation of the downloads in Dillo. Using the
> >>> "Save link as" to fetch a new resource will use wget under the hood,
> >>> which only allows http(s). You can see the message in the console:
> >>>
> >>> > UIcmd_save: /tmp/40282-0.txt
> >>> > ** WARNING **: Ignoring download request for
> >>> > 'gopher://gopher.pglaf.org/0/4/0/2/8/40282/40282-0.txt': not in
> cache
> >>> > and not downloadable.
> >>>
> >>> Browsing to the target file makes the gopher plugin fetch the file an=
d
> >>> place it in the Dillo cache (you can see it in about:cache). Then
> saving
> >>> the current page (or going back and clicking the "Save link as" entry=
)
> >>> works because it fetches it from the cache.
> >>>
> >>> It is planned to solve this some time in the future, but involves
> >>> complex changes. In the meanwhile, you can use this workaround.
> >>>
> >>> Best,
> >>> Rodrigo.
> >>> _______________________________________________
> >>> Dillo-dev mailing list -- dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]
> >>> To unsubscribe send an email to dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]
> >>>
> >>
>
> >_______________________________________________
> >Dillo-dev mailing list -- dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]
> >To unsubscribe send an email to dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]
>
> _______________________________________________
> Dillo-dev mailing list -- dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]
> To unsubscribe send an email to dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]
>

--000000000000da163906566f5fdf
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Very thanks.</div><div>I await.<br></div><div><br></d=
iv><div><br></div><div>Chers<br></div><div>Diego.<br></div></div><br><div c=
lass=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_=
attr">El dom, 12 jul 2026 a las 21:46, Rodrigo Arias (&lt;<a href=3D"mailto=
:[email protected]">[email protected]</a>&gt;) escribi=C3=B3:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
On Thu, Jul 09, 2026 at 01:37:14AM +0200, Diego wrote:<br>
&gt;=C2=BFCan i have some feedback? =C2=BFDo the patchs work for you? =C2=
=BFdo it seem a<br>
&gt;practical idea? =C2=BFetc?<br>
<br>
Thanks, I received the patches but I haven&#39;t had time to look at this <=
br>
yet, I have have it in my queue.<br>
<br>
Best,<br>
Rodrigo.<br>
<br>
&gt;<br>
&gt;cheers!<br>
&gt;Diego.<br>
&gt;<br>
&gt;<br>
&gt;El vie, 3 jul 2026 a las 14:17, Diego (&lt;<a href=3D"mailto:darkspirit=
[email protected]" target=3D"_blank">[email protected]</a>&gt;) escribi=
=C3=B3:<br>
&gt;<br>
&gt;&gt; Hello, I&#39;m sending two patches with an idea to solve this prob=
lem.<br>
&gt;&gt; It&#39;s a proof of concept that I&#39;m offering to develop and c=
omplete,<br>
&gt;&gt; although I have very little free time.<br>
&gt;&gt;<br>
&gt;&gt; The first patch works with the latest dillo release (3.3.0) but al=
so works<br>
&gt;&gt; with the current repository.<br>
&gt;&gt; It implements changes in dillo, download.dpi, and the file and dat=
a DPIs<br>
&gt;&gt; as examples.<br>
&gt;&gt; The second patch works with the latest gopher.dpi repository.<br>
&gt;&gt;<br>
&gt;&gt; The main idea is that the DPIs that handle protocols save the URL =
and<br>
&gt;&gt; write the file themselves, coordinating with download.dpi and dill=
o.<br>
&gt;&gt;<br>
&gt;&gt; To do this, they implement a new DPI command: `save_url`<br>
&gt;&gt; d_cmd =3D a_Dpip_build_cmd(&quot;cmd=3D%s url=3D%s destination=3D%=
s&quot;, &quot;save_url&quot;, url,<br>
&gt;&gt; dl_dest);<br>
&gt;&gt;<br>
&gt;&gt; Dillo initiates a download, sending it to download.dpi as before. =
If it&#39;s<br>
&gt;&gt; HTTP* or FTP*, it downloads directly as it does now. Otherwise, it=
 will<br>
&gt;&gt; send a `save_url` command to Dillo to coordinate. This allows Dill=
o to<br>
&gt;&gt; notify the user, verify the security of the change, etc.Currently,=
 Dillo<br>
&gt;&gt; only checks if there&#39;s a DPI that handles the requested protoc=
ol.<br>
&gt;&gt;<br>
&gt;&gt; (A new function (`a_Dpiapi_is_service_handled(server_str)`) querie=
s `dpid`<br>
&gt;&gt; without executing the DPI. No code is modified in `dpid`. Modifyin=
g `dpid`<br>
&gt;&gt; or executing the DPI would allow querying the capabilities of the =
DPIs, but<br>
&gt;&gt; it doesn&#39;t seem necessary.)<br>
&gt;&gt;<br>
&gt;&gt; - If a DPI is present, it sends the `save_url` command to the DPI =
that<br>
&gt;&gt; coordinates with `download.dpi` via a secondary channel so that do=
wnloads<br>
&gt;&gt; can continue even if all Dillo windows are closed.<br>
&gt;&gt;<br>
&gt;&gt; - If the protocol isn&#39;t handled, it notifies download.dpi thro=
ugh the<br>
&gt;&gt; secondary channel (this reduces the amount of code).<br>
&gt;&gt;<br>
&gt;&gt; The next step would be to implement `save_url` in other protocol D=
PIs.<br>
&gt;&gt;<br>
&gt;&gt; A possible change to download.dpi once all is done is to leave<br>
&gt;&gt; download.dpi it as just a GUI for DPIs and extract the code to dow=
nload<br>
&gt;&gt; HTTP to a DPI. (There&#39;s already ftp.dpi)<br>
&gt;&gt;<br>
&gt;&gt; One last thing: can you recommend a simple Git manual?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Saludos<br>
&gt;&gt; Diego.<br>
&gt;&gt;<br>
&gt;&gt; El lun, 25 may 2026 a las 21:23, Rodrigo Arias (&lt;<a href=3D"mai=
lto:[email protected]" target=3D"_blank">[email protected]</a>&gt;)<br>
&gt;&gt; escribi=C3=B3:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Mon, May 25, 2026 at 09:25:58AM -0700, Ben Collver wrote:<b=
r>
&gt;&gt;&gt; &gt;Good day,<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;I am using dillo 3.3.0 on Slackware64 15.0.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;If I open a gopher directory, right-click on an item, and =
click<br>
&gt;&gt;&gt; &gt;Save link as..., this opens a file save dialog.=C2=A0 If i=
 click OK, it<br>
&gt;&gt;&gt; &gt;dismisses the dialog.=C2=A0 I expected it to save somethin=
g, but it<br>
&gt;&gt;&gt; &gt;creates no new files.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;Gopher URI:=C2=A0 gopher://<a href=3D"http://gopher.pglaf.=
org/1/4/0/2/8/40282/" rel=3D"noreferrer" target=3D"_blank">gopher.pglaf.org=
/1/4/0/2/8/40282/</a><br>
&gt;&gt;&gt; &gt;Top item:=C2=A0 =C2=A0 40282-0<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;I found the following workaround:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;* Left click 40282-0<br>
&gt;&gt;&gt; &gt;* Click Save button in browser toolbar<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;This creates a new file as expected.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Yes, this is a known limitation of the downloads in Dillo. Usi=
ng the<br>
&gt;&gt;&gt; &quot;Save link as&quot; to fetch a new resource will use wget=
 under the hood,<br>
&gt;&gt;&gt; which only allows http(s). You can see the message in the cons=
ole:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; UIcmd_save: /tmp/40282-0.txt<br>
&gt;&gt;&gt; &gt; ** WARNING **: Ignoring download request for<br>
&gt;&gt;&gt; &gt; &#39;gopher://<a href=3D"http://gopher.pglaf.org/0/4/0/2/=
8/40282/40282-0.txt" rel=3D"noreferrer" target=3D"_blank">gopher.pglaf.org/=
0/4/0/2/8/40282/40282-0.txt</a>&#39;: not in cache<br>
&gt;&gt;&gt; &gt; and not downloadable.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Browsing to the target file makes the gopher plugin fetch the =
file and<br>
&gt;&gt;&gt; place it in the Dillo cache (you can see it in about:cache). T=
hen saving<br>
&gt;&gt;&gt; the current page (or going back and clicking the &quot;Save li=
nk as&quot; entry)<br>
&gt;&gt;&gt; works because it fetches it from the cache.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; It is planned to solve this some time in the future, but invol=
ves<br>
&gt;&gt;&gt; complex changes. In the meanwhile, you can use this workaround=
.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Best,<br>
&gt;&gt;&gt; Rodrigo.<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Dillo-dev mailing list -- <a href=3D"mailto:dillo-dev@mailman3=
.com" target=3D"_blank">dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]</a><br>
&gt;&gt;&gt; To unsubscribe send an email to <a href=3D"mailto:dillo-dev-le=
ave-lx9mn2B4QYRWk0Htik3J/[email protected]" target=3D"_blank">dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
<br>
&gt;_______________________________________________<br>
&gt;Dillo-dev mailing list -- <a href=3D"mailto:dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]" tar=
get=3D"_blank">dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]</a><br>
&gt;To unsubscribe send an email to <a href=3D"mailto:dillo-dev-leave@mailm=
an3.com" target=3D"_blank">dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]</a><br>
<br>
_______________________________________________<br>
Dillo-dev mailing list -- <a href=3D"mailto:dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]" target=
=3D"_blank">dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]</a><br>
To unsubscribe send an email to <a href=3D"mailto:dillo-dev-leave@mailman3.=
com" target=3D"_blank">dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]</a><br>
</blockquote></div>

--000000000000da163906566f5fdf--

--===============5786957469510144123==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Dillo-dev mailing list -- dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]
To unsubscribe send an email to dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]

--===============5786957469510144123==--