On Thu, Oct 20, 2022 at 09:57:56AM -0700, Kevin J. McCarthy wrote:
> On Wed, Oct 19, 2022 at 09:42:55PM -0500, David Vernet wrote:
> > On Wed, Oct 19, 2022 at 04:20:22PM -0700, Kevin J. McCarthy wrote:
> > > That's fine, or I'll be happy to touch it up myself after this is 
> > > resolved.
> > 
> > Whatever will cause less churn / work for you is fine with me. I
> > wouldn't mind throwing my name on a mutt commit, but if it will cause
> > less back and forth for you to just write it how you'd like that's fine
> > as well. If you do, please feel free to ping me for a review.
> 
> In that case, please do feel free to update the documentation too.  It
> wasn't my intention to make it harder for you to have your name on these
> fixes and updates. :-)

Great, I'll take care of it in a follow-on version of the patch set
(after giving folks on the list a few more days to respond).

> > > It also may have been more correct to set i to INT_MAX in km_dokey()
> > > for the 0/negative case.  We could do that, but I'd argue we have
> > > the reverse problem now: the behavior has been as-is for 20+ years.
> > > Even though the doc's say it doesn't timeout, it does, and it does
> > > end up checking current mailbox/buffy about once a minute.
> > 
> > Understood, being a Linux kernel contributor I'm used to this
> > constraint. We must reward our loyal users with the expectation that we
> > won't pull the rug out from under them, even when "fixing" a bug to
> > match what's documented :-) It is what it is, and honestly, fixing the
> > documentation to describe the behavior and its implications is probably
> > sufficient given the available workaround of setting a large timeout
> > anyways. Perhaps adding a comment in the code is warranted as well.
> 
> Sounds fine, to at least acknowledge that precedence is overriding a more
> "correct" implementation.
> 
> > > I still think it would be better to just change the $timeout doc to say a
> > > 0/negative value will default to 60, and just change imap_check_mailbox() 
> > > to
> > > do the same, to make minimal behavior changes right now.
> > 
> > If you feel this is the best / lightest touch, I'm happy to send out a
> > patch that does it. For my own clarification though, what would we gain
> > from doing this if keepalive is also sending the noops? Wouldn't this
> > just result in the same behavior, expect that we may even be sending
> > multiple, redundant NOOPs?
> 
> I've been thinking about this quite a bit, and honestly I've gone back and
> forth.
> 
> My strongest resistance was worrying about regressions:
> 
> - At first I forgot about the keepalive NOOPs being sent, but with those at
> least the connection won't be closed and will at least occasionally
> guarantee updates/expunges are received.
> 
> - The only other non-force imap_check_mailbox() is in imap_sync_mailbox().
> But since $timeout can also be set very high I don't see how making "0" skip
> the NOOP should cause a problem here.

Agreed, I think that reasoning is sound.

> - Then there are the (IMAP using) folks who currently have $timeout set to
> 0.  If there is any latency they've probably given up on that by now, but
> perhaps some with a local IMAP server have it set.  Right now, they are
> seeing "immediate" updates whenever they scroll around.  Changing to 60 will
> slow this down, but probably not as noticeably as waiting for
> $imap_keepalive.

Hmmm yeah, the local IMAP server users is a good point. Between rounding
0 -> 60, and applying 0 as it's currently documented / proposed in this
patch, it feels like the latter is a more reasonable solution. Local
IMAP users could always set $timeout = 1 or something if they want
similar behavior (though that doesn't mean that doing so isn't a
regression for the users that are expecting $timeout = 0 to have the
behavior being "fixed" by this patch).

> The biggest problem is that Mutt has obfuscated the way IMAP current mailbox
> polling works, using a variable ($timeout) that it perhaps shouldn't have,
> without documenting it.  Either way we ought to change this for <=0, and so
> it will be a "change in behavior".
> 
> After thinking it through, I've changed my mind and am not opposed to having
> it skip the NOOP in imap_check_mailbox().  I think making "a change" is
> justifiable given the horrible current behavior, and given that we document
> the change and reasoning well.
> 
> However, let's give a few days to see if anyone else on the list has
> feedback.

This all sounds good to me. Let's give it a few days to see if anyone
chimes in, and we can make a final decision and/or further discuss at
that time.

Thanks,
David

Reply via email to