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 <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5cbf8246d2
commit
7ffe853b10
1
cache.h
1
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)
|
#define CONNECT_VERBOSE (1u << 0)
|
||||||
extern struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags);
|
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 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);
|
extern int path_match(const char *path, int nr, char **match);
|
||||||
struct extra_have_objects {
|
struct extra_have_objects {
|
||||||
int nr, alloc;
|
int nr, alloc;
|
||||||
|
@ -633,10 +633,15 @@ struct child_process *git_connect(int fd[2], const char *url_orig,
|
|||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int git_connection_is_socket(struct child_process *conn)
|
||||||
|
{
|
||||||
|
return conn == &no_fork;
|
||||||
|
}
|
||||||
|
|
||||||
int finish_connect(struct child_process *conn)
|
int finish_connect(struct child_process *conn)
|
||||||
{
|
{
|
||||||
int code;
|
int code;
|
||||||
if (!conn || conn == &no_fork)
|
if (!conn || git_connection_is_socket(conn))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
code = finish_command(conn);
|
code = finish_command(conn);
|
||||||
|
Loading…
Reference in New Issue
Block a user