Hello Angus

Did you have some time to evaluate this issue?

Thanks



On Wed, Nov 23, 2016 at 12:20 AM, Éric Fleming Bonilha <e...@digifort.com.br
> wrote:

> Angus
>
> I have created a very simple demo application that shows how USE_SSL
> changes the behavior of OnDataAvailable:
>
> Please download at
> http://www.digifort.com/files/temp/ShowModal.rar
>
> I included the source code and 2 compiled projects in Delphi XE7 with ICS
> from April 17, but I have tested with latest version and still the same
> problem happens
>
> This demo shows how OnDataAvailable affects calling Modal forms directly
> or indirectly from OnDataAvailable event, blocking all the socket
> communication while Modal form is open (You can see that MB sent keeps
> increasing, but receiving socket never process new windows socket messages
> until modal closes)
>
>
> I'm still trying to simulate the other most critical issue (That increased
> the CPU usage of our software H.264 video data parsing by 200%) but this is
> much more complicated to simulate because it is triggered / affected by
> peaks in CPU usage, but I will find a way to simulate and show how USE_SSL
> enabled has affected my whole system performance.
>
> Please remember that I'm not using SSL at this moment, the whole problem
> is because by adding TCustomSslWSocket to the inheritance changes the
> behavior of OnDataReceive even if I'm not using SSL and breaks our software
> (And I bet I should not be the only user being affected that this...)
>
> Thank you for taking a closer look at this issue, this is very critical to
> us
>
> Eric
>
>
>
> On Tue, Nov 22, 2016 at 3:45 AM, Angus Robertson - Magenta Systems Ltd <
> an...@magsys.co.uk> wrote:
>
>> I have already previously investigated your problem and have been
>> unable to reproduce it.
>>
>> I've explained previously why your fix is unacceptable.
>>
>> I have limited time for ICS, and need to spend it on development that
>> benefits all ICS users, not just one.
>>
>> The only way I will look at this yet again is if you supply a very
>> simple Delphi application that illustrates the problem and does not
>> require any external libraries, ie copy all twsocket units needed to
>> the application directory, create all components in code.
>>
>> It really would be so much easier if you rewrote your application to
>> remove blocking modal dialogs from event handlers.
>>
>> Angus
>>
>>
>> -------- Original Message --------
>>
>> *Subject:* Re: [twsocket] Compiling with SSL active changes socket
>> behavior
>> *From:* Éric Fleming Bonilha <e...@digifort.com.br>
>> *To:* ICS support mailing <twsocket@lists.elists.org>
>> *Date:* Mon, 21 Nov 2016 17:32:42 -0500
>>
>> Hello all
>>
>> Could someone take a more serious look at this issue I've reported in
>> the
>> past???
>>
>> This has become a huge issue for us because the TCustomSslWSocket is
>> CHANGING the behavior of base socket EVEN IF SSL IS NOT IN USE!!!
>>
>> Today we got another issue that increased the processing of our
>> application
>> to 100% of CPU usage because OnDataReceive is being called much more
>> frequently.
>>
>> The whole problem is that Do_FD_READ(var Msg: TMessage) from
>> TCustomSslWSocket is changing the behavior of base socket
>>
>>
>> procedure TCustomSslWSocket.Do_FD_READ(var Msg: TMessage);
>> BuffSize := (GSSL_BUFFER_SIZE * 2)-1;  { V8.27 size now
>> configurable }
>>     SetLength(Buffer, BuffSize);
>>
>>  { V8.22 moved here from Do_SSL_FD_READ  }
>>     WSocket_Synchronized_WSAASyncSelect({$IFDEF POSIX}Self,{$ENDIF}
>>          FHSocket, Handle, FMsg_WM_ASYNCSELECT, FD_WRITE or FD_CLOSE or
>> FD_CONNECT);
>>     try
>>     ...
>>     finally
>>        { V8.22 moved here from Do_SSL_FD_READ }
>>         WSocket_Synchronized_WSAASyncSelect({$IFDEF POSIX}Self,{$ENDIF}
>>           FHSocket, Handle, FMsg_WM_ASYNCSELECT, FD_READ or FD_WRITE or
>> FD_CLOSE or FD_CONNECT);
>>     end;
>>
>>
>>
>> Before calling WSocket_Synchronized_WSAASyncSelect you MUST check if
>> SSL is
>> active. Currently you are checking if SSL is active ONLY after TRY:
>>
>>         if (not FSslEnable) or (FSocksState <> socksData) or
>>            (FHttpTunnelState <> htsData) then begin
>>             inherited Do_FD_READ(msg);
>>             Exit;
>>         end;
>>
>> This chunk of code should be placed BEFORE
>> BuffSize := (GSSL_BUFFER_SIZE * 2)-1;  { V8.27 size now
>> configurable }
>>
>> This way, if we are NOT using SSL socket, the base socket would behave
>> correctly, as it would simply call the inherited Do_FD_READ.
>>
>> Right now, when Do_FD_READ is called it process
>> WSocket_Synchronized_WSAASyncSelect TWICE (Before, in the beginning of
>> the
>> method and inside FINALLY) if we are NOT using SSL.
>>
>> I have identified two critical issues with this behavior
>>
>> First is the one I have already reported, that we cannot call a
>> ShowModal
>> indirectly from OnDataAvailable because it would block all further
>> socket
>> processing
>>
>> Second problem we just identified today and created a HUGE issue with
>> many
>> of our customers, because the application is now very unstable and
>> using a
>> lot of CPU. We have identified that OnDataAvailable is called MUCH MORE
>> frequently than before
>>
>> To solve the issues we are compiling ICS without SSL, but we will need
>> SSL
>> soon, and if we activate SSL it will simply break our whole software
>> because you are changing the receive behavior of all sockets
>>
>> Could someone please take this problem seriously and analyse the issue?
>>
>> I can show you over a TeamViewer session the effects of this on our
>> software
>>
>>
>> Thank you!
>>
>> Eric Fleming Bonilha
>>
>>
>> On Wed, Aug 31, 2016 at 6:18 PM, Éric Fleming Bonilha
>> <e...@digifort.com.br>
>> wrote:
>>
>> > Angus
>> >
>> > Would you at least take a look at it again? Adding that line in SSL
>> socket
>> > before actually checking if SSL is being used is changing the
>> behavior of
>> > the base class and breaking compatibility
>> >
>> >
>> >> Not quite sure why the V8.22 change in wsocket made this change, but
>> it
>> >> was an important bug fix that preventing ICS locking up on heavy
>> >> traffic, so very reluctant to change it.
>> >>
>> >> I think I saw this problem in one of my own applications a few days
>> ago,
>> >> when a log window was opened, it's on my list to investigate.
>> >>
>> >
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
>>
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
>>
>
>
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to