Announcements and discussions for Gnus, the GNU Emacs Usenet newsreader
 help / color / mirror / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: info-gnus-english@gnu.org
Subject: Re: Transparently reconnect to servers after a system suspend
Date: Sat, 15 Oct 2016 21:04:13 -0700	[thread overview]
Message-ID: <87r37hos76.fsf@ericabrahamsen.net> (raw)
In-Reply-To: <m237jxcuut.fsf@news.realpath.org>

Sebastian Krause <sebastian@realpath.org> writes:

> Eric Abrahamsen <eric@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:
> https://developer.apple.com/library/content/qa/qa1340/_index.html)
> 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.

E



      reply	other threads:[~2016-10-16  4:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-15  7:43 Sebastian Krause
2016-10-15 17:46 ` Eric Abrahamsen
2016-10-15 18:47   ` Sebastian Krause
2016-10-16  4:04     ` Eric Abrahamsen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r37hos76.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=info-gnus-english@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).