Thread (4 messages) flat view 4 messages, 4 authors, 2017-03-22

Re: Issues with git send-email and msmtp

From: Eric Wong <hidden>
Date: 2017-03-21 19:29:28

Jeff King [off-list ref] wrote:
On Tue, Mar 21, 2017 at 03:49:21PM +0000, Roger Pau Monné wrote:
quoted
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
quoted hunk ↗ jump to hunk
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 :>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help