Subject: bug#62845: 29.0.90; nntp-with-open-group-function kills current buffer on timeout

From: Eli Zaretskii <[email-masked]>
Date: Wed, 10 May 2023 18:53:13 +0300

> From: Eric Abrahamsen <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked]
> Date: Sat, 06 May 2023 22:52:17 -0700
> 
> 
> On 05/06/23 19:43 PM, Andreas Schwab wrote:
> > On Mai 06 2023, Eric Abrahamsen wrote:
> >
> > You cannot recreate a buffer once it is killed.  You can create a new
> > buffer, but it will always be a different buffer.
> 
> But `nntp-possibly-change-group' re-initializes `nntp-server-buffer' to
> a new buffer, and the `nntp-find-connection-buffer' inside
> `nntp-retrieve-group-data-early' uses the value of `nntp-server-buffer'
> to find its process. My reading is that each time the with-open-group
> function runs, its `bodyfun' lambda should get a new opportunity to find
> a live `nntp-server-buffer'.
> 
> Plus, if the buffer were already dead the second time through,
> `nntp-retrieve-group-data-early' has sufficient guards to simply bail
> before doing anything.
> 
> I'm not trying to be stubborn here, I assume your analysis is
> essentially right, I'm just trying to make sure I actually understand
> what's happening in the code.
> 
> Even if it does require two timeouts in a row, I get that plenty often
> with a `nntp-connection-timeout' value of 6.

Eric, any progress here?

If no better ideas are ready to be implemented, I think we should
revert that commit on emacs-29 and leave it on master, where work on
fixing this fallout should continue.  OK?