Merge branch 'et/spell-poll-infinite-with-minus-one-only'
authorJunio C Hamano <gitster@pobox.com>
Thu, 11 Sep 2014 17:33:28 +0000 (10:33 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Sep 2014 17:33:29 +0000 (10:33 -0700)
We used to pass -1000 to poll(2), expecting it to also mean "no
timeout", which should be spelled as -1.

* et/spell-poll-infinite-with-minus-one-only:
upload-pack: keep poll(2)'s timeout to -1

1  2 
upload-pack.c
diff --combined upload-pack.c
index c9ea1d3be668f9beeac408dfdf5ceea90c4a6ca8,12c6b4d1a0807fc8829e3a13b2b2b5dce59498a6..c789ec00507696b4e52b081b66cc0e7c8cba42f9
@@@ -17,7 -17,7 +17,7 @@@
  
  static const char upload_pack_usage[] = "git upload-pack [--strict] [--timeout=<n>] <dir>";
  
 -/* bits #0..7 in revision.h, #8..10 in commit.c */
 +/* Remember to update object flag allocation in object.h */
  #define THEY_HAVE     (1u << 11)
  #define OUR_REF               (1u << 12)
  #define WANTED                (1u << 13)
@@@ -70,17 -70,9 +70,17 @@@ static ssize_t send_client_data(int fd
        return sz;
  }
  
 +static int write_one_shallow(const struct commit_graft *graft, void *cb_data)
 +{
 +      FILE *fp = cb_data;
 +      if (graft->nr_parent == -1)
 +              fprintf(fp, "--shallow %s\n", sha1_to_hex(graft->sha1));
 +      return 0;
 +}
 +
  static void create_pack_file(void)
  {
 -      struct child_process pack_objects;
 +      struct child_process pack_objects = CHILD_PROCESS_INIT;
        char data[8193], progress[128];
        char abort_msg[] = "aborting due to possible repository "
                "corruption on the remote side.";
        const char *argv[12];
        int i, arg = 0;
        FILE *pipe_fd;
 -      const char *shallow_file = NULL;
  
        if (shallow_nr) {
 -              shallow_file = setup_temporary_shallow(NULL);
                argv[arg++] = "--shallow-file";
 -              argv[arg++] = shallow_file;
 +              argv[arg++] = "";
        }
        argv[arg++] = "pack-objects";
        argv[arg++] = "--revs";
                argv[arg++] = "--include-tag";
        argv[arg++] = NULL;
  
 -      memset(&pack_objects, 0, sizeof(pack_objects));
        pack_objects.in = -1;
        pack_objects.out = -1;
        pack_objects.err = -1;
  
        pipe_fd = xfdopen(pack_objects.in, "w");
  
 +      if (shallow_nr)
 +              for_each_commit_graft(write_one_shallow, pipe_fd);
 +
        for (i = 0; i < want_obj.nr; i++)
                fprintf(pipe_fd, "%s\n",
                        sha1_to_hex(want_obj.objects[i].item->sha1));
                if (!pollsize)
                        break;
  
-               ret = poll(pfd, pollsize, 1000 * keepalive);
+               ret = poll(pfd, pollsize,
+                       keepalive < 0 ? -1 : 1000 * keepalive);
                if (ret < 0) {
                        if (errno != EINTR) {
                                error("poll failed, resuming: %s",
@@@ -447,7 -441,7 +449,7 @@@ static void check_non_tip(void
        static const char *argv[] = {
                "rev-list", "--stdin", NULL,
        };
 -      static struct child_process cmd;
 +      static struct child_process cmd = CHILD_PROCESS_INIT;
        struct object *o;
        char namebuf[42]; /* ^ + SHA-1 + LF */
        int i;
@@@ -799,7 -793,7 +801,7 @@@ int main(int argc, char **argv
  
        packet_trace_identity("upload-pack");
        git_extract_argv0_path(argv[0]);
 -      read_replace_refs = 0;
 +      check_replace_refs = 0;
  
        for (i = 1; i < argc; i++) {
                char *arg = argv[i];