[fpc-devel] Questions and suggestions to fpWeb
Luiz Americo Pereira Camara
luizmed at oi.com.br
Tue Aug 3 14:50:32 CEST 2010
Michael Van Canneyt escreveu:
>
>
> On Fri, 30 Jul 2010, Luiz Americo Pereira Camara wrote:
>
>> Hi,
>>
>> I've playing a bit with fpWeb and have some suggestions and questions:
>>
>> - In TFPWebAction.DoHandleRequest if request is not handled by
>> OnRequest and inherited, the content is copied to the response and
>> handled is checked by the response content.
>> - FContensts will be always created even if is not created previously
>> - At this point AResponse.Contents can have some content?
>> - If so the handled checking is wrong. See these conditions
>> AResponse.Contents.Text <> '';
>> Self.Contents.Text = '';
>> Handled will be true. Should be false.
>
> Why ? It is handled ?
No. Because TWebAction.Contents is empty.
>> - Content and Contents properties are redundant. Also can lead to
>> some performance issues. See the code of DoGetContent:
>>
>> If (Self.Content<>'') then
>> Content.Write(Self.Content[1],Length(Self.Content));
>>
>> Content is computed (Contents items concatenated) three times.
>>
>> Don't be surprised if users do things like
>>
>> while not ready do
>> Content := Content + 'xxx';
>
> I agree that the contents/content properties should be reduced to 1
> property. But this is a change which will break backwards compatibility.
AFAIK the fpWeb interface is still in progress. Anyway, better change
now than later.
>>
>> - TFPWebAction.GetContent is empty. It seems that should call
>> TFPWebAction.DoGetContent.
>> DoGetContent is inneficient. Cached FContents.Text and and isolated
>> string references
>
> Suggestions for improvements are welcome.
See patch below (in previous mail)
>
>>
>> - In TCustomFPWebModule.HandleRequest assigned(Session) will always
>> evaluate to true (if Session is nil it will be created and then freed
>> again).
>
> I will look into this.
>
>>
>> - It's not necessary to check for nil in SetTemplate
>> - In the other side a check to nil should be added in SetContents to
>> avoid creating FContents
>>
>> - CGI apps enters in a infinite loop.
>> Adding
>>
>> if FWebHandler.FTerminated then
>> Terminate;
>>
>> to TCustomWebApplication.DoRun fixes it.
>
> This is not sufficient, but I have committed a fix in revision 15698.
> Please test it.
OK. BTW what's the intention of adding TWebHandler AFAIK only add
another layer.
>
>>
>> Follows patch with my suggestions.
>
> Can you please create bug reports for the remaining issues ?
Done
Luiz
More information about the fpc-devel
mailing list