From: Jeff King Date: Mon, 16 May 2011 06:52:11 +0000 (-0400) Subject: connect: let callers know if connection is a socket X-Git-Tag: v1.7.5.3~12^2~2 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=7ffe853b106680720ddec999e1daf5c186997a1f;p=git.git connect: let callers know if connection is a socket They might care because they want to do a half-duplex close. With pipes, that means simply closing the output descriptor; with a socket, you must actually call shutdown. Instead of exposing the magic no_fork child_process struct, let's encapsulate the test in a function. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff --git a/cache.h b/cache.h index bf468e523..724aad41b 100644 --- a/cache.h +++ b/cache.h @@ -865,6 +865,7 @@ extern struct ref *find_ref_by_name(const struct ref *list, const char *name); #define CONNECT_VERBOSE (1u << 0) extern struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags); extern int finish_connect(struct child_process *conn); +extern int git_connection_is_socket(struct child_process *conn); extern int path_match(const char *path, int nr, char **match); struct extra_have_objects { int nr, alloc; diff --git a/connect.c b/connect.c index 5884f6d0b..9b31af02b 100644 --- a/connect.c +++ b/connect.c @@ -633,10 +633,15 @@ struct child_process *git_connect(int fd[2], const char *url_orig, return conn; } +int git_connection_is_socket(struct child_process *conn) +{ + return conn == &no_fork; +} + int finish_connect(struct child_process *conn) { int code; - if (!conn || conn == &no_fork) + if (!conn || git_connection_is_socket(conn)) return 0; code = finish_command(conn);