From ff705842f5a1f6bcd54201c5d3deb8e2498a1e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Mon, 19 Apr 1999 23:19:26 +0200 Subject: [PATCH] Fixed some more bugs in Stdio.sendfile(). Rev: lib/modules/Stdio.pmod/module.pmod:1.47 --- lib/modules/Stdio.pmod/module.pmod | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/modules/Stdio.pmod/module.pmod b/lib/modules/Stdio.pmod/module.pmod index 999fb151f0..a8fa8b7c86 100644 --- a/lib/modules/Stdio.pmod/module.pmod +++ b/lib/modules/Stdio.pmod/module.pmod @@ -1,4 +1,4 @@ -// $Id: module.pmod,v 1.46 1999/04/19 20:56:45 grubba Exp $ +// $Id: module.pmod,v 1.47 1999/04/19 21:19:26 grubba Exp $ import String; @@ -809,7 +809,9 @@ static class nb_sendfile function(int, mixed ...:void) cb = callback; args = 0; callback = 0; - cb(sent, @a); + if (cb) { + cb(sent, @a); + } } static int do_write() @@ -846,10 +848,14 @@ static class nb_sendfile { if (do_write()) { if (from) { - if (blocking_from) { - do_read(); - } else { - if (sizeof(to_write) < READER_RESTART) { + if (sizeof(to_write) < READER_RESTART) { + if (blocking_from) { + do_read(); + if (!sizeof(to_write)) { + // Done. + writer_done(); + } + } else { if (!sizeof(to_write)) { // Go to sleep. to->set_nonblocking(0,0,0); @@ -885,6 +891,7 @@ static class nb_sendfile if (sizeof(to_write) && do_write()) { call_out(do_blocking, 0); } else { + // Done. from = 0; to = 0; writer_done(); -- GitLab