}
if (!size)
return -1;
-
+
if (verbose)
fprintf(stderr, "Serving %s\n", sha1_to_hex(sha1));
remote = 0;
-
+
if (!has_sha1_file(sha1)) {
fprintf(stderr, "git-ssh-upload: could not find %s\n",
sha1_to_hex(sha1));
remote = -1;
}
-
- write(fd_out, &remote, 1);
-
+
+ if (write_in_full(fd_out, &remote, 1) != 1)
+ return 0;
+
if (remote < 0)
return 0;
-
+
return write_sha1_to_fd(fd_out, sha1);
}
{
if (xread(fd_in, &remote_version, 1) < 1)
return -1;
- write(fd_out, &local_version, 1);
+ write_in_full(fd_out, &local_version, 1);
return 0;
}
if (get_ref_sha1(ref, sha1))
remote = -1;
- write(fd_out, &remote, 1);
+ if (write_in_full(fd_out, &remote, 1) != 1)
+ return 0;
if (remote)
return 0;
- write(fd_out, sha1, 20);
+ write_in_full(fd_out, sha1, 20);
return 0;
}
static void service(int fd_in, int fd_out) {
char type;
- int retval;
+ ssize_t retval;
do {
retval = xread(fd_in, &type, 1);
if (retval < 1) {