only do a writeWait if previous non-blocking write failed to
authorClaus Gittinger <cg@exept.de>
Thu, 23 Oct 2003 00:07:17 +0200
changeset 7682 5d43745f59ac
parent 7681 7c63f0b47f0d
child 7683 a2e65f15769d
only do a writeWait if previous non-blocking write failed to send all data
NonPositionableExternalStream.st
--- a/NonPositionableExternalStream.st	Thu Oct 23 00:02:18 2003 +0200
+++ b/NonPositionableExternalStream.st	Thu Oct 23 00:07:17 2003 +0200
@@ -447,15 +447,16 @@
 nextPutBytes:initialWriteCount from:buffer startingAt:initialOffset
     "redefined, to wait until stream is writable, to avoid blocking in a write"
 
-    |offset remaining wasBlocking|
+    |count offset remaining wasBlocking|
 
     offset := initialOffset.
     remaining := initialWriteCount.
 
     wasBlocking := self blocking:false.
-    [remaining ~~ 0] whileTrue:[ |count|
-        self writeWait.
+    [remaining ~~ 0] whileTrue:[ 
         count := super nextPutBytes:remaining from:buffer startingAt:offset.
+        count ~~ remaining ifTrue:[ self writeWait. ].
+
         remaining := remaining - count.
         offset := offset + count.
     ].
@@ -467,5 +468,5 @@
 !NonPositionableExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/NonPositionableExternalStream.st,v 1.47 2003-10-21 22:55:36 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/NonPositionableExternalStream.st,v 1.48 2003-10-22 22:07:17 cg Exp $'
 ! !