Merge branch 'np/maint-sideband-favor-status' into maint

* np/maint-sideband-favor-status:
  give priority to progress messages
This commit is contained in:
Junio C Hamano 2009-12-03 13:50:24 -08:00
commit ef3a4fd670
2 changed files with 23 additions and 23 deletions

View File

@ -132,7 +132,6 @@ int cmd_upload_archive(int argc, const char **argv, const char *prefix)
while (1) {
struct pollfd pfd[2];
ssize_t processed[2] = { 0, 0 };
int status;
pfd[0].fd = fd1[0];
@ -147,14 +146,13 @@ int cmd_upload_archive(int argc, const char **argv, const char *prefix)
}
continue;
}
if (pfd[0].revents & POLLIN)
/* Data stream ready */
processed[0] = process_input(pfd[0].fd, 1);
if (pfd[1].revents & POLLIN)
/* Status stream ready */
processed[1] = process_input(pfd[1].fd, 2);
/* Always finish to read data when available */
if (processed[0] || processed[1])
if (process_input(pfd[1].fd, 2))
continue;
if (pfd[0].revents & POLLIN)
/* Data stream ready */
if (process_input(pfd[0].fd, 1))
continue;
if (waitpid(writer, &status, 0) < 0)

View File

@ -308,6 +308,23 @@ static void create_pack_file(void)
}
continue;
}
if (0 <= pe && (pfd[pe].revents & (POLLIN|POLLHUP))) {
/* Status ready; we ship that in the side-band
* or dump to the standard error.
*/
sz = xread(pack_objects.err, progress,
sizeof(progress));
if (0 < sz)
send_client_data(2, progress, sz);
else if (sz == 0) {
close(pack_objects.err);
pack_objects.err = -1;
}
else
goto fail;
/* give priority to status messages */
continue;
}
if (0 <= pu && (pfd[pu].revents & (POLLIN|POLLHUP))) {
/* Data ready; we keep the last byte to ourselves
* in case we detect broken rev-list, so that we
@ -345,21 +362,6 @@ static void create_pack_file(void)
if (sz < 0)
goto fail;
}
if (0 <= pe && (pfd[pe].revents & (POLLIN|POLLHUP))) {
/* Status ready; we ship that in the side-band
* or dump to the standard error.
*/
sz = xread(pack_objects.err, progress,
sizeof(progress));
if (0 < sz)
send_client_data(2, progress, sz);
else if (sz == 0) {
close(pack_objects.err);
pack_objects.err = -1;
}
else
goto fail;
}
}
if (finish_command(&pack_objects)) {