Arno Garrels wrote:
> Wilfried Mestdagh wrote:
>> Hello Arno,
>>
>>> I think it is impossible that OnSessionClosed is fired twice, because
>>> it is always checked whether FCloseInvoked = FALSE.
>>> Isn't it possible that there are multiple instances?
>>
>> I just ahve posted same message again, sorry for that (need some
>> coffee). No there is only 1 instance that is the strange thing. The
>> TWSocket is created in constructor and destroyed in destructor. Both are
>> only called in program startup and terminate. Very strange.
>
> You may be right since in procedure TCustomWSocket.TryToSend FCloseInvoked
> is _not_ checked.
>
> FCloseInvoked := TRUE; { 23/07/98 }
> Close;
> TriggerSessionClosed(LastError); { 23/07/98 }
So if Do_FD_CLOSE (FD_CLOSE message received) would be called while looping
in TryToSend session closed could be triggered twice.
May be the close stuff in TryToSend should be changed to:
if not FCloseInvoked then begin
FCloseInvoked := TRUE;
TriggerSessionClosed(msg.LParamHi);
end;
if FState <> wsClosed then
Close;
Arno
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be