On Mon, Nov 28, 2022 at 06:48:38PM -0800, Kevin J. McCarthy wrote:
> On Mon, Nov 28, 2022 at 07:45:00PM -0600, David Vernet wrote:
> > On Mon, Nov 28, 2022 at 04:14:10PM -0800, Matthew Sotoudeh via Mutt-dev 
> > wrote:
> > > Per feedback from Kevin & David (thanks!), moved the timeout code into
> > > socket_connect and updated the description to be more descriptive and
> > > more closely match the existing connect_timeout.
> > 
> > I'm not sure how the mutt review process usually works (Kevin can chime
> > in here to correct me if it's different around here), but in Linux
> > kernel reviews, the differences between patch revisions is put below the
> > --- at the sign off. See [0] for more information. If you put it here,
> > it is like you are proposing to include it in the commit summary.
> > 
> > Also, follow-on iterations of a patch should have the version specified
> > (e.g. -v 2 for git format-patch), and be sent as a separate email thread
> > rather than being sent as a reply to an earlier thread. Again, Kevin can
> > tell me if things are different for mutt reviews.
> 
> We're not so formal here, because the volume is quite low, especially as
> I've eased down development.
> 
> A lot of our review has also moved to gitlab, although I like to have things
> reviewed here that might be interesting to a wider audience.

Fair enough! Thanks for clarifying for me. Matthew -- feel free to
ignore my advice ;-)
> 
> > > There is some open question about where exactly in socket_connect to put
> > > the timeout code. Currently I put it after the basic input validation
> > > but it may be slightly better to wait until the socket is actually
> > > opened? But being a global option anyways, I don't think it can hurt
> > 
> > FWIW, I would do it before the socket is opened.
> 
> Agree.
> 
> > > diff --git a/mutt_socket.c b/mutt_socket.c
> > > index 3e192072..4e1b7889 100644
> > > --- a/mutt_socket.c
> > > +++ b/mutt_socket.c
> > > @@ -407,6 +407,12 @@ static int socket_connect (int fd, struct sockaddr* 
> > > sa)
> > >      return -1;
> > >    }
> > > 
> > > +  if (ReceiveTimeout > 0)
> > > +  {
> > > +    struct timeval tv = { ReceiveTimeout, 0 };
> > > +    setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv));
> > > +  }
> > 
> > socket_connect() doesn't seem super concerned with checking return
> > values elsewhere (e.g. in sigaction() calls), but IMO there's no reason
> > for us to not add them for new code. Could you please check the return
> > value of setsockopt() here?  Not sure if it's preferable to return that
> > value to the caller, or instead just print a dprint() message if it
> > fails and continue on. Given that we don't even propagate the error for
> > connect(), I expect the latter is preferable. Kevin, thoughts?
> 
> The connect error looks to be returned and used in raw_socket_open(). But
> for setsockopt, I agree just adding a dprint and continuing should be okay.

Ah, right you are. I missed that it was saving the value as save_errno.
Seems kind of odd to continue on like that and then do e.g. sigaction(),
but that's neither here nor there. It sounds like we're aligned on the
right / lightest touch approach here being to just dprint() and move on.

Thanks,
David

Reply via email to