Eric Abrahamsen <e...@ericabrahamsen.net> wrote:
> This has been annoying people for a very long time, but I don't think
> there's any clean solution to the problem. Gnus doesn't actually know
> that you've suspended and woken your computer, so it doesn't have any
> reason to suspect the connections are down. I think we'd have to ping
> servers on a timer, or maybe run a clock in lisp and periodically check
> it against system time (to see if execution was suspended for a while).
> Nothing immediately presents itself as The Right Solution, so no one's
> done anything...
I guess The Right Solution would be if Emacs would provide access to
the operating system's sleep/wake notifications (e.g. on macOS:
and tell Gnus about a system wakeup. Gnus could then just close all
connections each time it received such a notification. But it
doesn't look like there's anything like that in Emacs.
The second best thing I can think of is TCP keepalive with much
lower values for tcp_keepalive_time and tcp_keepalive_intvl. Gnus
actually enables :keepalive in its network sockets (e.g. in nntp.el
and nnimap.el), but the default values for the first keepalive
package on Linux and Windows is two hours of inactivity, and even
then it will take more than 10 minutes of no response until the OS
actually closes the connection. It's actually possible to lower the
keepalive parameters per socket, but again it doesn't seem like
Emacs provides the possibility to do that in elisp.
> A lighter-weight solution than a full restart is using "z", for
> gnus-group-suspend. That will close all the servers, which will be
> re-opened the next time you "g".
Weird, pressing "z" in the *Group* buffer just closes Gnus here.
info-gnus-english mailing list