[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Transparently reconnect to servers after a system suspend

From: Eric Abrahamsen
Subject: Re: Transparently reconnect to servers after a system suspend
Date: Sat, 15 Oct 2016 21:04:13 -0700
User-agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/26.0.50 (gnu/linux)

Sebastian Krause <> writes:

> Eric Abrahamsen <> 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.

You could raise both of these questions in emacs.devel and see what they
say -- I don't know too much about it. My guess is that these questions
have been discussed before, but I don't know off the top of my head.

>> 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.

`gnus-group-suspend' closes all the servers *and* buries all Gnus
buffers. It's lighter weight because, unlike "R", it won't have to
re-read all your init files next time you get new news. I generally
don't want my buffers buried, so I just use the code snippet I posted,
in my own function.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]