mirror of
https://github.com/git/git
synced 2024-08-28 20:20:07 +00:00
Merge branch 'master' into next
* master: checkout -f: do not leave untracked working tree files. Log peer address when git-daemon called from inetd
This commit is contained in:
commit
ad9f72a704
58
daemon.c
58
daemon.c
|
@ -264,11 +264,34 @@ static int upload(char *dir)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static int execute(void)
|
||||
static int execute(struct sockaddr *addr)
|
||||
{
|
||||
static char line[1000];
|
||||
int pktlen, len;
|
||||
|
||||
if (addr) {
|
||||
char addrbuf[256] = "";
|
||||
int port = -1;
|
||||
|
||||
if (addr->sa_family == AF_INET) {
|
||||
struct sockaddr_in *sin_addr = (void *) addr;
|
||||
inet_ntop(addr->sa_family, &sin_addr->sin_addr, addrbuf, sizeof(addrbuf));
|
||||
port = sin_addr->sin_port;
|
||||
#ifndef NO_IPV6
|
||||
} else if (addr && addr->sa_family == AF_INET6) {
|
||||
struct sockaddr_in6 *sin6_addr = (void *) addr;
|
||||
|
||||
char *buf = addrbuf;
|
||||
*buf++ = '['; *buf = '\0'; /* stpcpy() is cool */
|
||||
inet_ntop(AF_INET6, &sin6_addr->sin6_addr, buf, sizeof(addrbuf) - 1);
|
||||
strcat(buf, "]");
|
||||
|
||||
port = sin6_addr->sin6_port;
|
||||
#endif
|
||||
}
|
||||
loginfo("Connection from %s:%d", addrbuf, port);
|
||||
}
|
||||
|
||||
alarm(init_timeout ? init_timeout : timeout);
|
||||
pktlen = packet_read_line(0, line, sizeof(line));
|
||||
alarm(0);
|
||||
|
@ -414,8 +437,6 @@ static void check_max_connections(void)
|
|||
static void handle(int incoming, struct sockaddr *addr, int addrlen)
|
||||
{
|
||||
pid_t pid = fork();
|
||||
char addrbuf[256] = "";
|
||||
int port = -1;
|
||||
|
||||
if (pid) {
|
||||
unsigned idx;
|
||||
|
@ -436,26 +457,7 @@ static void handle(int incoming, struct sockaddr *addr, int addrlen)
|
|||
dup2(incoming, 1);
|
||||
close(incoming);
|
||||
|
||||
if (addr->sa_family == AF_INET) {
|
||||
struct sockaddr_in *sin_addr = (void *) addr;
|
||||
inet_ntop(AF_INET, &sin_addr->sin_addr, addrbuf, sizeof(addrbuf));
|
||||
port = sin_addr->sin_port;
|
||||
|
||||
#ifndef NO_IPV6
|
||||
} else if (addr->sa_family == AF_INET6) {
|
||||
struct sockaddr_in6 *sin6_addr = (void *) addr;
|
||||
|
||||
char *buf = addrbuf;
|
||||
*buf++ = '['; *buf = '\0'; /* stpcpy() is cool */
|
||||
inet_ntop(AF_INET6, &sin6_addr->sin6_addr, buf, sizeof(addrbuf) - 1);
|
||||
strcat(buf, "]");
|
||||
|
||||
port = sin6_addr->sin6_port;
|
||||
#endif
|
||||
}
|
||||
loginfo("Connection from %s:%d", addrbuf, port);
|
||||
|
||||
exit(execute());
|
||||
exit(execute(addr));
|
||||
}
|
||||
|
||||
static void child_handler(int signo)
|
||||
|
@ -756,8 +758,16 @@ int main(int argc, char **argv)
|
|||
}
|
||||
|
||||
if (inetd_mode) {
|
||||
struct sockaddr_storage ss;
|
||||
struct sockaddr *peer = (struct sockaddr *)&ss;
|
||||
socklen_t slen = sizeof(ss);
|
||||
|
||||
fclose(stderr); //FIXME: workaround
|
||||
return execute();
|
||||
|
||||
if (getpeername(0, peer, &slen))
|
||||
peer = NULL;
|
||||
|
||||
return execute(peer);
|
||||
}
|
||||
|
||||
return serve(port);
|
||||
|
|
|
@ -137,8 +137,7 @@ fi
|
|||
|
||||
if [ "$force" ]
|
||||
then
|
||||
git-read-tree --reset $new &&
|
||||
git-checkout-index -q -f -u -a
|
||||
git-read-tree --reset -u $new
|
||||
else
|
||||
git-update-index --refresh >/dev/null
|
||||
merge_error=$(git-read-tree -m -u $old $new 2>&1) || (
|
||||
|
|
Loading…
Reference in a new issue