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

From: Eric Abrahamsen <[email-masked]>
Date: Fri, 05 May 2023 22:41:22 -0700

Eric Abrahamsen <[email-masked]> writes:

> Eric Abrahamsen <[email-masked]> writes:
>
>> Eli Zaretskii <[email-masked]> writes:
>>
>>>> From: Eric Abrahamsen <[email-masked]>
>>>> Cc: Eli Zaretskii <[email-masked]>,  [email-masked]
>>>> Date: Wed, 26 Apr 2023 20:08:53 -0700
>>>> 
>>>> Andreas Schwab <[email-masked]> writes:
>>>> 
>>>> > commit 032969e8c65 "Don't have nntp-report signal an error"
>>>> 
>>>> Ooh, I knew this would end up being me. Give me a couple of days, it
>>>> might not be the weekend before I have time to dig through this.
>>>
>>> Eric,
>>>
>>> Any progress?  I'd like to make another pretest of Emacs 29 soon, and
>>> I'm waiting for this fix.  TIA.
>
> [...]
>
>> Other code in this library checks if the timer has killed the process
>> buffer in the meantime. There's probably a safe solution in here
>> somewhere, but if you're looking for a reliable regression fix to
>> include in Emacs 29, it's probably best just to revert 032969e8c65. That
>> behavior is annoying, but at least not buggy.
>
> Looking more closely at this, there's already a mechanism for throwing
> out of the `nntp-with-open-group' wrapper: if `nntp--report-1' is t,
> then `nntp-report' should throw the appropriate symbol and we'd get the
> desired effect of canceling this server connection, without raising a
> top-level error.
>
> `nntp--report-1' should be non-nil in the case, I'll try to figure out
> why it isn't working.

The answer is, that mechanism is designed to work only once. If the
connection is dead or times out, it catches that condition once and
tries to re-connect, and won't catch it a second time. So we'd have to
be hitting the timeout twice in a row to see this (which definitely
happens). I still think it's best just to revert 032969e8c65 on Emacs 29.