Merge branch 'db/no-separate-ls-remote-connection' (early part)
* 'db/no-separate-ls-remote-connection' (early part): Fix "git clone" for git:// protocol Reduce the number of connects when fetching
This commit is contained in:
20
connect.c
20
connect.c
@ -474,14 +474,18 @@ char *get_port(char *host)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct child_process no_fork;
|
||||
|
||||
/*
|
||||
* This returns NULL if the transport protocol does not need fork(2), or a
|
||||
* struct child_process object if it does. Once done, finish the connection
|
||||
* with finish_connect() with the value returned from this function
|
||||
* (it is safe to call finish_connect() with NULL to support the former
|
||||
* case).
|
||||
* This returns a dummy child_process if the transport protocol does not
|
||||
* need fork(2), or a struct child_process object if it does. Once done,
|
||||
* finish the connection with finish_connect() with the value returned from
|
||||
* this function (it is safe to call finish_connect() with NULL to support
|
||||
* the former case).
|
||||
*
|
||||
* If it returns, the connect is successful; it just dies on errors.
|
||||
* If it returns, the connect is successful; it just dies on errors (this
|
||||
* will hopefully be changed in a libification effort, to return NULL when
|
||||
* the connection failed).
|
||||
*/
|
||||
struct child_process *git_connect(int fd[2], const char *url_orig,
|
||||
const char *prog, int flags)
|
||||
@ -579,7 +583,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig,
|
||||
free(url);
|
||||
if (free_path)
|
||||
free(path);
|
||||
return NULL;
|
||||
return &no_fork;
|
||||
}
|
||||
|
||||
conn = xcalloc(1, sizeof(*conn));
|
||||
@ -637,7 +641,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig,
|
||||
int finish_connect(struct child_process *conn)
|
||||
{
|
||||
int code;
|
||||
if (!conn)
|
||||
if (!conn || conn == &no_fork)
|
||||
return 0;
|
||||
|
||||
code = finish_command(conn);
|
||||
|
||||
Reference in New Issue
Block a user