Subject: Re: Issues with git send-email and msmtp

From: Eric Wong <[email-masked]>
Date: Tue, 21 Mar 2017 19:23:13 +0000

Jeff King <[email-masked]> wrote:
> On Tue, Mar 21, 2017 at 03:49:21PM +0000, Roger Pau Monné wrote:
> 
> > I'm trying to use git send-email with msmtp, and I have added the following to
> > my .gitconfig:
> > 
> > [sendemail]
> > 	smtpserver = "/usr/local/bin/msmtp"
> > 
> > This seems to work fine, except that sometimes git dies unexpectedly after
> > queuing a patch to msmtp:
> > 
> > Died at /usr/local/Cellar/git/2.12.0/libexec/git-core/git-send-email line 1350, <FIN> line 3.

Hi Roger, can you also enable msmtp logging and debugging?

logfile /path/to/log # in ~/.msmtprc
And "msmtp --debug" in the command line

> That line looks like it's the "close" on the pipe. If it's dying racily
> that could mean that msmtp for some reason is not eating all of the
> data and we're getting EPIPE (though that seems weird, since we're just
> dumping the message until EOF). Or possibly msmtp is sometimes exiting
> non-zero.
> 
> Capturing an "strace" for a failing run would be helpful. If that's not
> possible, something like this patch might help diagnose it:
> 
> diff --git a/git-send-email.perl b/git-send-email.perl
> index eea0a517f..32d34f995 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -1346,7 +1346,10 @@ EOF
>  			exec($smtp_server, @sendmail_parameters) or die $!;
>  		}
>  		print $sm "$header\n$message";

Perhaps also:

		print $sm "$header\n$message" or
				die "print failed to $smtp_server: $!";

> -		close $sm or die $!;
> +		if (!close($sm)) {
> +			die $! ? "unable to write to $smtp_server: $!"
> +			       : "smtp program '$smtp_server' exited non-zero: $?"

Parentheses please :>