Browse Source

Merge branch 'master' into next

* master:
  checkout -f: do not leave untracked working tree files.
  Log peer address when git-daemon called from inetd
maint
Junio C Hamano 19 years ago
parent
commit
ad9f72a704
  1. 58
      daemon.c
  2. 3
      git-checkout.sh

58
daemon.c

@ -264,11 +264,34 @@ static int upload(char *dir) @@ -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) @@ -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) @@ -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) @@ -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);

3
git-checkout.sh

@ -137,8 +137,7 @@ fi @@ -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…
Cancel
Save