Re: [Pharo-users] Bad Request ZnEntityTooLarge

Bernhard Pieber <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.seaside,gmane.comp.lang.smalltalk.pharo.user
Message-ID <[email protected]>
Thank you for your answer, Sven.

That’s a bummer. If I understand you correctly, currently there is no hook in Seaside to catch lower level server exceptions (like ZnEntityTooLarge) to show a nice looking error page, e.g. „You are trying to upload a file that’s too large. Don’t do that!“ Really? :-/

Cheers,
Bernhard

> Am 19.01.2017 um 14:29 schrieb Sven Van Caekenberghe <[email protected]>:
> 
> Hi Bernard,
> 
> Your analysis is correct. 
> 
> Most Seaside adaptors, including ZnZincServerAdaptor, are implemented so that the incoming (Zn) request is read from the wire, then converted to Seaside WA* objects, processed, the result converted from WA* objects to an outgoing (Zn) response and put on the wire.
> 
> Zn has some built-in resource protection measures, including a limit on how large entities (bodies) can be. The error of crossing such a limit is raised in the very first step, outside the scope of your Seaside handling code.
> 
> At first sight, I would not immediately know how this can be solved. 
> 
> Note that in order to know how much is coming in, you have to read it, but you have to stop in time. Note also that the content-length header could be absent or wrong (a malicious request).
> 
> I can't remember where we currently stand on a streaming Zn Seaside adaptor, there were some experiments in the past IIRC. That could be a solution, because then the entity/body is not read until further down the line, if we can get it to work. The current one only seems to do streaming for responses.
> 
> Sven
> 
>> On 19 Jan 2017, at 13:32, Bernhard Pieber <[email protected]> wrote:
>> 
>> I have a Seaside application which includes a file upload feature.
>> 
>> renderContentOn: html
>> …
>> html fileUpload
>> 	callback: [ :file | self receiveFile: file ].
>> 	html submitButton: 'Upload‘ ]
>> …
>> 
>> In receiveFile: I just save the uploaded file on the file system.
>> 
>> When I upload a file larger than 16 MB an error page is shown with the error message:
>> Bad Request ZnEntityTooLarge
>> 
>> I found that by using ZnConstants>>maximumEntitySize: I can increase this limit. However, I want to catch this in the image and show an error message to the user.
>> 
>> I tried wrapping receiveFile: and renderContentOn: with an on:do: exception handler for ZnEntityTooLarge. However, neither works. It seems that the error happens before renderContentOn: is even called. I searched the mailing lists but did not come up with an answer.
>> 
>> How can I achieve this in Seaside? Any help would be much appreciated.
>> 
>> Cheers,
>> Bernhard
>> _______________________________________________
>> seaside mailing list
>> [email protected]
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> 
> 

_______________________________________________
seaside mailing list
[email protected]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.