> Now, i first receive the Stack overflow Exception,
> then the ClientBgException() is called with this Overflow,

You have to focus on the stack overflow. It means you have a recursive call in you application.

If the BlientBgException is called after the stack overflow it is because you overflow the stack in an event that is not within an exception block.

I assume you don't call 'direct or indirect) the message punp in some of the events? you may not since TWSocket is event driven!

rgds, Wilfried

Op 15-04-15 om 15:58 schreef Moro Alexandre:
Hello Angus,



Thanks for your reply.



These are the number you provide in your changelog :



r1250 | angus | 2015-03-26 12:07:09 +0000 (Thu, 26 Mar 2015) | 5 lines

Mar 26, 2015 V8.16



r1196 | aguser | 2013-12-01 15:06:38 +0000 (Sun, 01 Dec 2013) | 1 line





I do not handle any client since this management is internal to
TWSocketServer.



The really only thing i do is to send String with SendStr :



mpWSocketServer->Addr = "0.0.0.0";

mpWSocketServer->Port = mHostPort;

mpWSocketServer->Proto = "tcp";

mpWSocketServer->Listen();



And when i send data :

for (int i = 0; i < mpWSocketServer->ClientCount; i++)

                 {

mpWSocketServer->Client[i]->SendStr(frame);

mpWSocketServer->Client[i]->Flush();

}



I added the OnBGexception on both TWSocketServer and client :



void __fastcall TServerSocketEngine::ClientBgException(TObject   *Sender,


Exception *E,


bool      &CanClose)

{

CanClose = TRUE;   // Goodbye client !

}



In the example i can read :



// This event handler is called when a client socket experience a background

// exception. It is likely to occurs when client aborted connection and data

// has not been sent yet.



Now, i first receive the Stack overflow Exception,

then the ClientBgException() is called with this Overflow,

and at least, a couple of seconds later, the program crash on an EAccess
Violation and can't be recovered.

C++ XE3 focus me on the line 16233 of the file OverbyteIcsWSocket.pas below
the line of begin :



procedure TCustomSslWSocket.Do_FD_WRITE(var Msg: TMessage);

var

     Len        : Integer;    // How much to send

     Buffer     : array [0..16383] of AnsiChar;

     NumRead    : Integer;

     NumSent    : Integer;

     Err        : Longword;

begin

     if (not FSslEnable) or (FSocksState <> socksData) or

        (FHttpTunnelState <> htsData) then begin

         inherited Do_FD_WRITE(msg);

         Exit;

     end;



I really don't know what can i do anymore !



PS : Is it normal that i can't compile ICS in release mode ?



Thanks.





--
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