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

From: Eric Abrahamsen <[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:
>
>> But doesn't the call to `nntp-possibly-change-group' at nntp.el:600
>> re-create the connection, including re-initializing the
>> nntp-server-buffer, so that when the guts of
>> `nntp-finish-retrieve-group-infos' are run for the second time, the new
>> server buffer is found?
>
> 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