[squeak-dev] Possible change/fix for WebMessage>>streamDirectlyFrom:to:size:progress: in 5.2

Tim Johnson digit at sonic.net
Tue Jun 23 04:54:11 UTC 2020


Hi Levente,

On Jun 20, 2020, at 8:18 AM, Levente Uzonyi wrote:

> On Fri, 19 Jun 2020, Tim Johnson wrote:
>
>> I'm proposing a change to  
>> WebMessage>>#streamDirectlyFrom:to:size:progress:
>> ...but my proposed change could very well be wrong, or be poor  
>> logic.  So I'm writing up my lengthy rationale below.
>> What do you think about changing:
>> [(sizeOrNil == nil and:[srcStream atEnd not]) or:[totalRead <  
>> size]] whileTrue:[
>
> I read the above line (combined with the assignment to size and  
> totalRead) as: if no size was specified (sizeOrNil == nil, size =  
> 0), then read while there's data available from the source stream  
> (srcStream atEnd not).
> If there was a size specified, assume that its the actual number of  
> bytes available, and read that many bytes (totalRead < size).

Ah!  Thank you.  That makes sense.

I did not find any code path in which sizeOrNil might be nil, but I  
may not have looked hard enough, or perhaps it was there for future  
expansion, etc.

> The last line is problematic, as you pointed out in your analysis,  
> when the source stream and the size are both provided by the other  
> party.
>
>> to:
>> [sizeOrNil == nil or: [totalRead < size and: [srcStream atEnd  
>> not]]] whileTrue:[
>
> The problem with the above is that it'll become and infinite loop if  
> sizeOrNil is nil.

Oops.

> So, if you want to read while there's data available from the  
> stream, then I think the following is the right choice:
>
> [ srcStream atEnd not and: [ sizeOrNil isNil or: [ totalRead <  
> sizeOrNil ] ] whileTrue: [
>
> The above always takes into account whether there's data available  
> from the stream and directly uses sizeOrNil for size comparison to  
> make it more legible. However, there seem to be a few more things to  
> clean up in that method.

Thank you!  I have loaded WebClient-Core-ul.122.mcz from the Inbox  
into my server image (running 5.2) and will see how things go.

Strangely, the method's author is listed as MCPackageTest...?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Picture 10.png
Type: image/png
Size: 20892 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200622/60d266a5/attachment.png>
-------------- next part --------------



I've verified that the other methods in the WebMessage 'streaming'  
category in WebClient-Core-ul.122.mcz are all 'ar' and 'pre' as  
expected... it is only this one that is attributed to  
'MCPackageTest'... hmm.


Thanks again,
a Tim



More information about the Squeak-dev mailing list