diff --git a/src/client/libdistren.c b/src/client/libdistren.c --- a/src/client/libdistren.c +++ b/src/client/libdistren.c @@ -130,6 +130,8 @@ int distren_submit_file(distren_t handle /* for basename() to play with */ char *my_filename; + size_t sendq_dots; + errno = 0; in = fopen(filename, "r" FOPEN_BINARY); if(!in) @@ -174,10 +176,15 @@ int distren_submit_file(distren_t handle /* ensure we have no more than a megabyte waiting to be sent. */ while(handle->rem - && remoteio_sendq_len(handle->rem) / 3 > (1024 * 1024 / DISTREN_REQUEST_FILE_POST_DATA_LEN)) + && (sendq_dots = remoteio_sendq_len(handle->rem) / 3) > (1024 * 1024 / DISTREN_REQUEST_FILE_POST_DATA_LEN)) { - fprintf(stderr, "info: %d packets waiting to be sent...\n", remoteio_sendq_len(handle->rem) / 3); multiio_poll(handle->multiio, -1); + if(handle->rem) + while(sendq_dots > remoteio_sendq_len(handle->rem) / 3) + { + sendq_dots --; + fputc('.', stderr); + } } } @@ -197,11 +204,17 @@ int distren_submit_file(distren_t handle /* let's block until the file's gone. */ while(handle->rem - && remoteio_sendq_len(handle->rem)) + && (sendq_dots = remoteio_sendq_len(handle->rem))) { - fprintf(stderr, "info: %d packets waiting to be sent...\n", remoteio_sendq_len(handle->rem) / 3); multiio_poll(handle->multiio, -1); + if(handle->rem) + while(sendq_dots / 3 > remoteio_sendq_len(handle->rem) / 3) + { + sendq_dots -= 3; + fputc('.', stderr); + } } + fputc('\n', stderr); fprintf(stderr, "info: %s successfully uploaded, as far as we know.\n", filename); return 0;