git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: 惠轶群 <huiyiqun@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>,
	Your friend <pickfire@riseup.net>,
	git@vger.kernel.org
Subject: [PATCH] credential-cache--daemon: clarify "exit" action semantics
Date: Fri, 18 Mar 2016 02:12:01 -0400	[thread overview]
Message-ID: <20160318061201.GA28102@sigill.intra.peff.net> (raw)
In-Reply-To: <CAKqreuwpjhLnttP4Z_KmYwjiRYxBVC6gLShKLAcjox1VVqfm7w@mail.gmail.com>

On Fri, Mar 18, 2016 at 02:02:08PM +0800, 惠轶群 wrote:

> I believe git-credential--daemon is a better place to comment on, but
> I'm not sure whether the comment should be included in this patch set.
> Above all, they are not quite related.

Yes, it could be completely separate from your series.

Here is what I think we should do:

-- >8 --
Subject: credential-cache--daemon: clarify "exit" action semantics

When this code was originally written, there wasn't much
thought given to the timing between a client asking for
"exit", the daemon signaling that the action is done (with
EOF), and the actual cleanup of the socket.

However, we need to care about this so that our test scripts
do not end up racy (e.g., by asking for an exit and checking
that the socket was cleaned up). The code that is already
there happens to behave very reasonably; let's add a comment
to make it clear that any changes should retain the same
behavior.

Signed-off-by: Jeff King <peff@peff.net>
---
 credential-cache--daemon.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/credential-cache--daemon.c b/credential-cache--daemon.c
index caef21e..291c0fd 100644
--- a/credential-cache--daemon.c
+++ b/credential-cache--daemon.c
@@ -126,8 +126,17 @@ static void serve_one_client(FILE *in, FILE *out)
 			fprintf(out, "password=%s\n", e->item.password);
 		}
 	}
-	else if (!strcmp(action.buf, "exit"))
+	else if (!strcmp(action.buf, "exit")) {
+		/*
+		 * It's important that we clean up our socket first, and then
+		 * signal the client only once we have finished the cleanup.
+		 * Calling exit() directly does this, because we clean up in
+		 * our atexit() handler, and then signal the client when our
+		 * process actually ends, which closes the socket and gives
+		 * them EOF.
+		 */
 		exit(0);
+	}
 	else if (!strcmp(action.buf, "erase"))
 		remove_credential(&c);
 	else if (!strcmp(action.buf, "store")) {
-- 
2.8.0.rc3.378.gf2f7872

  reply	other threads:[~2016-03-18  6:12 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-14 14:47 [GSOC] Microproject "Move ~/.git-credential-cache to ~/.config/git" 惠轶群
2016-03-14 15:42 ` Junio C Hamano
2016-03-14 19:53   ` 惠轶群
2016-03-14 20:33     ` Junio C Hamano
2016-03-15  1:32       ` 惠轶群
2016-03-15  2:14         ` Your friend
     [not found]           ` <CAKqreux-m3yHVsEQXdf+8vMNZwC0UCMBWnzbaqYJbdEEM14qiQ@mail.gmail.com>
2016-03-15  5:56             ` Ivan Tham
2016-03-15  3:13         ` Jeff King
     [not found]           ` <CAKqreuwv+RRziS-NcaLYZYUN0_KrfgZSe6wp0wGBza4q3_x8RA@mail.gmail.com>
2016-03-15 19:21             ` Jeff King
2016-03-16 10:45               ` 惠轶群
2016-03-16 10:07 ` [PATCH/RFC/GSoC 1/3] path.c: implement xdg_runtime_dir() Hui Yiqun
2016-03-16 10:07   ` [PATCH/RFC/GSoC 2/3] git-credential-cache: put socket to xdg-compatible path Hui Yiqun
2016-03-17 10:26     ` 惠轶群
2016-03-16 10:07   ` [PATCH/RFC/GSoC 3/3] t0301: test credential-cache support of XDG_RUNTIME_DIR Hui Yiqun
2016-03-16 16:17     ` Junio C Hamano
2016-03-16 16:40       ` 惠轶群
2016-03-16 16:55         ` Jeff King
2016-03-16 17:24         ` Junio C Hamano
2016-03-17  3:59           ` 谭俊浩
2016-03-17  8:12             ` Junio C Hamano
2016-03-17 10:10               ` 惠轶群
2016-03-17  9:45           ` 惠轶群
2016-03-16 17:15     ` Jeff King
2016-03-18  4:35       ` 惠轶群
     [not found]       ` <CAKqreuw7Am_wZQjYYjvsxx0Ccr4OOwoF=EnLvMTK9jxeBUFv5Q@mail.gmail.com>
2016-03-18  5:00         ` Jeff King
2016-03-18  5:11           ` 惠轶群
2016-03-18  6:02             ` 惠轶群
2016-03-18  6:12               ` Jeff King [this message]
2016-03-16 17:06   ` [PATCH/RFC/GSoC 1/3] path.c: implement xdg_runtime_dir() Jeff King
2016-03-17 10:20     ` 惠轶群

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160318061201.GA28102@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=huiyiqun@gmail.com \
    --cc=pickfire@riseup.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).