diff options
author | Junio C Hamano <junkio@cox.net> | 2006-09-10 03:20:24 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-09-10 13:36:50 -0700 |
commit | 958c24b1b8f463bca857f45c41a2f8198e345c2f (patch) | |
tree | 8db09dbe9df18068f063c42d19de06b12d0a2625 /upload-pack.c | |
parent | 49a52b1d1fb120f52de3a67f1e4e5ae81512ab81 (diff) | |
download | git-958c24b1b8f463bca857f45c41a2f8198e345c2f.tar.gz |
Move sideband server side support into reusable form.
The server side support; this is just the very low level, and the
caller needs to know which band it wants to send things out.
Signed-off-by: Junio C Hamano <junkio@cox.net>
(cherry picked from b786552b67878c7780c50def4c069d46dc54efbe commit)
Diffstat (limited to 'upload-pack.c')
-rw-r--r-- | upload-pack.c | 50 |
1 files changed, 13 insertions, 37 deletions
diff --git a/upload-pack.c b/upload-pack.c index 51ce936b06..1f2f7f75e5 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -4,6 +4,7 @@ #include "cache.h" #include "refs.h" #include "pkt-line.h" +#include "sideband.h" #include "tag.h" #include "object.h" #include "commit.h" @@ -33,45 +34,19 @@ static int strip(char *line, int len) return len; } -#define PACKET_MAX 1000 static ssize_t send_client_data(int fd, const char *data, ssize_t sz) { - ssize_t ssz; - const char *p; - - if (!data) { - if (!use_sideband) - return 0; - packet_flush(1); - } - - if (!use_sideband) { - if (fd == 3) - /* emergency quit */ - fd = 2; - if (fd == 2) { - xwrite(fd, data, sz); - return sz; - } - return safe_write(fd, data, sz); - } - p = data; - ssz = sz; - while (sz) { - unsigned n; - char hdr[5]; - - n = sz; - if (PACKET_MAX - 5 < n) - n = PACKET_MAX - 5; - sprintf(hdr, "%04x", n + 5); - hdr[4] = fd; - safe_write(1, hdr, 5); - safe_write(1, p, n); - p += n; - sz -= n; + if (use_sideband) + return send_sideband(1, fd, data, sz, DEFAULT_PACKET_MAX); + + if (fd == 3) + /* emergency quit */ + fd = 2; + if (fd == 2) { + xwrite(fd, data, sz); + return sz; } - return ssz; + return safe_write(fd, data, sz); } static void create_pack_file(void) @@ -308,7 +283,8 @@ static void create_pack_file(void) goto fail; fprintf(stderr, "flushed.\n"); } - send_client_data(1, NULL, 0); + if (use_sideband) + packet_flush(1); return; } fail: |