Fastream Technologies wrote:
> Does it work there? Doesn't it give the exception?

It works! But does it work for you??

> 
> Regards,
> 
> SZ
> 
> ----- Original Message -----
> From: "Arno Garrels" <[EMAIL PROTECTED]>
> To: "ICS support mailing" <twsocket@elists.org>
> Sent: Friday, June 09, 2006 11:03 AM
> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
> 
> 
>> Below a simple test program, if you don't have ICS-SSL exchange
>> TSslHttpCli by THttpCli. Does it work for you?
>> 
>> unit Unit1;
>> 
>> interface
>> 
>> uses
>>  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
>> Forms,
>>  Dialogs, OverbyteIcsWndControl, OverbyteIcsHttpProt, StdCtrls;
>> 
>> type
>>  TMyThread = class(TThread)
>>  public
>>    procedure Execute; override;
>>  end;
>>  TForm1 = class(TForm)
>>    SslHttpCli1: TSslHttpCli;
>>    SslHttpCli2: TSslHttpCli;
>>    btnAttachTothread: TButton;
>>    btnAttachtoMainThread: TButton;
>>    procedure btnAttachTothreadClick(Sender: TObject);
>>    procedure FormCreate(Sender: TObject);
>>    procedure FormDestroy(Sender: TObject);
>>    procedure btnAttachtoMainThreadClick(Sender: TObject);
>>  private
>>    FThread : TMyThread;
>>  public
>>    { Public declarations }
>>  protected
>>    procedure WmAttachMain(var Msg: TMessage); message WM_USER + 3;
>>  end;
>> 
>> var
>>  Form1: TForm1;
>> 
>> implementation
>> 
>> {$R *.dfm}
>> 
>> { TMyThread }
>> 
>> procedure TMyThread.Execute;
>> var
>>    Msg: tagMsg;
>> begin
>>    while GetMessage(Msg, 0, 0, 0) do
>>    begin
>>        if Msg.message = WM_USER + 1  then
>>            TSslHttpCli(Msg.WParam).ThreadAttach
>>        else if Msg.message = WM_USER + 2 then
>>        begin
>>            TSslHttpCli(Msg.WParam).ThreadDetach;
>>            Postmessage(Form1.Handle, WM_USER + 3, Msg.WParam, 0);
>>        end
>>        else begin
>>            TranslateMessage(Msg);
>>            DispatchMessage(Msg);
>>        end;
>>    end;
>>    Terminate;
>> end;
>> 
>> procedure TForm1.FormCreate(Sender: TObject);
>> begin
>>    FThread := TMyThread.Create(False);
>> end;
>> 
>> procedure TForm1.FormDestroy(Sender: TObject);
>> begin
>>    PostThreadMessage(FThread.ThreadID, WM_QUIT, 0, 0);
>> end;
>> 
>> procedure TForm1.WmAttachMain(var Msg: TMessage);
>> begin
>>    TSslHttpCli(Msg.WParam).ThreadAttach;
>> end;
>> 
>> procedure TForm1.btnAttachtoMainThreadClick(Sender: TObject);
>> begin
>>    PostThreadMessage(FThread.ThreadID, WM_USER + 2,
>> Integer(SslHttpCli1), 0);
>>    PostThreadMessage(FThread.ThreadID, WM_USER + 2,
>> Integer(SslHttpCli2), 0);
>> end;
>> 
>> procedure TForm1.btnAttachTothreadClick(Sender: TObject);
>> begin
>>    SslHttpCli1.ThreadDetach;
>>    PostThreadMessage(FThread.ThreadID, WM_USER + 1,
>> Integer(SslHttpCli1), 0);
>>    SslHttpCli2.ThreadDetach;
>>    PostThreadMessage(FThread.ThreadID, WM_USER + 1,
>> Integer(SslHttpCli2), 0);
>> end;
>> 
>> end.
>> 
>> // DFM //
>> 
>> object Form1: TForm1
>>  Left = 0
>>  Top = 0
>>  Caption = 'Form1'
>>  ClientHeight = 293
>>  ClientWidth = 426
>>  Color = clBtnFace
>>  Font.Charset = DEFAULT_CHARSET
>>  Font.Color = clWindowText
>>  Font.Height = -11
>>  Font.Name = 'Tahoma'
>>  Font.Style = []
>>  OldCreateOrder = False
>>  OnCreate = FormCreate
>>  OnDestroy = FormDestroy
>>  PixelsPerInch = 96
>>  TextHeight = 13
>>  object btnAttachTothread: TButton
>>    Left = 38
>>    Top = 88
>>    Width = 127
>>    Height = 25
>>    Caption = 'AttachTothread'
>>    TabOrder = 0
>>    OnClick = btnAttachTothreadClick
>>  end
>>  object btnAttachtoMainThread: TButton
>>    Left = 38
>>    Top = 119
>>    Width = 127
>>    Height = 25
>>    Caption = 'AttachtoMainThread'
>>    TabOrder = 1
>>    OnClick = btnAttachtoMainThreadClick
>>  end
>>  object SslHttpCli1: TSslHttpCli
>>    LocalAddr = '0.0.0.0'
>>    ProxyPort = '80'
>>    Agent = 'Mozilla/4.0 (compatible; ICS)'
>>    Accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
>> */*'    NoCache = False
>>    ContentTypePost = 'application/x-www-form-urlencoded'
>>    MultiThreaded = False
>>    RequestVer = '1.0'
>>    FollowRelocation = True
>>    LocationChangeMaxCount = 5
>>    BandwidthLimit = 10000
>>    BandwidthSampling = 1000
>>    Options = []
>>    SocksAuthentication = socksNoAuthentication
>>    Left = 32
>>    Top = 36
>>  end
>>  object SslHttpCli2: TSslHttpCli
>>    LocalAddr = '0.0.0.0'
>>    ProxyPort = '80'
>>    Agent = 'Mozilla/4.0 (compatible; ICS)'
>>    Accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
>> */*'    NoCache = False
>>    ContentTypePost = 'application/x-www-form-urlencoded'
>>    MultiThreaded = False
>>    RequestVer = '1.0'
>>    FollowRelocation = True
>>    LocationChangeMaxCount = 5
>>    BandwidthLimit = 10000
>>    BandwidthSampling = 1000
>>    Options = []
>>    SocksAuthentication = socksNoAuthentication
>>    Left = 64
>>    Top = 36
>>  end
>> end
>> 
>> 
>> Fastream Technologies wrote:
>>> Hello,
>>> 
>>> ----- Original Message -----
>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>> To: "ICS support mailing" <twsocket@elists.org>
>>> Sent: Thursday, June 08, 2006 7:48 PM
>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>> 
>>> 
>>>> Fastream Technologies wrote:
>>>>> Arno,
>>>>> 
>>>>> In the last code you sent, this problem STILL exists!
>>>> 
>>>> I'm afraid, the fix below is in the code since Monday.
>>> 
>>> Perhaps we need another -more comprehensive- fix. Francois, AFAIK
>>> you were able to reproduce the problem, right? Could you check with
>>> the latest code. Something must have gone bad because when I said
>>> it was fixed, it was fixed.
>>> 
>>>> 
>>>>> The other
>>>>> problem was because of wrong package lib included in the project.
>>>> 
>>>> What "other problem" do you mean (sounds very mysterious to me)?
>>> 
>>> I mean the half downloads problem. That was because two ics packages
>>> were linked. :o( Sorry for bothering you guys. Your suggestion that
>>> the package was not good worked for me to find out...
>>> 
>>> Best Regards,
>>> 
>>> SZ
>>> 
>>>> 
>>>>> Sorry for that.
>>>>> 
>>>>> Best Regards,
>>>>> 
>>>>> SZ
>>>>> 
>>>>> ----- Original Message -----
>>>>> From: "Francois PIETTE" <[EMAIL PROTECTED]>
>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>> Sent: Monday, June 05, 2006 2:35 PM
>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>> 
>>>>> 
>>>>>> Still one problem. Arno fixed it (He sent a private message to
>>>>>> me). Move the line
>>>>>>    FWndHandler := nil;                 // THIS ONE ADDED
>>>>>> from ThreadDetach to DeallocateHWnd so that the later looks like:
>>>>>> procedure TIcsWndControl.DeallocateHWnd;
>>>>>> begin
>>>>>>    if FHandle = 0 then
>>>>>>        Exit;              // Already done
>>>>>> 
>>>>>>    GWndHandlerPool.Lock;
>>>>>>    try
>>>>>>        FreeMsgHandlers;
>>>>>>        if Assigned(FWndHandler) and (FWndHandler.FMsgCnt <= 0)
>>>>>> then            GWndHandlerPool.FreeWndHandler(FWndHandler);
>>>>>>        FHandle     := 0;
>>>>>>        FWndHandler := nil;         // THIS ONE ADDED
>>>>>>    finally
>>>>>>        GWndHandlerPool.UnLock;
>>>>>>    end;
>>>>>> end;
>>>>>> 
>>>>>> Thank to Arno.
>>>>>> 
>>>>>> --
>>>>>> Contribute to the SSL Effort. Visit
>>>>>> http://www.overbyte.be/eng/ssl.html --
>>>>>> [EMAIL PROTECTED]
>>>>>> http://www.overbyte.be
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ----- Original Message -----
>>>>>> From: "Francois PIETTE" <[EMAIL PROTECTED]>
>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>> Sent: Monday, June 05, 2006 1:11 PM
>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>> 
>>>>>> 
>>>>>>> Problem fixed !
>>>>>>> 
>>>>>>> In OverbyteIcsHttpProt.pas, add:
>>>>>>> 
>>>>>>> {$IFDEF COMPILER2_UP}
>>>>>>> procedure THttpCli.ThreadAttach;
>>>>>>> begin
>>>>>>>    inherited ThreadAttach;
>>>>>>>    FCtrlSocket.ThreadAttach;
>>>>>>> end;
>>>>>>> 
>>>>>>> procedure THttpCli.ThreadDetach;
>>>>>>> begin
>>>>>>>    inherited ThreadDetach;
>>>>>>>    FCtrlSocket.ThreadDetach;
>>>>>>> end;
>>>>>>> {$ENDIF}
>>>>>>> 
>>>>>>> Don't forget to add the declarations in the public section.
>>>>>>> 
>>>>>>> In OverbyteIcsWndControl, add a line in ThreadDetach so that it
>>>>>>> looks like:
>>>>>>> procedure TIcsWndControl.ThreadDetach;
>>>>>>> begin
>>>>>>>    if GetCurrentThreadID <> FThreadID then
>>>>>>>        raise EIcsException.Create('Cannot detach from another
>>>>>>> thread');    Self.DeallocateHWnd;
>>>>>>>    FWndHandler := nil;                 // THIS ONE ADDED
>>>>>>> end;
>>>>>>> 
>>>>>>> 
>>>>>>> In OverbyteIcsWSocket.pas, delete the declaration of
>>>>>>> TCustomWSocket.FThreadID.
>>>>>>> 
>>>>>>> That's it.
>>>>>>> Should work. At least it work in my small test prog:
>>>>>>> Create a form, drop a TButton, a TMemo and a THttpCli. Add the
>>>>>>> following code:
>>>>>>> 
>>>>>>> unit OverbyteIcsSimpleThread1;
>>>>>>> 
>>>>>>> interface
>>>>>>> 
>>>>>>> uses
>>>>>>>  Windows, Messages, SysUtils, Variants, Classes, Graphics,
>>>>>>> Controls, Forms,
>>>>>>>  Dialogs, StdCtrls, OverbyteIcsWndControl, OverbyteIcsWSocket,
>>>>>>>  OverbyteIcsHttpProt;
>>>>>>> 
>>>>>>> type
>>>>>>>  TWorkerThread = class(TThread)
>>>>>>>  public
>>>>>>>      FHttpCli : THttpCli;
>>>>>>>      procedure HttpCliRequestDone(Sender : TObject; RqType:
>>>>>>> THttpRequest; ErrCode : Word);
>>>>>>>      procedure Execute; override;
>>>>>>>      procedure ShowDoc;
>>>>>>>  end;
>>>>>>> 
>>>>>>>  TForm1 = class(TForm)
>>>>>>>    HttpCli1: THttpCli;
>>>>>>>    DoButton: TButton;
>>>>>>>    Memo1: TMemo;
>>>>>>>    procedure DoButtonClick(Sender: TObject);
>>>>>>>  private
>>>>>>>    FWorkerThread : TWorkerThread;
>>>>>>>  end;
>>>>>>> 
>>>>>>> var
>>>>>>>  Form1: TForm1;
>>>>>>> 
>>>>>>> implementation
>>>>>>> 
>>>>>>> {$R *.dfm}
>>>>>>> 
>>>>>>> procedure TWorkerThread.Execute;
>>>>>>> begin
>>>>>>>    FHttpCli.ThreadAttach;
>>>>>>>    FHttpCli.MultiThreaded := TRUE;
>>>>>>>    FHttpCli.URL           := 'http://localhost';
>>>>>>>    FHttpCli.RcvdStream    := TMemoryStream.Create;
>>>>>>>    FHttpCli.OnRequestDone := HttpCliRequestDone;
>>>>>>>    FHttpCli.GetASync;
>>>>>>>    FHttpCli.MessageLoop;
>>>>>>>    FHttpCli.ThreadDetach;
>>>>>>>    FHttpCli.MultiThreaded := FALSE;
>>>>>>> end;
>>>>>>> 
>>>>>>> procedure TWorkerThread.HttpCliRequestDone(Sender : TObject;
>>>>>>> RqType: THttpRequest; ErrCode : Word);
>>>>>>> begin
>>>>>>>    FHttpCli.RcvdStream.Seek(0, 0);
>>>>>>>    Synchronize(ShowDoc);
>>>>>>>    FHttpCli.RcvdStream.Free;
>>>>>>>    FHttpCli.RcvdStream := nil;
>>>>>>>    PostMessage(FHttpCli.Handle, WM_QUIT, 0, 0);
>>>>>>> end;
>>>>>>> 
>>>>>>> procedure TWorkerThread.ShowDoc;
>>>>>>> begin
>>>>>>>    Form1.Memo1.Lines.LoadFromStream(FHttpCli.RcvdStream);
>>>>>>> end;
>>>>>>> 
>>>>>>> procedure TForm1.DoButtonClick(Sender: TObject);
>>>>>>> begin
>>>>>>>    HttpCli1.ThreadDetach;
>>>>>>>    FWorkerThread                 := TWorkerThread.Create(TRUE);
>>>>>>>    FWorkerThread.FreeOnTerminate := TRUE;
>>>>>>>    FWorkerThread.FHttpCli        := HttpCli1;
>>>>>>>    FWorkerThread.Resume;
>>>>>>> end;
>>>>>>> 
>>>>>>> end.
>>>>>>> --
>>>>>>> [EMAIL PROTECTED]
>>>>>>> http://www.overbyte.be
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> ----- Original Message -----
>>>>>>> From: "Francois PIETTE" <[EMAIL PROTECTED]>
>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>> Sent: Monday, June 05, 2006 12:25 PM
>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>> 
>>>>>>> 
>>>>>>>> Yes, I found the problem. More complex to solve than what I
>>>>>>>> thought first.
>>>>>>>> 
>>>>>>>> --
>>>>>>>> [EMAIL PROTECTED]
>>>>>>>> http://www.overbyte.be
>>>>>>>> 
>>>>>>>> ----- Original Message -----
>>>>>>>> From: "Fastream Technologies" <[EMAIL PROTECTED]>
>>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>>> Sent: Monday, June 05, 2006 11:37 AM
>>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Francois,
>>>>>>>>> 
>>>>>>>>> Have you been able to reproduce the problem there?
>>>>>>>>> 
>>>>>>>>> Regards,
>>>>>>>>> 
>>>>>>>>> SZ
>>>>>>>>> 
>>>>>>>>> ----- Original Message -----
>>>>>>>>> From: "Fastream Technologies" <[EMAIL PROTECTED]>
>>>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>>>> Sent: Sunday, June 04, 2006 6:24 PM
>>>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> AFAIU, instead of FWindowHandle being defined as window, we
>>>>>>>>>> now have the
>>>>>>>>>> entire hierarchy being derived from a Twndcontrol which pools
>>>>>>>>>> and shares
>>>>>>>>>> the
>>>>>>>>>> windows. But I am clueless in terms of this bug as well. I
>>>>>>>>>> sent a private
>>>>>>>>>> email to Francois asking for consultancy about this.
>>>>>>>>>> 
>>>>>>>>>> Thanks anyway,
>>>>>>>>>> 
>>>>>>>>>> SZ
>>>>>>>>>> 
>>>>>>>>>> ----- Original Message -----
>>>>>>>>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>>>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>>>>> Sent: Sunday, June 04, 2006 6:06 PM
>>>>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> Fastream Technologies wrote:
>>>>>>>>>>>> Nothing changes. This is my second answer to this question
>>>>>>>>>>>> as sometimes my email server gets swamped :(...
>>>>>>>>>>>> 
>>>>>>>>>>>> I still get the exception even though the package compiles
>>>>>>>>>>>> with no errors.
>>>>>>>>>>> 
>>>>>>>>>>> Looks like a bit more complicated. Francois probably knows
>>>>>>>>>>> better how to fix it, I still haven't fully got the logic of
>>>>>>>>>>> the new version, sorry.
>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Regards,
>>>>>>>>>>>> 
>>>>>>>>>>>> SZ
>>>>>>>>>>>> 
>>>>>>>>>>>> ----- Original Message -----
>>>>>>>>>>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>>>>>>>>>>> To: "ICS support mailing" <twsocket@elists.org>
>>>>>>>>>>>> Sent: Sunday, June 04, 2006 5:31 PM
>>>>>>>>>>>> Subject: Re: [twsocket] ICSv6 Thread Attach/Detach problem
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> Fastream Technologies wrote:
>>>>>>>>>>>>>> It is used here:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Yes I know, but what happens? As Francois already supposed
>>>>>>>>>>>>> it is in fact redefined and never assigned in
>>>>>>>>>>>>> TCustomWSocket.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> ---
>>>>>>>>>>>>> Arno Garrels [TeamICS]
>>>>>>>>>>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> --
>>>>>>>>>>>>> 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
>>>>>>>>>>> --
>>>>>>>>>>> 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
>>>>>>>>>> 
>>>>>>>>>> --
>>>>>>>>>> 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
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> 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 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> 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 
>>>>>>> 
>>>>>>> --
>>>>>>> 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
>>>>>> 
>>>>>> --
>>>>>> 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
>>>> --
>>>> 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
>> --
>> 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
-- 
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

Reply via email to